Boot Ramdisk initrd mit PXE

um einen X86 basierten Rechner übers netz zu booten muss dass Mainboard Bios und die Netzwerkkarte PXE unterstützen (pre boot execution environment). Beim Booten setzt der Rechner einen DHCP Request ab. Vom DHCP Server erhält er einen bootpfad der auf ein passendes PXE Binary auf einem TFTP Server verweist. PXE lädt dann Kernel und Ramdisk vom netz und startet den Kernel.

PXELinux

PXELinux stellt ein konfigurierbares PXE zur Verfügung. Download und auspacken. In ein per tftp verfügbares Verzeichnis. die Datei pxelinux.0 ablegen. Dem DHCP Server mitteilen, dass er bei einem DHCP Request die option bootfile name (67) /pxe/pxelinux.0 ausliefern soll.

Der Rechner wird die Datei pxelinux.0 herunterladen und ausführen. pxelinux sucht dann nach seiner Configdatei. Dies erfolgt in folgender Reihenfolge bis er eine findet
  1. hardware-typ + mac-adresse, z.B. /pxe/pxelinux.cfg/01-00-13-95-aa-bb-cc (01 ist ethernet)
  2. ip adresse als hexadezimal, z.B. für 192.168.1.1 /pxe/pxelinux.cfg/C0A80101
  3. weglassen der letzten stelle /pxe/pxelinux.cfg/C0A8010, /pxe/pxelinux.cfg/C0A801, ... /pxe/pxelinux.cfg/C
  4. /pxe/pxelinux.cfg/default
  5. Fehlermeldung, fünf minuten pause, Rechner reset

Wir verwenden die exakte IP Adresse zur Konfiguration.

Eine Beispiel Configdatei
DEFAULT linux
# display boot prompt
PROMPT 1
# 10 second timeout
TIMEOUT 100

DISPLAY help.txt

LABEL linux
        MENU LABEL linux ramdisk
        KERNEL kernel
        APPEND initrd=ramdisk.img ramdisk_size=32768 root=/dev/ram
LABEL menu
        KERNEL menu.c32

Es wird der inhalt der datei help.txt ausgegeben. Dann wird ein Prompt gezeigt. Erfolgt zehn Sekunden keine Eingabe wird der default eintrag "linux" gebootet. Schreibt man "menu" so erhält man eine Liste aller definierten labels. Bootet man "linux" so wird als kernel die Datei kernel verwendet und als Ramdisk die Datei ramdisk.img.

Hier ein komplettes Verzeichnis mit kernel und config Dateien
.../pxe/pxelinux.0
.../pxe/help.txt
.../pxe/menu.c32
.../pxe/pxelinux.cfg/8CB584FC -> link auf hostname
.../pxe/pxelinux.cfg/hostname -> link auf default
.../pxe/pxelinux.cfg/default
.../pxe/kernel
.../pxe/ramdisk.img

die ganzen Links damit man weiss welcher Rechner das ist ohne sich das übersetzen zu müssen.

This topic: Frontend > WebHome > EmbeddedLinux > EmbeddedBootPXE
Topic revision: 07 Oct 2013, ChristophHandel
This site is powered by FoswikiCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding Foswiki? Send feedback