Tôi đã trả lời "Làm cách nào để tùy chỉnh Ubuntu CD trực tiếp?" với cách tạo đĩa CD trực tiếp từ các bản cài đặt hiện tại. Điều này có nghĩa là bạn sẽ không cần phải tải xuống tất cả các gói một lần nữa. Hướng dẫn này có thể vẻ dài và khó, nhưng chủ yếu là "làm theo" và "sao chép và dán". Đây là, sao chép ra và chỉnh sửa một chút:
Một cách tốt sẽ là tạo một đĩa CD trực tiếp từ bản cài đặt hiện tại. Điều này có thể được thực hiện bằng máy ảo (chỉ không cài đặt bất kỳ công cụ VM nào bên trong HĐH khách)
Vì vậy, trước tiên chúng tôi cần cài đặt mới (nếu bạn không thể cài đặt thật, hãy thử sử dụng máy ảo) chỉ với những thứ bạn cần (trong trường hợp của bạn là thunderbird, samba và ssh). Sau đó, chúng tôi điều chỉnh hệ thống và ghi lại vị trí của các chỉnh sửa (ví dụ: bạn thay đổi nền màn hình của mình, các cài đặt nằm trong ~ / .gconf hoặc bạn thêm các phím tắt firefox, chúng được đặt trong ~ / Desktop). Điều này là cần thiết cho bước 4.
Thiết lập một số biến:
export WORK=~/temp
export CD=~/livecd
export FORMAT=squashfs
export FS_DIR=casper
Thay thế ~ / temp bằng một đường dẫn đến một thư mục tạm thời mà chúng ta sẽ làm việc. Thay thế ~ / livecd bằng một đường dẫn đến cây CD.
Tạo cấu trúc thư mục. sudo mkdir -p ${CD}/{${FS_DIR},boot/grub} ${WORK}/rootfs
Bây giờ chúng ta sẽ cần cài đặt một số gói:
sudo apt-get install grub2 xorriso squashfs-tools
Bây giờ chúng tôi sẽ sao chép cài đặt hiện tại, sửa đổi các cờ loại trừ để phù hợp với nhu cầu của bạn:
sudo rsync -av --one-file-system --exclude=/proc/* --exclude=/dev/* \
--exclude=/sys/* --exclude=/tmp/* --exclude=/home/* --exclude=/lost+found \
--exclude=/var/tmp/* --exclude=/boot/grub/* --exclude=/root/* \
--exclude=/var/mail/* --exclude=/var/spool/* --exclude=${WORK}/rootfs \
--exclude=/etc/fstab --exclude=/etc/mtab --exclude=/etc/hosts \
--exclude=/etc/timezone --exclude=/etc/shadow* --exclude=/etc/gshadow* \
--exclude=/etc/X11/xorg.conf* --exclude=/etc/gdm/custom.conf \
/ ${WORK}/rootfs
Nếu bạn có một phân vùng khởi động riêng, hãy thực hiện điều này: sudo cp -av /boot/* ${WORK}/rootfs/boot
Nếu bạn muốn sao chép các cấu hình và tệp người dùng của mình, hãy sửa đổi danh sách này nếu cần: CONFIG = '. Config .gconf Desktop một số cách khác
cd ~ && for i in $CONFIG
do
sudo cp -rpv --parents $i ${WORK}/rootfs/etc/skel
done
Bây giờ chúng tôi chroot vào hệ thống mới và sửa đổi nó.
sudo mount --bind /dev/ ${WORK}/rootfs/dev
sudo mount -t proc proc ${WORK}/rootfs/proc
sudo mount -t sysfs sysfs ${WORK}/rootfs/sys
sudo mount -t devpts devpts ${WORK}/rootfs/dev/pts
sudo chroot ${WORK}/rootfs /bin/bash
Các lệnh tiếp theo được thực hiện trong chroot:
LANG=
apt-get update
apt-get install casper
Casper chứa các kịch bản trực tiếp. Bây giờ trình cài đặt (phiên bản gnome) apt-get install ubiquity-frontend-gtk Hoặc nếu bạn muốn KDE:
apt-get install ubiquity ubiquity-frontend-kde
Cập nhật mô-đun.dep và initramfs:
depmod -a $(uname -r)
update-initramfs -u -k $(uname -r)
Xóa người dùng không thuộc hệ thống - đừng lo lắng, chúng tôi đã sao chép cài đặt và dữ liệu vào "bộ xương" của người dùng. Điều đó có nghĩa là tất cả người dùng mới sẽ có chúng.
for i in `cat /etc/passwd | awk -F":" '{print $1}'`
do
uid=`cat /etc/passwd | grep "^${i}:" | awk -F":" '{print $3}'`
[ "$uid" -gt "999" -a "$uid" -ne "65534" ] && userdel --force ${i} 2>/dev/null
done
Dọn dẹp:
apt-get clean
find /var/log -regex '.*?[0-9].*?' -exec rm -v {} \;
find /var/log -type f | while read file
do
cat /dev/null | tee $file
done
rm /etc/resolv.conf /etc/hostname
Thoát khỏi chroot. exit
Bây giờ, chúng tôi sao chép kernel:
export kversion=`cd ${WORK}/rootfs/boot && ls -1 vmlinuz-* | tail -1 | sed 's@vmlinuz-@@'`
sudo cp -vp ${WORK}/rootfs/boot/vmlinuz-${kversion} ${CD}/boot/vmlinuz
sudo cp -vp ${WORK}/rootfs/boot/initrd.img-${kversion} ${CD}/boot/initrd.img
sudo cp -vp ${WORK}/rootfs/boot/memtest86+.bin ${CD}/boot
Vì vậy, trình cài đặt không cài đặt những thứ như casper:
sudo chroot ${WORK}/rootfs dpkg-query -W --showformat='${Package} ${Version}\n' | sudo tee ${CD}/${FS_DIR}/filesystem.manifest
sudo cp -v ${CD}/${FS_DIR}/filesystem.manifest{,-desktop}
REMOVE='ubiquity casper user-setup os-prober libdebian-installer4'
for i in $REMOVE
do
sudo sed -i "/${i}/d" ${CD}/${FS_DIR}/filesystem.manifest-desktop
done
Bỏ kết nối những gì chúng tôi đã gắn kết:
sudo umount ${WORK}/rootfs/proc
sudo umount ${WORK}/rootfs/sys
sudo umount ${WORK}/rootfs/dev/pts
sudo umount ${WORK}/rootfs/dev
Chuyển đổi sang squashfs:
sudo mksquashfs ${WORK}/rootfs ${CD}/${FS_DIR}/filesystem.${FORMAT}
Tạo filesystem.size:
echo -n $(sudo du -s --block-size=1 ${WORK}/rootfs | tail -1 | awk '{print $1}') | sudo tee ${CD}/casper/filesystem.size
Và md5: find ${CD} -type f -print0 | xargs -0 md5sum | sed "s@${CD}@.@" | grep -v md5sum.txt |sudo tee ${CD}/md5sum.txt
Bây giờ grub.cfg:
sudo nano ${CD}/boot/grub/grub.cfg
(thay thế nano bằng trình soạn thảo văn bản fav của bạn, điều đó không thành vấn đề) Dán cái này và lưu lại:
set default="0"
set timeout=10
menuentry "Ubuntu GUI" {
linux /boot/vmlinuz boot=casper quiet splash
initrd /boot/initrd.img
}
menuentry "Ubuntu in safe mode" {
linux /boot/vmlinuz boot=casper xforcevesa quiet splash
initrd /boot/initrd.img
}
menuentry "Ubuntu CLI" {
linux /boot/vmlinuz boot=casper textonly quiet splash
initrd /boot/initrd.img
}
menuentry "Ubuntu GUI persistent mode" {
linux /boot/vmlinuz boot=casper boot=casper persistent quiet splash
initrd /boot/initrd.img
}
menuentry "Ubuntu GUI from RAM" {
linux /boot/vmlinuz boot=casper nopersistent toram quiet splash
initrd /boot/initrd.img
}
menuentry "Check Disk for Defects" {
linux /boot/vmlinuz boot=casper integrity-check quiet splash
initrd /boot/initrd.img
}
menuentry "Memory Test" {
linux16 /boot/memtest86+.bin
}
menuentry "Boot from the first hard disk" {
set root=(hd0)
chainloader +1
}
Tạo CD / DVD!
sudo grub-mkrescue -o ~/live-cd.iso ${CD}
Kiểm tra nó bằng máy ảo!