Ganz kurz: PXE

Diesen Beitrag schrieb ich 13 Jahre und 2 Monate zuvor; die nachfolgenden Ausführungen müssen heute nicht unbedingt noch genau so funktionieren. Behalte das beim Lesen (und vor allem: beim Nachmachen!) bitte stets im Hinterkopf.

Geschätzte Lesezeit: 1 Minute

Und noch eine Notiz aus der Entwurfs-Sammlung – ein wenig kurz gefasst, aber dennoch informativ.

Der Bootvogang startet per PXE (Preboot Execution Environment); der Node sendet einen Broadcast, der von master01 beantwortet wird. In diesem Schritt weist master01 dem Node eine feste IP-Adresse anhand seiner MAC-Adresse zu und liefert ihm zugleich die Information, was er booten soll – nämlich das Binary pxelinux.0, das in /tftpboot herumliegt.

filename "pxelinux.0";  ## Angabe relativ zu /tftpboot!
 ...
 host node01 {
     hardware ethernet 00:30:48:67:F8:BD;
     fixed-address 192.168.4.1;
 }

Das Binary pxelinux.0 erfordert sich seine Konfiguration in /tftpboot/pxelinux.cfg, hier finden sich zwei Files; eines ist das Default-File, das immer dann Anwendung findet, wenn sonst keines funktioniert, das andere File, C0A804, bezeichnet eine IP-Range – in hexadezimal :D (C0=192, A8=168, 04=4). Da dem Host per DHCP eine IP aus dem Subnetz 192.168.4.0/24 zugewiesen wird, wird dieses File angetastet und ausgewertet.

$ ls -la
drwxr-xr-x 2 root root 4096 Sep  5 16:40 .
drwxr-xr-x 6 root root 4096 Sep  5 16:15 ..
-rw-r--r-- 1 root root  194 Sep  5 16:16 C0A804
-rw-r--r-- 1 root root  194 Sep  5 16:16 default

Der Host mit der MAC-Adresse 00:30:48:67:F8:BD wird also einen Broadcast schicken, die IP 192.168.4.1 erhalten und versuchen, die Datei /tftpboot/pxelinux.0 zu booten. Sofern dies gelingt, bewegt er sich nach /tftpboot/pxelinux.cfg und schnappt sich die Datei C0A804, die in etwa so aussieht:

## Konfig: C0A804
default node
prompt 1
timeout 10
 
label node
  kernel vmlinuz-2.6.18-53.1.13.el5
  append init=/init rw root=/dev/sda1 initrd=initrd-2.6.18-53.1.13.el5.img
 
label local
  LOCALBOOT 0

Wir sehen: als nächstes wird er das File initrd-2.6.18-53.1.13.el5.img anpacken. Und ab hier ist es dann ein Boot-Vorgang, wie man ihn halt so kennt.