Ce qui suit crée une image de démarrage modifiée. Gravez-le sur un CD ou insérez l'ISO dans une machine virtuelle pour le tester. Vous aurez besoin de cpio
et genisoimage
(c'est le nom des packages et des exécutables).
Ce qui suit se présente sous la forme d'un Makefile, mais peut être saisi de manière interactive. ${IN_ISO}
fait référence à l'image ISO d'origine (j'ai utilisé la -alternative
version, et je vous suggère de faire de même), ${OUT_ISO}
au nom ISO souhaité.
# 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
Vous avez besoin de fichiers supplémentaires:
isolinux.cfg
configure le chargeur de démarrage. Vous voulez qu'il démarre simplement et passe automatiquement par le processus d'installation. Ça devrait ressembler à ça:
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
C'est tout ce dont nous avons besoin avant de configurer l'installation. Téléchargez l'exemple preseed et nommez-le preseed.cfg. Parcourez-le et modifiez ce que vous voulez. Les options importantes sont:
# 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.
Mais je vous suggère de ne pas utiliser l'exemple ci-dessus, mais de télécharger l'exemple d'Ubuntu et de le configurer selon vos besoins late_command
, vous pouvez faire n'importe quoi à partir du shell, y compris télécharger et exécuter un script qui installe et configure votre logiciel personnalisé. Par exemple, utilisez ceci comme late_command
:
d-i preseed/late_command string in-target sh -c 'wget https://example.com/my/install.sh && sh install.sh'
Alternativement, vous pouvez placer install.sh
dans l'initrd ci-dessus et l'exécuter directement. Son contenu pourrait ressembler à ceci:
#!/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
Cela dépend vraiment du fonctionnement de votre routine d'installation de pilote propriétaire.