Linux/Tipps/Gentoo/PXE
Allgemeines
Quellen: http://www.gentoo.org/doc/en/altinstall.xml#doc_chap4 + http://www.linux-sxs.org/internet_serving/pxeboot.html
Mit PXE kann man einen Rechner (Client) über das Netzwerk von einem Server booten, sodass er selbst keine Festplatte benötigt.
Voraussetzungen
- bootfähige (PXE-fähige) Netzwerkkarte (onboard oder z.B. Intel Pro/1000 GT) im Client
- Server mit NFS-Share
- DHCP-Server
- TFTP-Server
Die letzten 3 Punkte können alle der selbe Rechner sein.
Hier wird von folgendem ausgegangen:
- Server-IP = 192.168.0.7
- Server-Name = backend
- Client-IP = 192-168.0.5
- Client-Mac-Adresse: 00:1B:21:0A:FC:0C
- Client-Name = frontend
- Gateway-IP = 192.168.0.1
- DNS-IP = 192.168.0.1
- Server-NFS-Verzeichnis für den Client: /pxe/frontend
- Server-Verzeichnis für tftp: /tftpboot
Ich habe das mit Gentoo und Fedora Core 5 als Server getestet. Die Vorgehensweise ist praktisch identisch, ich beschreibe hier aber Gentoo. Außerdem ist bei mir der Server alles in einem (NFS-Server, DHCP-Server, TFTP-Server).
Installation des Servers
NFS
emerge nfs-utils
/etc/exports:
/pxe/frontend 192.168.0.5(rw,sync,no_root_squash)
Dann:
rc-update add nfs default /etc/init.d/nfs start
DHCP-Server
Wichtig ist, dass im Netz kein anderer DHCP-Server läuft (z.B. in einem Router).
emerge dhcp
/etc/dhcp/dhcpd.conf:
ddns-update-style none; subnet 192.168.0.0 netmask 255.255.255.0 { range 192.168.0.3 192.168.0.254; default-lease-time 3600; max-lease-time 4800; option routers 192.168.0.1; option domain-name-servers 192.168.0.1; option subnet-mask 255.255.255.0; option domain-name "localdomain"; allow booting; allow bootp; next-server 192.168.0.7; } host frontend { hardware ethernet 00:1B:21:0A:FC:0C; fixed-address 192.168.0.5; option host-name "frontend"; filename "pxelinux.0"; }
Dann:
rc-update add dhcpd default /etc/init.d/dhcpd start
TFTP
Das ist der Teil, von dem die Netzwerkkarte initial den Loader holt.
emerge tftp-hpa
/etc/conf.d/in.tftpd:
INTFTPD_PATH="/tftpboot" INTFTPD_USER="nobody" INTFTPD_OPTS="-u ${INTFTPD_USER} -l -vvvvvv -p -c -s ${INTFTPD_PATH}"
Dann:
mkdir /tftpboot chmod 777 /tftpboot rc-update add in.tftpd default /etc/init.d/in.tftpd start
pxelinux
Das ist der Teil, der per tftp als erstes an den Client geliefert wird. Es gibt auch noch pxegrub, aber das lief mit meinem Client-Rechner nicht.
emerge syslinux cp /usr/lib/syslinux/pxelinux.0 /tftpboot/ mkdir /tftpboot/
Installation des Clients
Am besten installiert man den Client in einem Verzeichnis auf dem Server mit chroot. Das geht natürlich unter Gentoo sehr gut mit einem Stage 3 Tarball. Dabei wird prinzipiell normal installiert, bis auf den Bootloader.
/etc/conf.d/net /etc/fstab Coldplug