Network Boot mit NAS!

  • Hiho!


    Den Network Boot wie unter https://www.raspberrypi.org/do…bootmodes/net_tutorial.md beschrieben habe ich hinbekommen.


    Also Raspi1 als PXE Server und Raspi3 bootet dann davon. Das klappt einwandfrei.


    Aber das ist nicht das was ich will. ::)


    Mein Ziel wäre die Synology NAS als PXE Server für den Raspi. Das klappt aber leider nicht. Ich habe den TFTP Server eingerichtet und die Dateie genauso unter /nfs/client1 gelegt. Doch scheinbar klappt das nicht. Der TFTP Server kann aber angesprochen werden. Nur der Raspi lädt das Linux nicht von dort. Die cmdline.txt Datei habe ich auch mit der IP der NAS angepasst.


    Was braucht ihr um mir helfen zu können?


    Edit: Lösung gefunden, siehe nächster Beitrag

  • Schade das mir niemand helfen konnte. Aber vielleicht haben ja noch andere das Problem.


    Ich habe für mich eine Lösung gefunden.


    Erst einmal habe ich alle Schritte von https://www.raspberrypi.org/do…bootmodes/net_tutorial.md durch geführt und getestet, dass der Raspi 3 vom Netzwerk bootet.


    Als dies dann funktionierte habe ich auf meiner NAS einen neuen Ordner angelegt und diesen per NFS im Netzwerk frei gegeben und in den Server gemountet per NFS. (sollten hier zu Fragen sein kann ich dazu auch was schreiben)


    Anschließend dann folgede Schritte wiederholt:

    Code
    1. sudo rsync -xa --progress --exclude=/nfs --exclude=/PFADZUMNFS / /PFADZUMNFS/client2
    2. cd /PFADZUMNFS/client2
    3. sudo mount --bind /dev dev
    4. sudo mount --bind /sys sys
    5. sudo mount --bind /proc proc
    6. sudo chroot .
    7. rm /etc/ssh/ssh_host_*
    8. dpkg-reconfigure openssh-server


    Dann hier mit vi /etc/network/interfaces wieder das DHCP eingeschaltet.



    Code
    1. sudo systemctl enable dhcpcd
    2. sudo systemctl disable networking
    3. exit
    4. sudo umount dev
    5. sudo umount sys
    6. sudo umount proc


    Anschließend in /tftpboot/cmdline.txt den Pfad angepasst:
    dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=/dev/nfs nfsroot=NASIP:/PFADAUFNAS/nfs/client2 rw ip=dhcp rootwait elevator=deadline


    Wobei bei mir das dann so aussieht: nfsroot=10.0.3.10:/volume1/Tausch/tftp_raspi1/nfs/client2 damit ihr euch das etwas vorstellen könnt.


    Anschließend den Raspi3 einfach neu gebootet. Dann bekam ich die IP Adresse angezeigt die der Raspi per DHCP bekommt. Diese habe ich dann in der NAS für das NFS Share frei gegeben. Beim nächsten Booten des Raspi3 ging es dann in das Notfallsystem. Hier habe ich dann:

    Code
    1. vi /etc/fstab zum editieren auf gerufen und die die Zeile:
    2. /dev/mmcblk0p1  /boot           vfat    defaults          0       2
    3. aus kommentiert zu
    4. #/dev/mmcblk0p1  /boot           vfat    defaults          0       2


    Nach einem erneuten Boot hat dann alles geklappt und jetzt liegt mein Raspi auf der NAS.


    [Blocked Image: http://www.forum-raspberrypi.de/attachment.php?aid=11256]

  • Hallo,


    danke dass Du hier Deine Erfahrungen teilst. Ich habe den ersten Teil erfolgreich durchgeführt, jetzt möchte jedoch das bootverzeichnis auch auf das NAS legen.


    Du hast dazu geschrieben, dass Du auf dem NAS einen neuen Ordner angelegt und diesen per NFS im Netzwerk frei gegeben und in den Server gemountet per NFS hast. (sollten hier zu Fragen sein kann ich dazu auch was schreiben).


    Ja bitte, denn diese Schritte kann ich nicht nachvollziehen.


    Zum Schluss noch eine weitere Frage: wenn ich nun mehrere Raspi's vom NAS booten möchte, an welchen Stellen der Installation muss das angepasst werden?


    Danke im voraus,
    Wolfgang

  • Ich hänge leide auch an diesem Punkt. Ich habe keinen zweiten Pi, so dass ich die ersten Schritte nicht testen kann. Mein Setup:


    Pi 3 Model B (Upgrade usw schon erledigt)
    Qnap NAS

  • Interessante Sache!
    Ich frage mich gerade, ob du das NAS Device als alleinigen DHCP Server laufen lässt?


    Bei mir läuft als DHCP Server einer der Internet-Router und 2 DHCP Server in gleichen Netzwerk beißen sich im Allgemeinen.


    Oder nimmst du für den Netzwerkboot ein anderes Netzwerk?
    Ich werde mir jetzt mal in Ruhe diese verlinkte Anleitung durchlesen... mal sehen, vielleicht beantwortet sich die Frage ja von selbst...

  • Danke für die Rückmeldung!


    Ich schlüssel mein Setup nochmal auf:


    Router + DHCP Server: FritzBox
    Raspberry Pi: 3 Model B - RASPBIAN JESSIE LITE (inkl. Firmware Upgrade auf NEXT BRANCH)
    NAS: QNAP mit QTS 4.3.2 + TFTP Server aktiviert + NFS Verzeichnis erstellt


    Ich nehme an, dass ich die genannten Pakete auch auf der NAS installieren könnte (dnsmasq), allerdings würde ich das gerne vermeiden, wenn es ginge.

  • Hallo zusammen,


    auch ich habe den PXE-Boot endlich, nach tagelangem Probieren, hin bekommen.


    Mich würde mal interessieren, wie ich 2 Clients PXE-Boote?


    Meine Konfiguration unter /etc/dnsmasq.conf sagt:

    Code
    1. port=0
    2. dhcp-range=192.168.179.240, 192.168.179.250, 255.255.255.0, 192.168.179.255, 1h
    3. log-dhcp
    4. enable-tftp
    5. tftp-root=/tftpboot
    6. pxe-service=0,"Raspberry Pi Boot"


    Wenn ich jetzt einen zweiten Rasberry Pi 3 über PXE starte, dann lädt dieser ja ebenfalls die Dateien aus /tftpboot.


    Kann man da irgendwie differenzieren?

  • Hallo,


    um mehrere Pi per Netzwerk zu starten, konnte ich 2 verschiedene Ansätze erfolgreich testen:


    1. Alle booten des gleichen Kernel, haben aber unterschiedliche Root-Verzeichnisse


    dazu muss nur die Datei "cmdline.txt" geändert werden. An den Eintrag "nfsroot=" hängt man einfach "%s" - das steht für den Hostnamen, den der Pi vom DHCP-Server bekommt. Natürlich muss dann das entsprechende Verzeichnis angelegt und befüllt werden.


    Code
    1. dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=/dev/nfs nfsroot=1.2.3.4:/nfs/%s rw ip=dhcp rootwait elevator=deadline


    2. Jeder Pi bekommt vom tftp-Server ein eigenes Boot-Verzeichnis


    dazu wird in der Datei "/etc/dnsmasq.conf" zusätzlich die Option "tftp-unique-root" eingetragen. Diese bewirkt, dass im Ordner, der unter "tftp-root=" eingetragen ist, ein Unterordner mit der IP-Adresse des Clients gesucht wird. Dieser muss dann die Dateien des boot-Ordners enthalten.


    ergänztes Beispiel von jannes79:

    Code
    1. port=0
    2. dhcp-range=192.168.179.240, 192.168.179.250, 255.255.255.0, 192.168.179.255, 1h
    3. log-dhcp
    4. enable-tftp
    5. tftp-root=/tftpboot
    6. tftp-unique-root
    7. pxe-service=0,"Raspberry Pi Boot"


    ...vielleicht hilft das jemandem weiter. Hab selbst lange nach der Möglichkeit gesucht, mehrere Pi von einem Server zu starten. Damit klappt es in meinem Fall recht gut. Es setzt natürlich voraus, dass der DHCP-Server den Hostnamen liefert (1.) und eine Feste IP-Adresse (2.). Das sollte aber auch in Heimnetzen kein Problem sein.

    Edited once, last by be.re ().


  • Diese Konfig habe ich auch, allerdings greife ich nicht mit dem Pi auf das NAS zu, da im Moment nicht nötig bei mir.


    Ich nutze eine Synology DS215j und habe ebenfalls als DHCP Server meine Fritzbox laufen.


    Da PXE ja einen "anderen" DHCP Server braucht, als die FritzBox bieten kann (die unterstützt kein PXE), habe ich auf meinem NAS eben das zitierte dnsmasq als "App" (Paket) laufen, funktioniert einwandfrei und ich wüsste nicht, warum man das vermeiden sollte.


    Bei mir läuft das NAS auch nicht 24h, womit dieses als DHCP Server deshalb auch nicht in Frage kommt.


    Das Ganze hat mich jetzt aber auch wieder angeheizt, ich muss mal darüber nachdenken.


    Den Pi hatte ich vor langer Zeit auch selbst mal als PXE Server betrieben, ebenfalls mit dnsmasq, allerdings wurde der aus Geschwindigkeitsgründen nach dem Erwerb der Synology DiskStation abgelöst.


    Nachtrag:
    Da war sie wieder, die feste IP Adresse .... ;):D


    Wer sich diesen Krampf sparen möchte, setzt die IP einfach im Router fest (immer die selbe IP vergeben).
    Man kann diese pseudofeste IP auch selbst aus dem DHCP Bereich des Routers vorgeben, sofern sie noch frei ist.
    Vorteil: ich muss nix an den Pis ändern, sondern nur im Router einen Haken setzen je Pi.
    Aber das nur am Rande.

    ;) Gruß Outi :D
    PIs: 2x Pi B (Rente) / 1x Pi B+ (Rente) / 1x Pi 2 B (Tests) / 2x Pi 3 B (RaspberryMatic / Repetier Server) / 2x Pi Zero 1.2 (J. Lite)
    2x Pi Zero 1.3 (J. Lite) / 2x Pi Zero W 1.1 (Stretch) / 1x Pi 3 B+ (Buster) / 1x Pi 4 B 4GB (Buster)
    Platinen: Sense HAT / RPI-RF-MOD / PiFi DAC+ V2.0 / TV HAT

    Edited once, last by Outlaw ().

  • Hi zusammen,
    versuche mich grade auch an diesem Thema da ich mir inzwischen schon die 6te microSD zerschossen habe...


    Mit Netzwerken bin ich recht gut vertraut, jedoch verwirren mich die zu findenden (bestimmt gut gemeinten) Tutorials.
    Eine Stichpunktartige auflistung der Notwendigen Schritte mit kurzer Erklärung wieso welcher schritt getätigt werden muss würde mich viiiieel weiter bringen als diese "Copy&Paste-Tutorials".


    Wäre einer der es schon geschaft hat seinen RasPi3 von einer SynoNAS zu booten so lieb mir eine Auflistung zu erstellen, grob reicht echt völlig!

  • @Dimmi52

    Ich schließe mich an und schiebe das mal wieder hoch!

    Wenn das nicht erwünscht ist mache ich einen neuen Fred auf, müsst nur bescheid sagen!



    Ich habe eine FritzBox als DHCP und möchte eine Synology DS115 als PXE Server verwenden.


    Auf dem Pi habe ich gemacht:

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


    Dann neu gebootet und:

    vcgencmd otp_dump | grep 17:

    Eingegeben, das gibt dann 3020000a aus.


    Als letztes habe ich

    sudo nano /boot/config.txt

    eingegeben und die Zeile program_usb_boot_mode=1 gelöscht.


    In der NAS habe ich einen gemeinsamen Ordner erstellt, pxe genannt und ein Image von meinem Pi rein gelegt (Komplette SD-Karte).

    Dann den DHCP Dienst aktiviert, Adressbereiche vergeben und unter DHCP-Clients die MAC von meinem Pi eingetragen.

    Als letztes habe ich im Reiter PXE ein Häkchen gemacht, Lokaler TFTP-Server ausgewählt und bei Bootloader mein Image angegeben (Komplette SD-Karte).


    Wenn ich die SD-Karte entferne und das Teil neu Boote bekommt es die Richtige Adresse zugewiesen; sonst geht nix :(

    Ich denke, dass ich ein config file (Bootloader-Datei) brauche?



    PS:

    Ja ich bin so doof! Wo bekomme ich die "cmdline.txt" (erster Beitrag) her? Und wo muss die hin?

    Edited once, last by derHotze ().

  • Code
    1. /boot/cmdline.txt
  • Danke!


    Dass heisst: Die passe ich an und mache erst dann aus der SD-Karte das Image öffne das Image und ändere diese Datei?


    Das versuche ich morgen mal ;) n8

  • Die Datei kannst du auch direkt auf dem Pi bearbeiten.

  • Aber da ist doch garkeine SD-Karte drin?


    Ich habe die Karte wieder in den Kartenleser getan und die Datei bearbeitet.

    Die Zeile schaut nun so aus:

    Code
    1. dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=/dev/nfs rootfstype=nfs nfsroot=192.168.3.42/volume1/pxe rw ip=192.168.3.11 elevator=deadline fsck.repair=yes rootwait quiet splash plymouth.ignore-serial-consoles

    Muss die Karte wieder rein (Ja, ich bin so doof)?

    Server IP: 192.168.3.42

    Rapberry IP:192.168.3.11

    Edited once, last by derHotze ().

  • Hmm, ist irgendwie an mir vorbeigegangen, dass es hier um Network-Boot geht, aber damit hab' ich nichts am Hut... Die Datei bearbeitest du dann eben dort, vo wo auch immer gebootet wird ;)

  • Image von meinem Pi rein
    habe eine FritzBox als DHCP

    Mach mal bitte einen neuen thread auf mit deiner Frage, so sehen es mehr.Folgendes schonmal vorab. Der DHCP Server der Fritte ist imho zum PXE Boot ungeeignet., zumindest hab ich das so noch in Erinnerung. Und was heißt „Image von meinem Pi rein“?


    Grüße, STF

  • Rein in das pxe Verzeichnis.

    Zum testen habe ich den DHCP der FritzBox aus gemacht ;)

    Geht trotzdem nicht...


    Ok, neuer Fred, aber erst wieder morgen...

  • Rein in das pxe Verzeichnis.

    Also wenn das heißt, dass Du ein Image der Karte (dd, Win32DiskImager oder gleichwertig) in das Verzeichnis kopiert hast, dann geht das nicht. So zumindest nicht. Aber so...