“Dieses Beispiel bezieht sich auf die Installation in einem Arch Linux Server. Der hier aufgezeigte Weg ist nicht ganz trivial und zeigt Linuxtypisch einen differenten Weg zum Ziel. Damit im lokalen Netz ein Bootserver bereitgestellt werden kann benötigen wir als ersten die zu notwendigen Pakete”

ziele:

  • tftp server - zum ausliefern der bootdatein
  • nfs server - zum ausliefern der Daten nach dem pxe boot
  • bootmenu zur Auswahl des Betriebssystems

get startet:

## install dnsmasq(8)
> pacman -S dnsmasq

In der Standardkonfiguration ist die Datei /etc/dnsmasq.conf leer. Als ersten setzen wir die Konfig in der genannten Datei fest

port=0
interface=eth0	#bitte ggf. anpassen
bind-interfaces
dhcp-boot=/arch/boot/syslinux/lpxelinux.0
dhcp-option-force=209,/boot/syslinux/archiso.cfg
dhcp-option-force=210,/arch/
dhcp-option-force=66,10.0.0.1
enable-tftp
tftp-root=/tftpboot/archlinux

Nun ertellen wir den Pfad für die entsprechenden Bootdatein

> mkdir -p /tftpboot/archlinux

Im nächsten Schritt wird die Archlinux installations ISO gemountet, und die benötigten Datein in den Pfad /tftpboot/archlinux kopiert. Anschließen wird dnsmasq gestartet

## Arch Linux ISO downloaden
> wget http://ftp.uni-kl.de/pub/linux/archlinux/iso/2018.06.01/archlinux-2018.06.01-x86_64.iso

##  Pfad erstellen und ISO einbinden
> mkdir -p /mnt/iso
> mount -o loop,ro archlinux-2018.06.01-x86_64.iso /mnt/iso

## ISO Datein in das zuvor ertsellte Verzeichnis kopieren
> cp -r /mnt/iso/* /tftpboot/archlinux
> umount /mnt/iso

## start des dnsmasq daemons
> systemctl start dnsmasq

Ab jetzt kann das PXE-Boot-Munü bereits aufgerufen werden, allerdings wird das Booten der Arch-Linux-ISO fehlschlagen, da die Bereitstellung der benötigten Daten noch nicht erfolgt. Die Bereitstellung der ISO kann per NFS NBD oder http erfolgen. Am simpelsten ist hier der Weg über http da zur Umsetzung nur ein entsprechender Webserver auf http-Port-80 lauschen und auf das Verzeichnis /tftpboot/archlinux zeigen muss. Da ich allerdings davon ausgehe das verschiedene Distros über Netzwerk gestartet werden sollen (nur die wenigsten unterstützen das Booten per http), sowie das eventuell der http-Port-80 bereits belegt ist, zeige ich hier die Bereitstellung per NFS auf. Dazu benötigt wird nur noch der jeweilige NFS-Server, sowie die entsprechende Konfiguration

## install nfs server
> pacman -S nfs-utils

Die Konfiguration des NFS erfolgt über die Datei /etc/exports und sollte wie folgt konfiguriert werden

/tftpboot/archlinux *(rw,no_root_squash,sync,no_subtree_check)

Soweit so gut. Eine kleine Änderung der Datei /tftpboot/archlinux/arch/boot/syslinux/archiso_pxe.cfg ist für den korrekten Start einer Archlinux instanz notwendig, und muss wie folgt ausschauen. Bevor wir die Datei verändern, wird allerdings eine Sicherung erstellt

> cp /tftpboot/archlinux/arch/boot/syslinux/archiso_pxe.cfg /tftpboot/archlinux/arch/boot/syslinux/archiso_pxe.cfg.bk001

Die Datei hat wie folgt aussehen

INCLUDE boot/syslinux/archiso_head.cfg

LABEL arch64_nfs
TEXT HELP
Boot the Arch Linux (x86_64) live medium (Using NFS).
It allows you to install Arch Linux or perform system maintenance.
ENDTEXT
MENU LABEL Archlinux
LINUX boot/x86_64/vmlinuz
INITRD boot/intel_ucode.img,boot/x86_64/archiso.img
APPEND archisobasedir=arch archiso_nfs_srv=${pxeserver}:/tftpboot/archlinux
SYSAPPEND 3

INCLUDE boot/syslinux/archiso_tail.cfg

Jetzt ist es an der Zeit den NFS-Server für das ausliefern der Datein in Betrieb zu nehmen

## start nfs server
> systemctl start nfs-server

Der Bootvorgang übr PXE zeigt nun das modifizierte Bootmenü an. Ein Boot des ersten Eintrags wird nun ohne Fehler durchlaufen. In dem Ordner /tftpboot/archlinux können nun weitere Distros untergebracht werden. Die Konfiguration des Bottmenüs erfolgt weiterhin über die Datei /tftpboot/archlinux/arch/boot/syslinux/archiso_pxe.cfg. Im folgenden Beispiel aufgeführt wird das Bereitstellen des Debian-Net-Installers

## Pfad für den Debian-Installer ertsellen
> mkdir /tftpboot/archlinux/arch/debian

## Herunterladen der Datein des Net-Installers
> wget http://ftp.nl.debian.org/debian/dists/stretch/main/installer-amd64/current/images/netboot/netboot.tar.gz

## entpacken der Datein in das zuvor ertstellte Verzeichnis
> tar xfz netboot.tar.gz -C /tftpboot/archlinux/arch/debian

## wechsel in das zuvor erstellte Verzecihnis
> cd /tftpboot/archlinux/arch/debian && mv debian-installer/amd64/initrd.gz . && rm -rf {debian-installer,ldlinux.c32,pxelinux.*,version.info}

## anschließendes Konfigurieren des Bootmenüs
> nano /tftpboot/archlinux/arch/boot/syslinux/archiso_pxe.cfg

Folgenden Inhalt an die Datei /tftpboot/archlinux/arch/boot/syslinux/archiso_pxe.cfg anhängen

---
LABEL debian
MENU LABEL Debian 9
KERNEL debian/linux
APPEND vga=788 initrd=debian/initrd.gz locale=de_DE.UTF-8 keyboard-configuration/layoutcode=de hostname=debian

INCLUDE boot/syslinux/archiso_tail.cfg
---

Der darauf folgende PXE-Boot zeigt nun Debians Net-Installer auf. In weiteren Tutorials werde ich aufzeigen wie sich zur Suche von Viren und Trojanern die vom Heise-Verlag herausgegebene Distro Desinfec't als PXE-Boot zur Verfügung stellen lässt.