Root über NFS mounten (gelöst, mit HOWTO)

  • Um meine Frage selber zu beantworten - es geht ganz einfach!


    Falls es jemanden interessiert, hier ein kleines HOWTO:


    Auf dem Sevrer:


    Code
    - lege auf dem NFS-Server ein Verzeichnis an, z.B /home/Clients/hawk-10.2
    - sorge dafür, daß dieses Verzeichnis für den Client r/w exportiert wird (/etc/exports)


    Auf dem Client:



    Beim nächsten Booten dann die neu angelegte Boot-Variante auswählen und schon mountet er das Root-Filesystem vom Server.


    Ab hier braucht auf dem Client außer dem /boot Verzeichnis nichts mehr zu sein. Da dies nur einige wenige MB sind kann man das auch in einem Flash-Drive unterbringen.


    Vorteile gegenüber "Remote-Boot":
    - es wird keine Remote-Boot fähige Netzwerkkarte benötigt (meine hier kann z.B. Linux nicht über's Netz booten)
    - auf dem Server wird kein tftpboot etc. benötigt - alles geht mit ganz normalem NFS
    - nach einem Kernel-Update muß kein neuer Kernel übersetzt werden - es genügt den "mkinitrd" Aufruf erneut auszuführen und das /boot-Verzeichnis auf die lokale Platte zu kopieren
    - man muß sich keinerlei Gedanken über den benötigten Netzwerkkartentreiber machen, da mkinitrd das alles richtig berücksichtigt


    Das ist jetzt für die Leute, die ständig "Kernel backen" nichts besonderes, aber ich wollte halt den Standard-Kernel der Distribution verwenden und mit möglichst wenig Aufwand das Root-FS auf dem NFS-Server haben, damit die lokale Platte abgeschaltet werden kann.


    Gruß
    Klaus

  • hi!


    nach langem suchen habe ich endlich zufällig diesen thread gefunden der genau meine problemstellung behandelt. bisher dachte ich, ich muss meinen kernel neu compilieren um das root verzeichnis per nfs nachzuladen. aber es scheint ein neuerstellen der initrd zu genügen. da ich aber debian auf meinem system benutze kann ich den befehl "mkinitrd -I eth0" nicht auführen. kennt jemand ein verleichbares tool wie mkinitrd für debian?


    danke schon mal!
    NEty

    • server: ctvdr7

    • client: ctvdr61; Etch - 2.6.18-5; e-tobi - VDR 1.4.7; P3 0,5Ghz; Nexus-S-2.2

    • client: 2x; ctvdr61; Etch - 2.6.18-5; e-tobi - VDR 1.4.7; P3 0,5Ghz; DXR3

    • client: smt7020; MLD 2.0

    2 Mal editiert, zuletzt von Nety ()

  • danke für die fixe antwort!


    nun fehlt mir nur noch der parameter. mir ist nicht klar was "-I eth0" überhaupt bezweckt, also tu ich mir da schwer einen vergleichbaren unter update-initramfs zu finden :/. kannst du mir da auch helfen?


    danke!

    • server: ctvdr7

    • client: ctvdr61; Etch - 2.6.18-5; e-tobi - VDR 1.4.7; P3 0,5Ghz; Nexus-S-2.2

    • client: 2x; ctvdr61; Etch - 2.6.18-5; e-tobi - VDR 1.4.7; P3 0,5Ghz; DXR3

    • client: smt7020; MLD 2.0

  • Zitat

    mir ist nicht klar was "-I eth0" überhaupt bezweckt,


    das braucht's jetzt nicht mehr. Die initrd macht das inzwischen dynamisch, abhaengig von den Kernel args. Ein 'update-initramfs' hat bei mir ausgereicht. Damit kann ich z.B. von Platte oder diskless booten - funktioniert immer.

  • hi!


    update-initramfs hat soweit super geklappt. woran es jetzt noch hackt ist die statische ip die ich mittels grub übergeben möchte. den eintrag in der menu.lst habe ich mir in etwa so vorgestellt.

    Code
    #/boot/grub/menu.lst
    title           Debian GNU/Linux, kernel 2.6.18-5-486, NFS and Networkdriver support
    root            (hd0,0)
    kernel          /vmlinuz-2.6.18-5-486 network=static device=eth0 ip=192.168.1.13 netmask=255.255.255.0 root=/dev/nfs rw nfsroot=192.168.1.4:/fileserver/root_ctvdr6_kueche vga=0x31a splash=silent showopts
    initrd          /initrd.img-2.6.18-5-486
    savedefault


    leider hängt sich mit diesen einstellungen der kernel auf. die nfs freigabe habe ich bereits getesetet und das sollte soweit klappen. hat jemand einen tipp was ich an meiner menu.lst noch verändern muss? habe jetzt schon einiges ausprobiert und gegoogelt, aber leider hat bis jetzt noch nichts funktioniert. muss ich eigentlich grub nocheinmal neu übersezten oder beherbergt grub der ctvdr6.1 die netboot optionen? nicht dass ich am grundliegenden scheitere.


    danke!
    NEty

    • server: ctvdr7

    • client: ctvdr61; Etch - 2.6.18-5; e-tobi - VDR 1.4.7; P3 0,5Ghz; Nexus-S-2.2

    • client: 2x; ctvdr61; Etch - 2.6.18-5; e-tobi - VDR 1.4.7; P3 0,5Ghz; DXR3

    • client: smt7020; MLD 2.0

  • sinngemäß steht soetwas wie

    Code
    ifconfig 192.168.1.13 eht0 device not found

    wenn ich jedoch nur mit folgenden optionen boote

    Code
    kernel /boot/vmlinuz root=/dev/nfs rw nfsroot=192.168.1.1:/home/Clients/hawk-10.2 vga=0x31a resume=/dev/hda2 splash=silent showopts

    findet er das device eht0, scheitert aber an dem nicht vorhandenen dhcp server.
    wenn ich wieder zuhause bin werde ich die fehlermeldung genau posten.
    danke schon mal!
    NEty

    • server: ctvdr7

    • client: ctvdr61; Etch - 2.6.18-5; e-tobi - VDR 1.4.7; P3 0,5Ghz; Nexus-S-2.2

    • client: 2x; ctvdr61; Etch - 2.6.18-5; e-tobi - VDR 1.4.7; P3 0,5Ghz; DXR3

    • client: smt7020; MLD 2.0

  • hallo!


    hab jetzt mal die fehlermeldungen abgetippt:
    beim eintrag in der menu.lst


    Code
    title           Debian GNU/Linux, kernel 2.6.18-5-486, NFS and Networkdriver support
    root            (hd0,0)
    kernel          /vmlinuz-2.6.18-5-486 network=static device=eth0 ip=192.168.1.13 netmask=255.255.255.0 root=/dev/nfs rw nfsroot=192.168.1.4:/fileserver/root_ctvdr6_kueche vga=0x31a splash=silent showopts
    initrd          /initrd.img-2.6.18-5-486
    savedefault


    bekomme ich folgendes:

    Code
    Begin: Mounting root file system... ...
    Begin: Running /scrips/nfs-top ...
    Done.
    ipconfig: 192.168.1.13 SIOCGIFINDEX: No such device
    ipconfig: no devices to configure
    /init: .: 152: Can't open /tmp/net-eth0.conf
    Kernel panic - not syncing: Attempted to kill init!


    mit diesen beiden

    Code
    title  Network
    ifconfig --server=192.168.1.4 --gateway=192.168.1.100 --mask=255.255.255.0 --address=192.168.1.13
    root   (hd0,0)
    kernel          /vmlinuz-2.6.18-5-486 root=/dev/nfs rw nfsroot=192.168.1.4:/fileserver/root_ctvdr6_kueche vga=0x31a splash=silent showopts
    initrd          /initrd.img-2.6.18-5-486
    savedefault
    Code
    title  Network
    root   (hd0,0)
    kernel          /vmlinuz-2.6.18-5-486 root=/dev/nfs rw nfsroot=192.168.1.4:/fileserver/root_ctvdr6_kueche vga=0x31a splash=silent showopts
    initrd          /initrd.img-2.6.18-5-486
    savedefault


    schaut das ergebnis dann so aus:

    Code
    Begin: Mounting root file system... ...
    Begin: Running /scrips/nfs-top ...
    Done.
    IP-Config: eth0 hardware address 00:02:b3:ce:a9:df mtu 1500 DCCP RARP
    e100: eth0: e100_watchdog: link up, 100Mbps, full-duplex


    grüße,
    NEty

    • server: ctvdr7

    • client: ctvdr61; Etch - 2.6.18-5; e-tobi - VDR 1.4.7; P3 0,5Ghz; Nexus-S-2.2

    • client: 2x; ctvdr61; Etch - 2.6.18-5; e-tobi - VDR 1.4.7; P3 0,5Ghz; DXR3

    • client: smt7020; MLD 2.0

  • Zitat

    Originally posted by Nety

    Code
    title           Debian GNU/Linux, kernel 2.6.18-5-486, NFS and Networkdriver support
    root            (hd0,0)
    kernel          /vmlinuz-2.6.18-5-486 network=static device=eth0 ip=192.168.1.13 netmask=255.255.255.0 root=/dev/nfs rw nfsroot=192.168.1.4:/fileserver/root_ctvdr6_kueche vga=0x31a splash=silent showopts
    initrd          /initrd.img-2.6.18-5-486
    savedefault


    bekomme ich folgendes:

    Code
    Begin: Mounting root file system... ...
    Begin: Running /scrips/nfs-top ...
    Done.
    ipconfig: 192.168.1.13 SIOCGIFINDEX: No such device
    ipconfig: no devices to configure
    /init: .: 152: Can't open /tmp/net-eth0.conf
    Kernel panic - not syncing: Attempted to kill init!


    ich denke mal diese Syntax ist veraltet und deswegen geht es nicht. Aktuelle Syntax siehe:


    http://www.mjmwired.net/kernel/Documentation/nfsroot.txt


    Zitat

    mit diesen beiden

    Code
    title  Network
    ifconfig --server=192.168.1.4 --gateway=192.168.1.100 --mask=255.255.255.0 --address=192.168.1.13
    root   (hd0,0)
    kernel          /vmlinuz-2.6.18-5-486 root=/dev/nfs rw nfsroot=192.168.1.4:/fileserver/root_ctvdr6_kueche vga=0x31a splash=silent showopts
    initrd          /initrd.img-2.6.18-5-486
    savedefault


    das geht nicht da es den eth-Treiber im grub benoetigt. Ich nehme mal an, du hast den nicht extra reincompiliert?


    Zitat
    Code
    title  Network
    root   (hd0,0)
    kernel          /vmlinuz-2.6.18-5-486 root=/dev/nfs rw nfsroot=192.168.1.4:/fileserver/root_ctvdr6_kueche vga=0x31a splash=silent showopts
    initrd          /initrd.img-2.6.18-5-486
    savedefault


    das ist schon fast richtig. Aber es muss (laut Doku oben) in deinem Fall genauer so aussehen:


    Code
    title  Network
    root   (hd0,0)
    # ip=<client-ip>:<server-ip>:<gw-ip>:<netmask>:<hostname>:<device>:<autoconf>
    kernel /vmlinuz-2.6.18-5-486 ip=192.168.1.13:192.168.1.4:<gw-ip>:255.255.255.0:<hostname>::none root=/dev/nfs rw nfsroot=192.168.1.4:/fileserver/root_ctvdr6_kueche vga=0x31a splash=silent showopts
    initrd /initrd.img-2.6.18-5-486
    savedefault


    <hostname> und <gw-ip> sind noch zu ergaenzen. <netmask> ok? Du kannst die Bootmeldungen mit ^S anhalten und nachkontrollieren, ob die Ausgaben von IP-Config deine Kernel-Commandline widerspiegeln.
    Ich habe es gerade mal testweise auf meiner Diskless- Kiste getestet. Funktioniert und DHCP bleibt unangetastet.

  • hi!


    ich habe deinen menu.lst eintrag nur noch leicht modifizieren müssen und siehe da, es hat geklappt :). nun schauts so aus:

    Code
    title           Debian GNU/Linux, kernel 2.6.18-5-486, nfsroot
    root            (hd0,0)
    kernel          /vmlinuz-2.6.18-5-486 ip=192.168.1.13:192.168.1.4::255.255.255.0:::none root=/dev/nfs rw nfsroot=192.168.1.4:/netboot/root_ctvdr61_niko vga=0x31a splash=silent showopts
    initrd          /initrd.img-2.6.18-5-486
    savedefault

    danke für die schnelle und tolle hilfe! hatte ich schon lange nicht mehr.


    liebe grüße,
    NEty

    • server: ctvdr7

    • client: ctvdr61; Etch - 2.6.18-5; e-tobi - VDR 1.4.7; P3 0,5Ghz; Nexus-S-2.2

    • client: 2x; ctvdr61; Etch - 2.6.18-5; e-tobi - VDR 1.4.7; P3 0,5Ghz; DXR3

    • client: smt7020; MLD 2.0

  • Hallo,


    muss der Kernel ein Besonderer sein mit nfs-boot drin, oder kann es ein standard sein?


    meine config sieht so auf:

    Code
    title           Debian GNU/Linux, kernel 2.6.21.7
    root            (hd0,0)
    kernel          /vmlinuz-2.6.21.7 root=/dev/nfs rw nfsroot=192.168.179.202:/srv/nfs-root/smt-wohnzimmer
    initrd          /initrd.img-2.6.21.7
    savedefault


    Damit fängt er auch an zu booten, aber dann kommt es zu dieser Fehlermeldung

    Code
    cannot open root device "nfs"
    or unknown-block
    Please append a correct "root=" boot option
    Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block


    Habe ich da noch was falsch gemacht?


    muss die /etc/fstab noch angepasst werden?

    MfG
    Der Brumm-Baer
    --------------------------------------------
    srv-vdr: HW: Dell T20 (Xeon) - SW: Openmediavault Erasmus, Frodo-VDR als Docker Container, EPGD als Docker Container


    med-og: HW: - SW: Libreelec
    med-sz: HW: SilverStone Milo ML03, BeQuiet SFX-300W, Asrock H61M-ITX, Intel G530, Asus G210 Silent, Asrock Smart Remote, 8GB USB-Stick - SW: Libereelec
    med-eg: HW: SilverStone Milo ML03, BeQuiet SFX-300W, Asrock H61M-ITX, Intel G530, Asus G210 Silent, Asrock Smart Remote, 8GB USB-Stick - SW: MLD 5.1

  • @Morone


    Danke für den Hinweis :lehrer1


    Konnte jetzt von nfs booten, aber:


    Wenn ich einen reboot des Rechners mache,
    wird die Root-Partition am File-Server nicht wieder ausgehangen,
    was dazu führt, dass es nicht wieder eingehangen werden kann
    beim Neustart. Hat da noch jemande einen Tip für mich?

    MfG
    Der Brumm-Baer
    --------------------------------------------
    srv-vdr: HW: Dell T20 (Xeon) - SW: Openmediavault Erasmus, Frodo-VDR als Docker Container, EPGD als Docker Container


    med-og: HW: - SW: Libreelec
    med-sz: HW: SilverStone Milo ML03, BeQuiet SFX-300W, Asrock H61M-ITX, Intel G530, Asus G210 Silent, Asrock Smart Remote, 8GB USB-Stick - SW: Libereelec
    med-eg: HW: SilverStone Milo ML03, BeQuiet SFX-300W, Asrock H61M-ITX, Intel G530, Asus G210 Silent, Asrock Smart Remote, 8GB USB-Stick - SW: MLD 5.1

  • Ich bin immer noch nicht weiter mit dem umount Problem


    die menu.lst sieht folgendermaßen aus:


      title Debian GNU/Linux, kernel 2.6.21.7
      root (hd0,0)
      kernel /vmlinuz-2.6.21.7 ip=dhcp root=/dev/nfs rw nfsroot=192.168.xxx.202:/srv/nfs-root/smt-wohnzimmer
      savedefault


    meine fstab auf dem nfsroot sieht folgendermaßen aus:


      # /etc/fstab: static file system information.
      #
      # <file system> <mount point> <type> <options> <dump> <pass>
      proc /proc proc defaults 0 0
      #/dev/nfs / nfs auto,user,rsize=8192,wsize=8192 0 0
      #192.168.xxx.202:/srv/nfs-root/smt-wohnzimmer / nfs auto,user,rsize=8192,wsize=8192 0 0
      #/srv/hda3 / ext3 defaults,errors=remount-ro 0 1
      #/dev/hda2 none swap sw 0 0
      /dev/hda1 /boot ext3 defaults 0 2
      /dev/hdc /media/cdrom0 udf,iso9660 user,noauto 0 0
      192.168.xxx.202:/srv/vdrvideo /srv/vdrvideo nfs auto,user,rsize=8192,wsize=8192 0 0
      192.168.xxx.202:/srv/musik /srv/musik nfs auto,user,rsize=8192,wsize=8192 0 0
      192.168.xxx.202:/srv/bilder /srv/bilder nfs auto,user,rsize=8192,wsize=8192 0 0


    Wie ihr seht habe ich schon einiges Probiert, aber jede Zeile für ein root-Verzeichnis in der fstab sorgt dafür das der client nicht mehr hochkommt.


    Der log vom nfs-Server sieht so aus.


      Feb 25 20:17:37 debian-file mountd[1204]: authenticated mount request from 192.168.xxx.144:862 for /srv/nfs-root/smt-wohnzimmer (/srv/nfs-root/smt-wohnzimmer)
      Feb 25 20:17:53 debian-file mountd[1204]: authenticated mount request from 192.168.xxx.144:792 for /srv/vdrvideo (/srv/vdrvideo)
      Feb 25 20:17:53 debian-file mountd[1204]: authenticated mount request from 192.168.xxx.144:796 for /srv/musik (/srv/musik)
      Feb 25 20:17:53 debian-file mountd[1204]: authenticated mount request from 192.168.xxx.144:800 for /srv/bilder (/srv/bilder)
      Feb 25 20:20:49 debian-file mountd[1204]: authenticated unmount request from 192.168.xxx.144:915 for /srv/bilder (/srv/bilder)
      Feb 25 20:20:49 debian-file mountd[1204]: authenticated unmount request from 192.168.xxx.144:917 for /srv/musik (/srv/musik)
      Feb 25 20:20:49 debian-file mountd[1204]: authenticated unmount request from 192.168.xxx.144:919 for /srv/vdrvideo (/srv/vdrvideo)


    Wie man sieht, kriegt das nfs-root keinen umount und ist somit erstmal blockiert. Ein reboot ist also unmöglich. Was muss ich machen damit auch das nfs-root ein umount bekommt und somit freigegeben wird?


    [edit]
    df -h gibt folgendes aus

    MfG
    Der Brumm-Baer
    --------------------------------------------
    srv-vdr: HW: Dell T20 (Xeon) - SW: Openmediavault Erasmus, Frodo-VDR als Docker Container, EPGD als Docker Container


    med-og: HW: - SW: Libreelec
    med-sz: HW: SilverStone Milo ML03, BeQuiet SFX-300W, Asrock H61M-ITX, Intel G530, Asus G210 Silent, Asrock Smart Remote, 8GB USB-Stick - SW: Libereelec
    med-eg: HW: SilverStone Milo ML03, BeQuiet SFX-300W, Asrock H61M-ITX, Intel G530, Asus G210 Silent, Asrock Smart Remote, 8GB USB-Stick - SW: MLD 5.1

    2 Mal editiert, zuletzt von der-brumm-baer ()

  • Zitat

    Original von der-brumm-baer
    Wie ihr seht habe ich schon einiges Probiert, aber jede Zeile für ein root-Verzeichnis in der fstab sorgt dafür das der client nicht mehr hochkommt.


    Ich mounte auf dem Client das root Filesystem mit

    Code
    server:/netboot/nfsroot/zaphod_etch     /                       nfs     defaults,hard,intr,rsize=65536,wsize=65536 0 0

    Einen "unmount request" sehe ich auf dem Server zwar dafür nicht, aber ich kann problemlos rebooten.

  • Hallo, kilroy


    Ich hab es jetzt mal mit den von dir geposteten nfs optionen probiert


    Zitat

    Original von kilroy


    Ich mounte auf dem Client das root Filesystem mit

    Code
    server:/netboot/nfsroot/zaphod_etch     /                       nfs     defaults,hard,intr,rsize=65536,wsize=65536 0 0

    Einen "unmount request" sehe ich auf dem Server zwar dafür nicht, aber ich kann problemlos rebooten.



    Auch damit kommt der Client dann nicht hoch.


    Er scheint nur ohne root einträge in der fstab hochzukommen.


    Gibt es denn ein Möglichkeit, auf dem nfs-server, die Freigabe wieder frei zu geben, so ala:
    Wenn ping auf Client tot. setze lock der Freigabe zurück?

    MfG
    Der Brumm-Baer
    --------------------------------------------
    srv-vdr: HW: Dell T20 (Xeon) - SW: Openmediavault Erasmus, Frodo-VDR als Docker Container, EPGD als Docker Container


    med-og: HW: - SW: Libreelec
    med-sz: HW: SilverStone Milo ML03, BeQuiet SFX-300W, Asrock H61M-ITX, Intel G530, Asus G210 Silent, Asrock Smart Remote, 8GB USB-Stick - SW: Libereelec
    med-eg: HW: SilverStone Milo ML03, BeQuiet SFX-300W, Asrock H61M-ITX, Intel G530, Asus G210 Silent, Asrock Smart Remote, 8GB USB-Stick - SW: MLD 5.1

  • Mit welchen Optionen läuft denn Dein nfsd auf dem Server? Hier:


    Code
    marvin:~$ cat /etc/default/nfs-kernel-server
    # Number of servers to start up
    #RPCNFSDCOUNT=8
    RPCNFSDCOUNT=16
    
    
    # Options for rpc.mountd
    RPCMOUNTDOPTS="--no-nfs-version 2"

    Vielleicht hilft auch ein Blick in "man rpc.mountd".

  • ich hab es fast hinbekommen, aber beim Booten hängt der Client:



    Die Freigabe auf dem Server kann ich ganz normal mounten, wenn ich das System normal hochfahre.


    Hier mal meine menu.lst:


    Code
    title  Network
    root   (hd0,0)
    kernel          /boot/vmlinuz-2.6.25 ip=dhcp root=/dev/nfs rw nfsroot=192.168.1.5:/mnt/HD_a2/Backup/Linux/VDR,v3 vga=791 splash=silent showopts


    Auf dem Server (CH3SNAS) läuft nfsd, also ein Kernel-NFS-Server, Version ist V3.


    Hab ich was übersehen?

    VDR1: Gigabyte B85N * G3420 * 1x2GB DDR3 * Nvidia 1030 * VDR 2.4.0

    VDR-Server: Dell T20 Proxmox * VDR im LXC-Container * V 2.4.0

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!