PXE - Preboot Execution Environment (Raspberry Pi 4): Unterschied zwischen den Versionen
Zeile 233: | Zeile 233: | ||
<pre> | <pre> | ||
mount -tnfs -onolock 192.168.2.1:/srv/tftp/NFS_Freigabe /mnt | sudo mount -tnfs -onolock 192.168.2.1:/srv/tftp/NFS_Freigabe /mnt | ||
sudo cp -ax /. /mnt/raspbian-diskless/. | |||
sudo cp -ax /dev/. /mnt/raspbian-diskless/dev/. | |||
</pre> | </pre> | ||
Version vom 4. Oktober 2020, 13:45 Uhr
Client
Bootlader
Update
Zuerst das System auf den neuesten Stand bringen:
sudo apt-get update && sudo apt-get full-upgrade sudo reboot
Mit folgenden Befehl kann man überprüfen, ob es eine neuere Bootlader-Version gibt:
sudo rpi-eeprom-update
Mit der Option -a kann die neueste Version intalliert werden:
sudo rpi-eeprom-update -a sudo reboot
Links
https://www.raspberrypi.org/documentation/hardware/raspberrypi/booteeprom.md
https://github.com/raspberrypi/rpi-eeprom/
Bootreihenfolge anpassen
Nach einem full-upgrade befindet sich die neueste Bootlader-Version in /lib/firmware/raspberrypi/bootloader/stable/. Diese wird in lokales Verzeichnis kopiert und die Konfiguration exportiert:
cd ~/temp cp /lib/firmware/raspberrypi/bootloader/stable/pieeprom-2020-09-03.bin pieeprom.bin sudo rpi-eeprom-config pieeprom.bin > bootconf.txt
Die Datei
vi bootconf.txt
bearbeiten und den Eintrag BOOT_ORDER auf 0x21 (zuerst von SD-Karte, dann vom Netzwerk) setzen:
BOOT_ORDER=0x21
Danach aus dem usrprünglichen Bootloader und der geänderten Konfiguration einen neuen erstellen:
sudo rpi-eeprom-config --out pieeprom-new.bin --config bootconf.txt pieeprom.bin
Zum Abschluss den Bootloader aktualisieren und das System neu starten:
sudo rpi-eeprom-update -d -f ./pieeprom-new.bin sudo reboot
Nach dem Neustart kann die Konfiguration mittels
vcgencmd bootloader_config
kontrolliert werden.
Links
https://www.raspberrypi.org/documentation/hardware/raspberrypi/bcm2711_bootloader_config.md
Server
DHCP-Server
Installation und Grundkonfiguration siehe ISC-DHCPD
PXE-Boot aktivieren
Die Datei
sudo vi /etc/dhcp/dhcpd.conf
bearbeiten und folgenden Zeilen hinzfügen
allow booting; allow bootp; group { # IP address of the TFTP server next-server 192.168.2.1; host tftpclient { # ethernet address of the client hardware ethernet DC:A6:32:BE:D1:7D; # static ip address (optional) fixed-address 192.168.2.105; filename "pxelinux.0"; } }
Dabei ist group optional und dient nur dazu, gewisse Parameter (hier die IP-Adresse des TFTP-Servers) für mehrere host's gemeinsam zu definieren.
Links
https://wiki.syslinux.org/wiki/index.php?title=PXELINUX
https://kb.isc.org/docs/isc-dhcp-41-manual-pages-dhcpdconf
TFTP Server
Siehe dazu tftpd-hpa
NFS Server
Installation und Grundkonfiguration NFS Server
Um das Root-Verzeichnis /srv/tftp des TFTP-Server und alle Unververzeichnisse lesend für NFS-Clients freizugeben die Datei
sudo vi /etc/exports
editieren und folgende Zeile hinzufügen:
/srv/tftp 192.168.2.0/255.255.255.0(ro,sync,no_wdelay,insecure_locks,insecure,no_root_squash,no_subtree_check)
Beschreibung der Parameter siehe NFS Server#Konfiguration
Testen siehe NAS Laufwerk einbinden#OHNE_Eintrag in /etc/fstab
Bootdateien
PXE-Bootdateien
Damit das Booten über PXE funktioniert, müssen die Pakete
sudo apt-get install pxelinux syslinux-common
installiert und daraus folgende Dateien ins TFTP-Wurzelverzeichnis kopiert werden:
sudo cp /usr/lib/PXELINUX/pxelinux.0 /srv/tftp/
sudo cp -v /usr/lib/syslinux/modules/bios/{ldlinux.c32,libcom32.c32,libutil.c32,vesamenu.c32} /srv/tftp/
Konfigurationsdateien
Die Konfigurationsdateien werden im Verzeichnis /pxelinux.cfg/ unterhalb des TFTP-Wurzelverzeichnisses angelegt:
sudo mkdir /srv/tftp/pxelinux.cfg/
Es muss eine Konfigurationsdatei mit dem Namen default geben, falls keine client-spezifische Konfigurationsdatei gefunden werden kann:
sudo vi /srv/tftp/pxelinux.cfg/default
Und optional client-spezifische Konfigurationen anhand der MAC-Adresse in Kleinbuchstaben mit vorangestellten 01-:
z.B. ergibt die MAC-Adresse DC:A6:32:BE:D1:7D die Konfigurationsdatei 01-dc-a6-32-be-d1-7d.
sudo vi /srv/tftp/pxelinux.cfg/01-dc-a6-32-be-d1-7d
Alternativ können die Konfigurationsdateien auch nach der IP-Adresse in Hexadezimal-Schreibweise mit Großbuchstaben benannt werden.
Z.B. 192.168.2.105 ergibt in Hexzahlen C0.A8.02.69 bzw. 0xC0A80269 und dann als Dateinamen eben C0A80269 (auch abgekürzt für Netzbereiche möglich - z.B.: C0A80).
IP zu Hexadecimal-Konverter: https://www.browserling.com/tools/ip-to-hex.
Links
https://wiki.syslinux.org/wiki/index.php?title=PXELINUX
https://wiki.ubuntuusers.de/PXE-Boot/
Betriebssystem
sudo mkdir /srv/tftp/NFS_Freigabe
sudo vi /etc/initramfs-tools/initramfs.conf
DEVICE=eth0 # ## BOOT: [ local | nfs ] ## ## local - Boot off of local media (harddrive, USB stick). ## ## nfs - Boot using an NFS drive as the root of the drive. ## # BOOT=nfs
sudo uname -a
Linux testclient 5.4.51-v7l+ #1333 SMP Mon Aug 10 16:51:40 BST 2020 armv7l GNU/Linux
sudo ls -ltr /boot/kernel*.img
mkinitramfs -o /home/pi/temp/kernel7l.img
sudo mount -tnfs -onolock 192.168.2.1:/srv/tftp/NFS_Freigabe /mnt sudo cp -ax /. /mnt/raspbian-diskless/. sudo cp -ax /dev/. /mnt/raspbian-diskless/dev/.
Links
https://wiki.ubuntuusers.de/PXE-Boot/
Links
https://hackaday.com/2019/11/11/network-booting-the-pi-4/
https://www.debian.org/releases/jessie/i386/ch04s05.html.de
https://wiki.ubuntuusers.de/PXE-Boot/
https://www.virtuallyghetto.com/2020/07/two-methods-to-network-boot-raspberry-pi-4.html
Zurück zu PXE - Preboot Execution Environment