# Raspberry Pi als PXE-Server

[![grafik.png](https://bst.wkmimnl.de/uploads/images/gallery/2025-01/scaled-1680-/a2Hgrafik.png)](https://bst.wkmimnl.de/uploads/images/gallery/2025-01/a2Hgrafik.png)

© Erik Reis, 123RF

## Booten übers Netz

<div class="fusion-post-title-meta-wrap" id="bkmrk-friedrich-hotz"><div class="author">Friedrich Hotz</div></div>**Via PXE booten oder installieren Sie auch auf Rechnern ohne Wechselspeicher ein Betriebssystem. Mit dem Raspberry Pi steht Ihnen dafür ein sehr kostengünstiger Server zur Verfügung.**<span id="bkmrk--19"></span>

README

PXE erlaubt es, bootbare ISO-Images im Netz bereitzustellen und diese auf den Client-Rechnern zu starten. Der Artikel zeigt Ihnen, wie Sie den RasPi zum PXE-Server aufrüsten.

<div class="post-content" id="bkmrk--0"><div class="post-content"><div class="box textbox" id="bkmrk--20"></div></div></div>Anfang 1999 schlug Intel der Internet Engineering Task Force die Gründung einer Arbeitsgruppe vor, die ein Verfahren zum Booten eines Rechners vom Netzwerk über DHCP definieren sollte. Als technische Grundlage dazu präsentierte Intel seine [PXE](https://www.raspberry-pi-geek.de/ausgaben/rpg/2014/02/raspberry-pi-als-pxe-server/2/#article_gpxe "PXE|Preboot Execution Environment. Eine Methode zum Booten eines Rechners vom Netzwerk über DHCP. PXE nutzt neben DHCP auch noch die Protokolle UDP und TFTP.")-Technik. Nachdem diese Arbeitsgruppe nicht zustande kam, veröffentlichte Intel im September 1999 im Alleingang die PXE-Spezifikation, die ursprünglich nur für die 32-Bit-Intel-Architektur (IA32) galt. Innerhalb von [UEFI](https://www.raspberry-pi-geek.de/ausgaben/rpg/2014/02/raspberry-pi-als-pxe-server/2/#article_guefi "UEFI|Unified Extensible Firmware Interface. Dieser BIOS-Ersatz basiert auf dem ursprünglich von Intel entwickelten EFI, wird aber mittlerweile von einer ganzen Reihe von PC- und BIOS-Herstellern unterstützt, daher das "Unified".") wird sie mittlerweile auch für IA64 unterstützt, daneben brachten entsprechende Portierungen PXE mittlerweile auch auf eine Reihe anderer Hardware-Plattformen.

Der PXE-Code befindet sich in einem ROM auf dem Client-Rechner (BIOS oder UEFI). Über eine Reihe von Anfragen an den Server ermittelt der Client dessen IP-Adresse und die zu ladende Startdatei. Letztere, die der Rechner über einen vereinfachten FTP-Transfer beim Server abholt ([Abbildung 1](https://www.raspberry-pi-geek.de/ausgaben/rpg/2014/02/raspberry-pi-als-pxe-server/#article_f1)), übernimmt dann die weitere Steuerung. Die exakte Vorgehensweise führt die PXE-Spezifikation [\[1\]](https://www.raspberry-pi-geek.de/ausgaben/rpg/2014/02/raspberry-pi-als-pxe-server/2/#articleInfo) auf.

<div class="post-content" id="bkmrk--1"><div class="post-content"><div id="bkmrk--21"></div><div class="wp-caption aligncenter">  
</div></div></div>[![grafik.png](https://bst.wkmimnl.de/uploads/images/gallery/2025-01/scaled-1680-/AeCgrafik.png)](https://bst.wkmimnl.de/uploads/images/gallery/2025-01/AeCgrafik.png)

Abbildung 1: Der Boot-Vorgang via PXE im Diagramm. (Quelle: Intel)

<div class="post-content" id="bkmrk--3"><div class="post-content"><div class="wp-caption aligncenter" id="bkmrk--23"></div></div></div>### DHCP PXE-fähig machen

Auf der Server-Seite, also auf dem Raspberry Pi, benötigen Sie als Grundlage einen installierten und konfigurierten DHCP-Server [\[2\]](https://www.raspberry-pi-geek.de/ausgaben/rpg/2014/02/raspberry-pi-als-pxe-server/2/#articleInfo). Mit dem Zuweisen der IP-Adresse übermittelt dieser DHCP-Server, wo sich ein Boot-Image befindet. Dazu muss auf dem Server ein TFTP-Dienst laufen, der diese Datei zum Client überträgt.

Die DHCP-Konfiguration benötigt nur eine kleine Modifikation, um PXE-Boot zu unterstützen: Im Abschnitt `subnet` der `/etc/dhcp/dhcpd.conf` geben Sie den Hostnamen des TFTP-Servers (in unserem Beispiel `pi.homenet.de`) sowie den Namen der Boot-Image-Datei an ([Listing 1](https://www.raspberry-pi-geek.de/ausgaben/rpg/2014/02/raspberry-pi-als-pxe-server/#article_l1)). Nach dieser Konfigurationsänderung starten Sie den Server mit dem Befehl `sudo service isc-dhcp-server restart` neu.

Listing 1

<div class="post-content" id="bkmrk--5"><div class="post-content"><div class="post-content"><div class="box listingbox"><div class="boxtitle">  
</div></div></div></div></div>```
[...]
#
# add PXE-Boot support
#
  next-server pi.homenet.de;
  filename "pxelinux.0";
}
```

<div class="post-content" id="bkmrk--6"><div class="post-content"><div class="box listingbox" id="bkmrk--24"></div></div></div>### TFTP

Damit der RasPi in der Lage ist, das Image und die Konfigurationsdatei auszuliefern, installieren Sie zunächst mit dem Kommando `sudo apt-get install tftpd-hpa` den TFTP-Server darauf. Der TFTP-Server erwartet in der Voreinstellung einen IPv6-Socket, was zunächst zu einer Fehlermeldung führt. Um dies abzustellen, ergänzen Sie in der Datei `/etc/default/tftpd-hpa` die Zeile `TFTP_OPTIONS` am Schluss um den Eintrag `--ipv4`:

```
TFTP_OPTIONS="--secure --ipv4"
```

Nach dieser Änderung startet der TFTP-Dienst ohne weitere Fehlermeldungen.

### Syslinux

Um an die Datei `pxelinux.0` (und einige weitere) zu gelangen, gilt es, das Syslinux-Paket auf dem Raspberry Pi zu installieren. Danach kopieren Sie die benötigten Dateien an den richtigen Ort ([Listing 2](https://www.raspberry-pi-geek.de/ausgaben/rpg/2014/02/raspberry-pi-als-pxe-server/#article_l2))

Listing 2

<div class="post-content" id="bkmrk--8"><div class="post-content"><div class="post-content"><div class="box listingbox"><div class="boxtitle">  
</div></div></div></div></div>```
$ sudo apt-get install syslinux-common
$ sudo cp /usr/lib/syslinux/chain.c32 /usr/lib/syslinux/menu.c32 /usr/lib/syslinux/vesamenu.c32 /usr/lib/syslinux/pxelinux.0 /srv/tftp/
$ sudo mkdir --p /srv/tftp/pxelinux.cfg
```

<div class="post-content" id="bkmrk--9"><div class="post-content"><div class="box listingbox" id="bkmrk--25"></div></div></div>Danach erstellen Sie eine recht einfach gehaltene Isolinux-Menüdatei `/srv/tfpt/pxelinux.cfg/default`, die lediglich die Optionen *Von Festplatte starten* und *Speichertest* als Boot-Optionen anbietet ([Listing 3](https://www.raspberry-pi-geek.de/ausgaben/rpg/2014/02/raspberry-pi-als-pxe-server/#article_l3)).

Listing 3

<div class="post-content" id="bkmrk--11"><div class="post-content"><div class="post-content"><div class="box listingbox"><div class="boxtitle">  
</div></div></div></div></div>```
DEFAULT vesamenu.c32
PROMPT 0
TIMEOUT 300
MENU TITLE PXE Network Boot Menu
LABEL local
MENU LABEL Von Festplatte starten
MENU DEFAULT
LOCALBOOT 0
LABEL memtest
MENU LABEL Speichertest mit memtest86+ v4.20
KERNEL memtest
```

<div class="post-content" id="bkmrk--12"><div class="post-content"><div class="box listingbox" id="bkmrk--26"></div></div></div>Bootet ein Rechner übers Netz mit dieser Konfiguration, zeigt er einen entsprechenden Bootscreen an ([Abbildung 2](https://www.raspberry-pi-geek.de/ausgaben/rpg/2014/02/raspberry-pi-als-pxe-server/#article_f2)). Klappt das soweit, können Sie nun weitere Betriebssystem-Images auf den RasPi laden und in die Startdatei eintragen.

[![grafik.png](https://bst.wkmimnl.de/uploads/images/gallery/2025-01/scaled-1680-/jPIgrafik.png)](https://bst.wkmimnl.de/uploads/images/gallery/2025-01/jPIgrafik.png)

Abbildung 2: Findet Ihr Client-Rechner im Netz via PXE die nötigen Start-Dateien, zeigt er einen entsprechenden Bootscreen an.

<div class="post-content" id="bkmrk--14"><div class="post-content"><div class="wp-caption aligncenter" id="bkmrk--28"></div><div class="box textbox"><div class="boxtitle">  
</div></div></div></div>PXE-Client einrichten

Aufseiten des Clients müssen Sie für das Booten über PXE lediglich die BIOS-Einstellungen entsprechend anpassen, was eventuell ein manuelles Aktivieren des Boot-RAMs der Netzwerkkarte voraussetzt. Nach der Umstellung startet der Rechner dann dauerhaft via PXE.

Viele Rechner bieten daneben beim Hochfahren auch auf Tastendruck ein Menü für die Auswahl des Bootmediums an, sodass Sie auf diesem Weg gezielt im Einzelfall via PXE booten können. Dell und IBM verwenden dazu in der Regel \[F12\], Asus nutzt \[F8\], und HP legt die Funktion meist auf \[F9\].

<div class="post-content" id="bkmrk--15"><div class="post-content"><div class="box textbox" id="bkmrk--29"></div></div></div>### MSDOS-ISO booten

Für erste Versuche mit einem bootbaren Betriebssystem-Images eignet sich das kompakte, nur 3 MByte große MSDOS-Bootdisk bestens. Sie finden ein entsprechendes ISO-Image beispielsweise bei Allbootdisks.com [\[3\]](https://www.raspberry-pi-geek.de/ausgaben/rpg/2014/02/raspberry-pi-als-pxe-server/2/#articleInfo), laden es dort herunter und kopieren es dann nach `/srv/tftp/DOS/`.

Mithilfe des kleinen Programms Memdisk lädt der Rechner ISO-Images in den Speicher und startet diese von dort. Sie finden das Tool unter `/usr/lib/syslinux/memdisk` und kopieren es von dort aus nach `/srv/tftp/memdisk`. Nun fehlt nur noch ein korrespondierender Eintrag in der Menüdatei `/srv/tfpt/pxelinux.cfg/default`, um den Clients das MSDOS-Image zum Booten anzubieten ([Listing 4](https://www.raspberry-pi-geek.de/ausgaben/rpg/2014/02/raspberry-pi-als-pxe-server/2/#article_l4)).

Listing 4

<div class="box listingbox" id="bkmrk--17"><div class="box listingbox"><div class="boxtitle">  
</div></div></div>```
[...]
LABEL MSDOS 6.22
MENU LABEL MSDOS 6.22 starten
KERNEL memdisk
APPEND iso raw initrd=DOS/DOS6.22_bootdisk.iso
```

<div class="box listingbox" id="bkmrk--18"></div>Aktivieren Sie beim Start des Clients den entsprechenden Eintrag am Boot-Prompt, startet DOS 6.22 auf dem Rechner übers Netz.

### Ausblick

Auf dem gezeigten Weg lassen sich auch etliche Linux-Distributionen via PXE booten, jedoch bei Weitem nicht alle. In vielen Fällen ist es notwendig, das ISO-Image als Network Block Device einzubinden und das ISO über die aus dem Image extrahierte initiale RAM-Disk zu starten. Wie das funktioniert, zeigt ein Artikel in einer der nächsten Ausgaben von Raspberry Pi Geek.

Glossar

<div class="box glossarybox" id="bkmrk-pxe-preboot-executio"><div class="boxtitle">  
</div><dl><dt id="bkmrk-pxe">PXE </dt><dd>Preboot Execution Environment. Eine Methode zum Booten eines Rechners vom Netzwerk über DHCP. PXE nutzt neben DHCP auch noch die Protokolle UDP und TFTP.

</dd><dt id="bkmrk-uefi">UEFI </dt><dd>Unified Extensible Firmware Interface. Dieser BIOS-Ersatz basiert auf dem ursprünglich von Intel entwickelten EFI, wird aber mittlerweile von einer ganzen Reihe von PC- und BIOS-Herstellern unterstützt, daher das “Unified”.

</dd></dl></div>Infos

<div class="box infobox" id="bkmrk-pxe-spezifikationen%3A"><div class="boxtitle">  
</div>1. PXE-Spezifikationen: [http://download.intel.com/design/archives/wfm/downloads/pxespec.pdf](http://download.intel.com/design/archives/wfm/downloads/pxespec.pdf)
2. DHCP-Server einrichten: [https://wiki.debian.org/de/DHCP\_Server](https://wiki.debian.org/de/DHCP_Server)
3. MSDOS-Boot-Image: [http://www.allbootdisks.com/download/iso.html](http://www.allbootdisks.com/download/iso.html)

</div><div class="page-links pagination" id="bkmrk--22"><div class="tablenav-pages">  
</div></div>