Debian herinstalleren over SSH

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>”