ต่อไปนี้สร้างอิมเมจสำหรับบูตที่ปรับเปลี่ยนแล้ว เขียนลงในซีดีหรือใส่ ISO ลงใน VM เพื่อทดสอบ คุณจะต้องcpio
และgenisoimage
(นั่นคือชื่อของแพ็คเกจและไฟล์ปฏิบัติการ)
ต่อไปนี้อยู่ในรูปแบบของ Makefile แต่สามารถป้อนแบบโต้ตอบได้ ${IN_ISO}
อ้างถึงอิมเมจ ISO ดั้งเดิม (ฉันใช้-alternative
เวอร์ชันและฉันขอแนะนำให้คุณทำเช่นเดียวกัน) ${OUT_ISO}
กับชื่อ ISO ที่ต้องการ
# 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
คุณต้องการไฟล์เพิ่มเติม:
isolinux.cfg
กำหนดค่าบูตโหลดเดอร์ คุณต้องการให้มันเพิ่งบู๊ตและผ่านกระบวนการติดตั้งโดยอัตโนมัติ ควรมีลักษณะเช่นนี้:
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
นั่นคือการเตรียมการทั้งหมดที่เราต้องการก่อนกำหนดค่าการติดตั้งจริง ดาวน์โหลดตัวอย่าง preseedและตั้งชื่อ preseed.cfg อ่านและแก้ไขสิ่งที่คุณต้องการ ตัวเลือกที่สำคัญคือ:
# 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.
แต่ฉันขอแนะนำให้คุณอย่าใช้ตัวอย่างข้างต้น แต่ดาวน์โหลดตัวอย่างของ Ubuntu และกำหนดค่าตามความต้องการของคุณด้วยlate_command
คุณสามารถทำอะไรก็ได้จาก shell รวมถึงการดาวน์โหลดและการเรียกใช้สคริปต์ที่ติดตั้งและกำหนดค่าซอฟต์แวร์ที่คุณกำหนดเอง ตัวอย่างเช่นใช้สิ่งนี้เป็นlate_command
:
d-i preseed/late_command string in-target sh -c 'wget https://example.com/my/install.sh && sh install.sh'
หรือคุณสามารถวางinstall.sh
ใน initrd ด้านบนและดำเนินการโดยตรง เนื้อหาอาจมีลักษณะเช่นนี้:
#!/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
มันขึ้นอยู่กับว่ารูทีนการติดตั้งไดรเวอร์ของคุณทำงานอย่างไร