Desinfec’t vom Linux-Server booten

Seite 2: Server vorbereiten

Inhaltsverzeichnis

Die Anforderungen, die Desinfec’t an einen Start aus dem Netzwerk stellt, fallen moderat aus. Sie entsprechen denen eines Ubuntu-Live-Systems. Außer den beschriebenen obligatorischen Diensten erwartet es zusätzlich einen NFS-Server, der das komprimierte Dateisystem im Netz bereitstellt. Lediglich der Systemstart, also das Laden der zum Booten nötigen Dateien, des Kernels und der Init-RAM-Disk läuft via TFTP. Dann übernimmt NFS.

Um die nötigen Dateien auf Ihrem Server bereitzustellen, legen Sie die Desinfec’t-DVD in das System ein, mounten Sie diese (die Hinweise gehen davon aus, dass Sie das unter /media/cdrom tun) und mounten die Datei desinfect-2015 aus dem Verzeichnis /software als Loop-Device und kopieren Sie die Dateien in das im ersten Schritt neu angelegte Verzeichnis /srv/tftp/ct:

mkdir -p /srv/tftp/ct/desinfect
cd /srv/tftp/ct
mount -o loop /media/cdrom/software/desinfect-2015.iso /mnt
cp -r /mnt/* desinfect/
umount /mnt

Leider enthält die Init-RAM-Disk auf der Desinfec’t-DVD einige Schönheitsfehler, die erst beim Netzwerk-Boot zu Tage treten. Wir stellen deshalb eine aktualisierte initrd.lz-Datei bereit, um damit die kopierten Dateien von der DVD wie folgt zu aktualisieren:

cd /srv/tftp/ct/desinfect/casper
rm -f initrd.lz
wget http://www.heise.de/ct/projekte/desinfect/des15/initrd.lz

Im nächsten Schritt erstellen Sie ein weiteres Verzeichnis

mkdir /srv/tftp/ct/pxelinux.cfg

und legen darin die Datei default wie folgt an:

DEFAULT desinfect2015
LABEL desinfect2015
 MENU LABEL Desinfec't
 kernel /desinfect/casper/vmlinuz
 APPEND root=/dev/nfs boot=casper initrd=/desinfect/casper/initrd.lz file=/desinfect/preseed/ubuntu.seed netboot=nfs nfsroot=192.168.1.2:/srv/tftpboot/desinfect quiet splash memtest=4 debian-installer/language=de console-setup/layoutcode?=de --

Sie weist PXE den Weg zu Kernel und Init-RAM-Disk und gibt einige Optionen für den Systemstart mit. Wichtig dabei ist, dass die Adresse des NFS-Servers passt. Die Beispiele gehen davon aus, dass hinter der Adresse 192.168.1.1 der Router und DNS-Server stecken, und hinter 192.168.1.2 der Boot-Server, den Sie einrichten. Weitere Einträge wie

LABEL easy
 MENU LABEL Desinfec't 2015 (schneller, vereinfachter Easy-Scan)
 kernel /desinfect/casper/vmlinuz
 APPEND root=/dev/nfs boot=casper initrd=/desinfect/casper/initrd.lz file=/desinfect/preseed/ubuntu.seed netboot=nfs nfsroot=192.168.1.2:/srv/tftpboot/desinfect quiet splash memtest=4 easymode debian-installer/language=de console-setup/layoutcode?=de --

LABEL failsafe
 MENU LABEL Desinfec't 2015 (Failsafe)
 kernel /desinfect/casper/vmlinuz
 APPEND root=/dev/nfs boot=casper initrd=/desinfect/casper/initrd.lz file=/desinfect/preseed/ubuntu.seed netboot=nfs nfsroot=192.168.1.2:/srv/tftpboot/desinfect memtest=4 nomodeset debian-installer/language=de console-setup/layoutcode?=de --

bieten den Easy-Scan und den Failsafe-Modus an. Fehlt noch der PXE-Loader selbst. In einem Debian-System können Sie den per:

apt-get install syslinux-common

auf die lokale Platte holen. Da die Datei pxelinux.0 in /usr/lib/syslinux landet, müssen Sie sie für die Remote-Boot-Mechanismen zugänglich machen. Ein symbolischer Link empfiehlt sich dafür, weil Ihr System so von eventuellen Updates an der Datei profitiert:

cd /srv/tftp/ct/
ln -s /usr/lib/syslinux/pxelinux.0 pxelinux.0

Der NFS-Server ist auf einem Debian-System mit wenigen Handgriffen installiert:

apt-get install nfs-kernel-server 

zur Konfiguration tragen Sie in die Datei /etc/exports die Zeile

/srv/tftp 192.168.1.0/24(ro,no_subtree_check)

ein. Die IP-Adresse des Netzwerks müssen Sie gegebenenfalls anpassen. Nach einem Neustart mit /etc/init.d/nfs-kernel-server restart liefert der Server die Image-Datei mit Desinfec’t auf Anfrage aus.

Einfach kann man sich das Leben mit Dnsmasq machen, einem eher schlanken DNS- und DHCP-Server. Ihn kann man ohne Weiteres parallel zu einer bestehenden DNS/DHCP-Infrastruktur betreiben, also auch zu einem vorhandenen DSL-Router. Die Installation in einem Debian-System ist per

apt-get install dnsmasq

erledigt. Als Konfigurationsdatei genügt nach den zuvor geschilderten Schritten eine neu angelegte Datei desinfect im Verzeichnis /etc/dnsmasq.d. Sie enthält:

port=0
log-dhcp
enable-tftp
tftp-root=/srv/tftp
dhcp-range=192.168.1.0,proxy
pxe-prompt="Taste F8 zeigt Auswahl",5
pxe-service=X86PC,"Starten von Festplatte",0
pxe-service=X86PC,"Mit Desinfec't starten",ct/pxelinux

Der Reihenfolge nach deaktivieren die Optionen den integrierten DNS-Server (port=0), lassen Dnsmasq ausführlich Protokoll schreiben, knipsen den internen TFTP-Server an, weisen den Daemon an, als DHCP-Proxy für das Netz 192.168.1.0 aktiv zu werden und lassen den PXE-Code einen Hinweis anzeigen und auf die Betätigung der Taste F8 hin ein minimales Menü präsentieren.

Ein simples Bootmenü, das erst auf Knopfdruck Netzwerk-Boot-Optionen zeigt, ist mit Dnsmasq im Handumdrehen gestrickt.

Das Menü erlaubt die Wahl zwischen einem Boot von der Festplatte und von Desinfec’t aus dem Netz. Hält der Benutzer fünf Sekunden still, geht es automatisch von der Festplatte weiter. Wie erfrischend einfach Dnsmasq ist, kann man erst im Vergleich mit dem Aufwand ermessen, den man beim Einsatz der „großen“ Dienste treiben müsste. Da liegt es nahe, nur in Ausnahmefällen überhaupt etwas anderes zu benutzen.