Raspberry Pi model 3 B plus: boot from NFS/PXE/USB?

 ( KaTT | 2019. június 12., szerda - 7:30 )

Sziasztok!

Keresem a megoldást, hogy a Raspberry Pi model 3 B plus tudjon NFS-ről Raspbiant betölteni. A cél az lenne, hogy ne SD kártyáról fusson a Raspbian Stretch Lite, hanem NFS-ről.

Amivel szeretném megoldani, ha lehetséges:
- Raspberry Pi model 3 B plus
- NAS, ami támogatja az NFS-s, RPI-ből fel is tudom mount-olni, valamint támogatja a TFTP szervert is, az is az /nfs mappára mutat
- Tomato firmware alapú router, DHCP-vel (ha ezen kell valamit állítani)

Tehát optimális lenne, ha az RPI valahogy PXE-n keresztül letöltené a TFTP szerverről a boot-hoz szükséges fájlokat és NFS-ről pedig beindulna a Raspbian.

Ezek alapján:

https://www.raspberrypi.org/documentation/hardware/raspberrypi/bootmodes/net_tutorial.md
https://www.makeuseof.com/tag/network-boot-raspberry-pi-without-microsd/
https://hackaday.com/2018/10/08/hack-my-house-running-raspberry-pi-without-an-sd-card/
http://lig-membres.imag.fr/duble/software/raspberry-pi-netboot/
https://raspberrypi.stackexchange.com/questions/628/how-do-i-configure-the-raspberry-pi-to-boot-with-an-nfs-root

Amit már megtettem:

echo program_usb_boot_mode=1 | sudo tee -a /boot/config.txt

"
$ vcgencmd otp_dump | grep 17:
17:3020000a
Ensure the output 0x3020000a is correct.
"

Nekem ez oké.

mount 192.168.1.11:/nfs/server01 /nfs/server01/
sudo rsync -xa --progress --exclude /nfs / /nfs/server01

Tehát ott van fent NFS-en a teljes OS.

cd /nfs/server01
sudo mount --bind /dev dev
sudo mount --bind /sys sys
sudo mount --bind /proc proc

Innentől nem tiszta, ha az első leírást akarom követni, ezt:

https://www.raspberrypi.org/documentation/hardware/raspberrypi/bootmodes/net_tutorial.md

Elakadtam. Hogy miket kell jelen esetben csinálnom, ha a másik szerver nem RPI, hanem külön NAS + DHCP-s router.

Nekem úgy is jó, ha pendrive-ról valahogy boot-ol, és NFS-ről indul az OS, vagy úgy is, hogy SD kártyáról boot-ol, és onnan olvassa az NFS-t, csak az SD-t lehetőleg read only-ként szeretném használni.

Továbbá ebben az esetben ha jön egy újabb kernel, akkor az SD/USB-t is frissítenem kell, vagy az kb csak egy boot loader lesz, és nem kell hozzá nyúlni?

Köszönöm.

Hozzászólás megjelenítési lehetőségek

A választott hozzászólás megjelenítési mód a „Beállítás” gombbal rögzíthető.

3B+ már tud natívan PXE bootot (lásd a leírásod), nem kell SD-vel meg USB-vel bohóckodni.
Tomato-n van dnsmasq meg pxe boot lehetőség, oda tedd a /tftpboot folderbe a /boot tartalmát (meg persze a megfelelő DHCP beállításokat is tedd meg).
A dnsmasq.conf-ot ne szerkeszd, hanem van a Tomato GUI-n egy rész ahol adhatsz saját opciókat hozzá (meg talán a PXE-re is külön).

--

"After successfully ignoring Google, FAQ's, the board search and leaving a undecipherable post in the wrong sub-forum don't expect an intelligent reply."

Első körben nem ment a DNSMASQ beállításai a Tomato firmware-rel, lehet régebbi / butított, jobban megnézem.
Akkor a TFTP-ről küldött file-okat a router-re kell másolnom, hiába van a NAS-on is TFTP szerver?

Köszönöm az infót.

Sakk-matt,
KaTT :)

Ha router DHCP configjaban at tudod állítani a next server DHCP optiont, akkor a nas is lehet a tftp server.

Köszönöm kipróbálom, és írok.

Tehát a routeren a DNSMASQ megmondja, hogy melyik IP-ről húzza le TFTP-n a boot-hoz szükséges fájlokat, ami itt jelen esetben a NAS. (Akkor a NAS-on lévő TFTP szerver lesz használva)
Majd a boot ha elindult, akkor pedig NFS-ről folytatja a fájlok beolvasását, és azon fog futni a Raspbian.

Ebben az esetben ha több hasonló PXE-s gép van, hogy oldom meg, hogy más-más NFS mappából működjön? A DNSMASQ-nál, a boot-nál vagy máshol?

(Láttam olyan iskolai hálózatot régen, ahol minden diák gép PXE-ről indult be, külön-külön NFS-es mappából működtek, bár ott Linux volt a router+dhcp+storage is, minden.)

Sakk-matt,
KaTT :)