Berikut ini membuat image boot yang dimodifikasi. Bakar ke CD, atau masukkan ISO ke dalam VM untuk mengujinya. Kamu akan membutuhkancpio
dan genisoimage
(itulah nama paket dan executable).
Berikut ini dalam bentuk Makefile, tetapi dapat dimasukkan secara interaktif. ${IN_ISO}
mengacu pada gambar ISO asli (saya menggunakan -alternative
versi, dan saya sarankan Anda melakukan hal yang sama),${OUT_ISO}
ke nama ISO yang diinginkan.
# 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
Anda memerlukan beberapa file tambahan:
isolinux.cfg
mengkonfigurasi boot loader. Anda ingin hanya boot, dan secara otomatis melalui proses instalasi. Seharusnya terlihat seperti ini:
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
Itu semua persiapan yang kita butuhkan sebelum benar-benar mengkonfigurasi instalasi. Unduh contoh preseed dan beri nama preseed.cfg. Telusuri dan edit apa pun yang Anda inginkan. Opsi penting adalah:
# 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.
Tetapi saya sarankan Anda tidak menggunakan contoh di atas, tetapi unduh contoh Ubuntu dan konfigurasikan dengan kebutuhan late_command
Anda, Anda dapat melakukan apa saja dari shell, termasuk mengunduh dan menjalankan skrip yang menginstal dan mengkonfigurasi perangkat lunak khusus Anda. Misalnya, gunakan ini sebagai late_command
:
d-i preseed/late_command string in-target sh -c 'wget https://example.com/my/install.sh && sh install.sh'
Atau, Anda dapat menempatkan install.sh
initrd di atas dan menjalankannya secara langsung. Kontennya bisa seperti ini:
#!/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
Ini benar-benar tergantung pada cara kerja rutin instalasi driver milik Anda.