Im Folgenden wird ein geändertes Startabbild erstellt. Brennen Sie es auf eine CD oder legen Sie die ISO in eine VM ein, um sie zu testen. Sie benötigen cpio
und genisoimage
(das sind die Namen der Pakete und ausführbaren Dateien).
Das Folgende ist in Form eines Makefiles, kann aber interaktiv eingegeben werden. ${IN_ISO}
bezieht sich auf das ursprüngliche ISO-Image (ich habe die -alternative
Version verwendet, und ich würde vorschlagen, dass Sie dasselbe tun), ${OUT_ISO}
auf den gewünschten ISO-Namen.
# 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
Sie benötigen einige zusätzliche Dateien:
isolinux.cfg
Konfiguriert den Bootloader. Sie möchten, dass es einfach startet und den Installationsprozess automatisch durchläuft. Es sollte so aussehen:
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
Das sind alle Vorbereitungen, die wir benötigen, um die Installation tatsächlich zu konfigurieren. Laden Sie das preseed-Beispiel herunter und nennen Sie es preseed.cfg. Gehen Sie es durch und bearbeiten Sie, was Sie wollen. Wichtige Optionen sind:
# 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.
Aber ich würde vorschlagen, dass Sie das obige Beispiel nicht verwenden, sondern das Beispiel von Ubuntu herunterladen und es mit Ihren Anforderungen konfigurieren. late_command
Sie können alles von der Shell aus tun, einschließlich des Herunterladens und Ausführens eines Skripts, das Ihre benutzerdefinierte Software installiert und konfiguriert. Verwenden Sie dies beispielsweise als late_command
:
d-i preseed/late_command string in-target sh -c 'wget https://example.com/my/install.sh && sh install.sh'
Alternativ können Sie install.sh
die obige initrd platzieren und direkt ausführen. Der Inhalt könnte folgendermaßen aussehen:
#!/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
Es hängt wirklich davon ab, wie Ihre proprietäre Treiberinstallationsroutine funktioniert.