Sau đây tạo ra một hình ảnh khởi động sửa đổi. Ghi nó vào đĩa CD hoặc chèn ISO vào máy ảo để kiểm tra. Bạn sẽ cần cpio
và genisoimage
(đó là tên của các gói và tệp thực thi).
Dưới đây là dưới dạng Makefile, nhưng có thể được nhập tương tác. ${IN_ISO}
đề cập đến hình ảnh ISO gốc (tôi đã sử dụng -alternative
phiên bản và tôi khuyên bạn nên làm như vậy), ${OUT_ISO}
với tên ISO mong muốn.
# Extract the ISO image to mount/ and copy it to cdroot/
cdroot:
mkdir -p mount
sudo mount -o loop ${IN_ISO} mount
mkdir cdroot
cd cdroot && tar cf - ../mount --transform 's,^mount/,,' | tar xf -
sudo umount mount && rm -r mount
chmod -R a+rw cdroot
# Copy new files to the disk. Content of those files is posted below
prepare: cdroot
cp isolinux.cfg cdroot/isolinux/isolinux.cfg
test -e ./initrd.orig.gz || cp cdroot/install/initrd.gz ./initrd.orig.gz
mkdir -p initrd
cd initrd && gunzip <../initrd.orig.gz | sudo cpio -i && cd ..
cp preseed.cfg initrd/preseed.cfg
cd initrd && find . | cpio -o --format=newc | gzip -9 > ../cdroot/install/initrd.gz && cd ..
sudo rm -rf initrd
# Create the ISO image. Make sure to use extensions for lower-case filenames
iso: cdroot prepare
genisoimage -o ${OUT_ISO} \
-force-rr -J \
-b isolinux/isolinux.bin -c isolinux/boot.cat \
-no-emul-boot -boot-load-size 4 -boot-info-table \
cdroot
Bạn cần một số tệp bổ sung:
isolinux.cfg
cấu hình bộ tải khởi động. Bạn muốn nó chỉ khởi động và tự động trải qua quá trình cài đặt. Nó sẽ giống như thế này:
default install
label install
menu label ^Install my custom Ubuntu
kernel /install/vmlinuz
append auto initrd=/install/initrd.gz --
# Leave 2 seconds to abort or debug
prompt 1
timeout 20
Đó là tất cả các chuẩn bị chúng tôi cần trước khi thực sự cấu hình cài đặt. Tải về ví dụ preseed và đặt tên là preseed.cfg. Đi qua nó và chỉnh sửa bất cứ điều gì bạn muốn. Các tùy chọn quan trọng là:
# Locale
d-i debian-installer/locale string en_US
d-i time/zone string US/Eastern
# Partitioning. The following settings WILL OVERWRITE ANYTHING
# Don't insert the CD into your boss' computer ...
d-i partman-auto/method string regular
d-i partman/confirm_write_new_label boolean true
d-i partman/choose_partition select finish
d-i partman/confirm boolean true
d-i partman/confirm_nooverwrite boolean true
# To create a normal user account.
d-i passwd/user-fullname string Ubuntu User
d-i passwd/username string ubuntu
d-i passwd/user-password password insecure
d-i passwd/user-password-again password insecure
d-i user-setup/allow-password-weak boolean true
# Package selection. Don't include ubuntu-desktop to significantly reduce the content
tasksel tasksel/first multiselect standard
#d-i preseed/early_command string driver installation commands (stuff needed to boot)
#d-i preseed/late_command string driver installation commands, custom software, etc.
Nhưng tôi khuyên bạn không nên sử dụng ví dụ trên làm ví dụ, nhưng tải xuống ví dụ của Ubuntu và định cấu hình nó theo nhu cầu của bạn late_command
, bạn có thể làm bất cứ điều gì từ shell, bao gồm tải xuống và thực thi tập lệnh cài đặt và định cấu hình phần mềm tùy chỉnh của bạn. Ví dụ: sử dụng như late_command
:
d-i preseed/late_command string in-target sh -c 'wget https://example.com/my/install.sh && sh install.sh'
Ngoài ra, bạn có thể đặt install.sh
trong initrd ở trên và thực hiện nó trực tiếp. Nội dung của nó có thể trông như thế này:
#!/bin/sh
aptitude install -y x11-apps any-package-you-want-installed
wget http://proprietary.com/drivers/for/ubuntu.tar.gz -O- | tar xf - && sh drivers/instal.sh
Nó thực sự phụ thuộc vào cách thức hoạt động cài đặt trình điều khiển độc quyền của bạn hoạt động.