Ik wou onlangs mijn nuc herinstalleren, maar omdat er geen scherm is waar mijn nuc staat (hij draait momenteel als headless server), besloot ik om te experimenteren met de Debian installer over SSH. Tijdens het installeren moest ik wel even mijn Nuc gaan halen en aan een scherm hangen (omdat ik een typo gemaakt had), maar ik ben er wel in geslaagd om Debian volledig over SSH te installeren. In deze post ga ik over het proces dat ik gebruikt heb om dit te doen.
De installer voorbereiden
Om de installer voor te bereiden, kan je het volgende uitvoeren op een debian machine
sudo apt install dpkg-dev -y sudo apt-get source debian-installer -y sudo apt-get build-dep debian-installer -y sudo apt-get install fakeroot -y cd debian-installer-20230607+deb12u9
Vervolgens moet je “build/pkg-lists/netboot/amd64.cfg” wijzigen en het volgende toevoegen bovenaan in het bestand:
#include "network-console"
Vervolgens kunnen we een tijdelijk bestand maken voor de preseed configuratie in de /tmp map (bvb /tmp/preseed.cfg) met de volgende inhoud:
d-i debian-installer/locale string nl_BE d-i keyboard-configuration/xkb-keymap select be d-i debconf/priority select critical d-i auto-install/enabled boolean true d-i netcfg/choose_interface select eth0 d-i netcfg/disable_dhcp boolean true d-i netcfg/get_nameservers string 172.16.0.1 d-i netcfg/get_ipaddress string 172.16.0.200 d-i netcfg/get_netmask string 255.255.255.0 d-i netcfg/get_gateway string 172.16.0.1 d-i netcfg/confirm_static boolean true d-i netcfg/get_hostname string debian d-i netcfg/get_domain string myhome.none tasksel tasksel/first multiselect standard ssh-server d-i network-console/password password mypassword d-i network-console/password-again password mypassword
Vervang de netwerkconfiguratie, hostname/domein en het wachtwoord zoals nodig.
Vervolgens moeten we “build/config/local” bewerken (of aanmaken). Je kan de bookworm codename veranderen naar de versie van de release die je gebruikt op het moment dat je deze image maakt.
PRESEED=/tmp/preseed.cfg USE_UDEBS_FROM=bookworm
Vervolgens moeten we het volgende uitvoeren vanuit de “build” map:
sudo fakeroot make rebuild_netboot
Daarna moeten we de kernel en initrd images uit “build/dest/netboot/debian-installer/amd64” overzetten naar de /boot map op ons systeem. Ik heb ze hernoemd zodat ik ze eenvoudiger kon toevoegen aan grub:
sudo cp build/dest/netboot/debian-installer/amd64/linux /boot/debian-installer sudo cp build/dest/netboot/debian-installer/amd64/initrd.gz /boot/debian-installer-rd.gz
Vervolgens bewerken we “/etc/grub.d/40_custom” en voegen we er het volgende aan toe:
menuentry "debian-installer" { linux /boot/debian-installer initrd /boot/debian-installer-rd.gz }
Vervolgens moeten we dit als default grub entry instellen, zodat de installer opstart bij een reboot. Bewerk /etc/default/grub en zet GRUB_DEFAULT naar “debian-installer”
GRUB_DEFAULT="debian-installer"
Vervolgens moeten we grub updaten met
sudo update-grub
Als we nu herstarten, zouden we de installer moeten kunnen openen in een SSH sessie met “ssh installer@<ip>”