Debian Preseed - Install automatique par fichier de réponse

Voir live-usb

Liens :

https://wiki.debian.org/DebianInstaller/Preseed/EditIso

https://wiki.deimos.fr/Automatiser_une_installation_de_Debian?PageSpeed=noscript

https://wiki.debian.org/DebianInstaller/Preseed

https://gist.github.com/josch/1357635

http://people.canonical.com/~chiluk/preseed.cfg

https://github.com/mojotech/mojo-images/blob/master/config/preseed.cfg

https://gist.github.com/sturadnidge/5841112

http://askubuntu.com/questions/122505/how-do-i-create-a-completely-unattended-install-of-ubuntu

http://silicone.homelinux.org/2013/06/19/building-a-custom-debian-cd/

https://gist.github.com/aktau/5510437

http://yeuxdelibad.net/Logiciel-libre/Debian/Creer_sa_propre_distribution_avec_live-build.html

Plop

https://guillaume.vaillant.me/?p=372

http://searchitchannel.techtarget.com/feature/Performing-an-automated-Ubuntu-install-using-preseeding

http://www.50ply.com/blog/2012/07/16/automating-debian-installs-with-preseed-and-puppet/

https://github.com/cobbler/cobbler/wiki/Using-template-scripts-for-Debian-and-Ubuntu-seeds

https://fak3r.com/2011/08/18/howto-automate-debian-installs-with-preseed/

VPN

https://www.offensive-security.com/kali-linux/kali-linux-iso-of-doom/

CD personnalisé:

https://help.ubuntu.com/community/InstallCDCustomization#Modify_pool_structure_to_include_more_packages

apt-get install debconf-utils debconf-get-selections --installer
mount -o loop /home/jean/iso/debian-8.2.0-amd64-CD-1.iso /mnt/iso/ rsync -a -H /mnt/iso/ /home/jean/dev/presseed/iso umount /mnt/iso chown jean: -R /home/jean/dev/presseed/iso chmod -R u+rwX /home/jean/dev/presseed/iso #fakeroot rm irmod/ -rf mkdir irmod cd irmod gzip -d < ../iso/install.amd/initrd.gz |cpio --extract --verbose --make-directories --no-absolute-filenames /bin/cp -f ../preseed.cfg preseed.cfg find . | cpio -H newc --create --verbose | gzip -9 > ../iso/install.amd/initrd.gz #exit cd .. cd iso md5sum $(find . -not -name "md5sum.txt" -follow -type f) > md5sum.txt cd .. genisoimage -o test.iso -r -J -no-emul-boot -boot-load-size 4 -boot-info-table -b isolinux/isolinux.bin -c isolinux/boot.cat ./iso # Pour rendre "hybrid" l'iso, donc compatible USB en plus de CD/DVD # Paquet syslinux-utils ou alors paquet syslinux isohybrid test.iso

Pour le debug voir /var/log/installer/syslog

Note FRONTEND

DEBIAN_FRONTEND=noninteractive DEBCONF_NONINTERACTIVE_SEEN=true DEBIAN_FRONTEND=text DEBIAN_FRONTEND=newt DEBIAN_FRONTEND=gtk FRONTEND_BACKGROUND=dark

Validation

Pour vérifier la syntaxe

sudo debconf-set-selections -c /path/to/preseed-debconf-file.txt

Preseed

# Preseed file for Debian
# Source http://wiki.deimos.fr/Automatiser_une_installation_de_Debian
### Contents of the preconfiguration file (for wheezy)
d-i debian-installer/language string en
d-i debian-installer/country string FR
d-i debian-installer/locale string en_US.UTF-8
d-i localechooser/supported-locales multiselect en_US.UTF-8, fr_FR.UTF-8
### Keyboard
d-i keyboard-configuration/xkb-keymap select fr
d-i keyboard-configuration/xkb-keymap select fr(latin9)
d-i console-keymaps-at/keymap select fr
# keymap is an alias for keyboard-configuration/xkb-keymap
#d-i keymap select fr(latin9)
### Network configuration
d-i netcfg/choose_interface select auto
d-i netcfg/get_hostname string unassigned-hostname
d-i netcfg/get_domain string unassigned-domain
d-i netcfg/wireless_wep string
### Other
d-i hw-detect/load_firmware boolean false
### Apt mirror
#d-i mirror/protocol string http
#d-i mirror/country string manual
#d-i mirror/http/hostname string ftp.fr.debian.org
#d-i mirror/http/directory string /debian
#d-i mirror/http/proxy string
#d-i mirror/suite string wheezy
d-i mirror/protocol string ftp
d-i mirror/ftp/hostname string ftp.fr.debian.org
d-i mirror/ftp/directory string /debian
d-i mirror/ftp/proxy string
### Account setup
d-i passwd/root-login boolean false
d-i passwd/make-user boolean true
d-i passwd/root-password password toor
d-i passwd/root-password-again password toor
d-i passwd/user-fullname string Defab
d-i passwd/username string exploit
d-i passwd/user-password password toor
d-i passwd/user-password-again password toor
d-i passwd/user-uid string 1010
### Clock and time zone setup
d-i clock-setup/utc boolean true
d-i time/zone string Europe/Paris
d-i clock-setup/ntp boolean true
### Partitioning
d-i partman-auto/choose_recipe select home
d-i partman-auto/method string regular
#d-i partman-lvm/device_remove_lvm boolean true
#d-i partman-md/device_remove_md boolean true
# MARK
d-i partman-auto/disk string /dev/sda
# MARK
d-i partman-partitioning/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
d-i partman-md/confirm boolean true
d-i partman/mount_style select uuid
### Base system installation
d-i base-installer/install-recommends boolean false
### Apt setup
apt-cdrom-setup apt-setup/cdrom/set-first boolean false
# apt-cdrom-setup apt-setup/cdrom/set-next boolean false
apt-cdrom-setup apt-setup/cdrom/set-next boolean false
d-i apt-setup/contrib boolean true
d-i apt-setup/use_mirror boolean true
d-i apt-setup/services-select multiselect security, volatile
d-i apt-setup/security_host string security.debian.org
d-i apt-setup/volatile_host string volatile.debian.org
### Package selection
tasksel tasksel/first multiselect standard
d-i pkgsel/upgrade select safe-upgrade
popularity-contest popularity-contest/participate boolean false
d-i pkgsel/include string openssh-server build-essential vim curl wget sudo lm-sensors smartmontools openvpn
### Grub
d-i grub-installer/only_debian boolean true
d-i grub-installer/with_other_os boolean false
# Due notably to potential USB sticks, the location of the MBR can not be
# determined safely in general, so this needs to be specified:
#d-i grub-installer/bootdev string /dev/sda
# To install to the first device (assuming it is not a USB stick):
d-i grub-installer/bootdev string default
# Finish install
d-i finish-install/reboot_in_progress note
d-i cdrom-detect/eject boolean true
# Postinstall
d-i preseed/late_command string \
in-target mkdir /root/.ssh ; \
in-target mkdir /root/preseed ; \
in-target /bin/sh -c "echo '192.168.15.6 pkiweb.lan' >> /etc/hosts" ; \
cp /cdrom/preseed/authorized_keys /target/root/.ssh/ ; \
in-target chown -R root:root /root/ ; \
in-target chmod -R go-rwx /root/.ssh/authorized_keys ; \
in-target sed -i 's/PermitRootLogin yes/PermitRootLogin without-password/g' /etc/ssh/sshd_config ; \
in-target /bin/sh -c "echo 'PasswordAuthentication no' >> /etc/ssh/sshd_config'" ; \
in-target apt-get clean ; \
cp /cdrom/preseed/* /target/root/preseed ; \
in-target chmod +x /root/preseed/firstboot.sh ; \
in-target sed -i.bak "s%^exit 0%/root/preseed/firstboot.sh\x0aexit 0%" /etc/rc.local ;

Pb

Pb

/bin/preseed_command: return: line 23: Illegal number

Erreur.

Cette erreur survient à cause du retour ligne '\n'.

SolutionDans le cas présent, j'ai remplacé \n par \x0a

Exemple :

d-i preseed/late_command string \
in-target sed -i.bak "s%^exit 0%/root/preseed/firstboot.sh\nexit 0%" /etc/rc.local ;

d-i preseed/late_command string \
in-target sed -i.bak "s%^exit 0%/root/preseed/firstboot.sh\x0aexit 0%" /etc/rc.local ;