Ganz kurz: PXE
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.
Hintergrundbild: 1148x 456px, Bild genauer anschauen – © Marianne Spiller – Alle Rechte vorbehalten