[Gelöst] MLD5 auf RPI2: root ueber NFS will (oder geht?) nicht ... :-(

  • Hallo zusammen,


    bin gerade dabei, mit einem Raspberry Pi 2 herum zu experimentieren. Nachdem das System problemlos von SD Karte laeuft, wuerde ich gerne root ueber NFS mounten, um eben die SD Karte etwas zu schonen. Der Server laeuft eh ...


    Nun bekomme ich aber beim Booten die Meldung (quiet und splash=quiet habe ich aus /boot/cmdline rausgenommen, um die Meldungen lesen zu koennen), dass der NFS share ein

    Code
    Unknown root device

    ist.


    Der NFS Server laeuft, von meinem Laptop aus kann ich den Share auch problemlos mounten, aber auf dem Pi lande ich in der Busybox der initrd. Wenn ich dort manuell versuche zu mounten bekomme ich die Meldung, dass die Verbindung verweigert wird (connection refused).


    Kann es sein, dass der MLD Kernel kein NFS root device kann? Lt. der config im GIT scheint es einkompiliert zu sein, aber muss ev. die initrd neu gebaut werden oder bin ich einfach nur zu bloed?


    Auf dem Server:

    Code
    root@helos:~# exportfs -v
    <snip>
    /srv/nfsroots 	<world>(rw,async,wdelay,insecure,no_root_squash,no_subtree_check,sec=sys,rw,no_root_squash,no_all_squash)
    </snip>


    cmdline auf Raspberry:

    Code
    root=/dev/nfs rootfstype=nfs nfsroot=192.168.2.100:/srv/nfsroots/mld ip=dhcp nodialog smsc95xx.turbo_mode=N dwc_otg.lpm_enable=0


    Danke + Gruss


    /elle

    Einmal editiert, zuletzt von elle ()

  • Hi,


    ich hab mich bisher noch nicht mit dem thema befasst. Von daher erst mal ein paar Fragen.
    - Kann wirklich der Kernel selber den nfs Mount machen? Ist das also wirklich eine Kernel Funktion, oder übernimmt das üblicherweise die initramfs?
    - Müsste dazu nicht erst einmal das Netzwerk Interface eingerichtet sein?
    - Wenn der Kernel das selbständig kann, müsstest Du in der /boot/config.txt die initramfs Zeile entfernen


    Die initramfs der MLD kann den nfs Mount nicht übernehmen, da diese keine Netzwerk Funktionalität mitbringt.


    Claus

    MLD 5.5 mit vdr 2.6 - lirc yaUSBir - Octopus NET S2 - SCR - XFX GeForce 9300 mit Intel E3200 - 2GB RAM - WD Green 12TB HDD - SanDisk 64GB SSD - Lian Li PC-C37B - Samsung LE40A559
    MLD 5.5 mit vdr 2.4 - Raspberry Pi 3 - rpihddevice
    MLD 5.5 mit Squeeze Play - Raspberry Pi 2 - 32GB SD - 7" Touch TFT

  • https://www.kernel.org/doc/Doc…lesystems/nfs/nfsroot.txt


    Das macht alles das Kernel. Das kann man aber bei u-boot auch über tftp holen.
    Wichtig sind die Parameter für u-boot und das Root Filesystem sollte dann direkt das richtige sein, kein initramfs.
    Und in fstab den root mount anpassen.


    Johns

    Sag mir, wo die Developer sind. Wo sind sie geblieben? . . . . . . . . . . . . . . . . . . . . SoftHdDevice - A software and GPU emulated HD output device plugin.
    Sag mir, wo die Developer sind. Was ist geschehn?


    Client0: Crown CW02 MSI_C847MS-E33 Zotac_GT640_passiv Cine-S2 iMon-MCE / streamdev softhddevice
    Client1: Lian_Li_PC-Q09FB ASRock_H67M-ITX/HT I3-2100 ASUS_ENGT520_passiv / streamdev softhddevice
    Test: Lian_Li_PC-Q09R Asus C60M1-I / streamdev
    Server0: Dockstar TT-S2-3600-USB / streamdev
    Server2: Lian_Li_PC-Q07R Intel_DH61DL G620 WD20EARX 90W PicoPSU Cine-S2+DuoFlex-S2+DuoFlex-CT / streamdev / 22 Watt Verbrauch


  • Hallo Claus,


    wie Johns bereits schrieb, kann der Kernel das selbst; m.W. sollte das aber unabhaengig davon, ob eine initramfs geladen wird oder nicht funktionieren - bin mir da aber nicht sicher.


    Werde das heute abend mal probleren - bin im Moment nicht zu Hause und habe hier keinen Pi, mit dem ich es probieren koennte.


    Waere es eventuell denkbar, einfach zum Test einen anderen Kernel zu verwenden oder hat der MLD Kernel irgendwelche Spezialitaeten eingebaut, sodass MLD mit einem anderen Kernel nicht laufen wuerde?


    Johns - die U-Boot Geschichte brauche ich doch nur, wenn ich auch den Kernel ueber's Netz laden moechte. Den lade ich hier aber nach wie vor von der SD-Karte.


    Danke + Gruss


    /elle

  • Hi,


    wenn Du eine initramfs verwendest, mountet der Kernel das rootfs nicht. Dann muss sich die initramfs da drum kümmern, und die initramfs der MLD kann das nicht.
    Für nen einfachen boot Test, sollte auch nen anderer Kernel gehen. Damit wird dann aber nicht alles funktionieren.


    Claus

    MLD 5.5 mit vdr 2.6 - lirc yaUSBir - Octopus NET S2 - SCR - XFX GeForce 9300 mit Intel E3200 - 2GB RAM - WD Green 12TB HDD - SanDisk 64GB SSD - Lian Li PC-C37B - Samsung LE40A559
    MLD 5.5 mit vdr 2.4 - Raspberry Pi 3 - rpihddevice
    MLD 5.5 mit Squeeze Play - Raspberry Pi 2 - 32GB SD - 7" Touch TFT

  • Hi,


    dann werde ich das heute abend mal probieren und Dich wissen lassen, wie's ausgegangen ist ... :)


    Gruss


    /elle

  • Hi,


    kaum macht man's richtig ...


    Danke! Hat geklappt - nur bin ich mir im Moment gar nicht sicher, ob ich das wirklich will - durch die 100MBit Schnittstelle bootet er deutlich langsamer als von SD Karte - auf der anderen Seite - wann bootet man nen Pi schon?


    Gruss


    /elle

  • Hi elle


    kannst du mal schreiben was du genau gemacht hast?

    Gruß MegaX


  • Hi elle


    kannst du mal schreiben was du genau gemacht hast?


    Hi,


    ich versuch's mal komplett aus dem Gedaechtnis zusammenzuschreiben:

    • MLD lt. Beschreibung auf der Website auf der SD Karte installieren
    • Server: NFS System installieren (da kommt IIRC noch der portmapper und ein oder zwei rpc daemons mit) - die OS Installations eines solchen Servers ist ein eigenes Thema :D

      Code
      Debian: apt-get install nfs-kernel-server


    • Server: Verzeichnis anlegen, auf dem die NFS Root liegen soll - da ich plane, dort auch noch andere abzulegen, habe ich die MLD fuer den PI in ein eigenes Unterverzeichnis unter dem Share gelegt

      Code
      mkdir -p /srv/nfsroots/mld


    • Server: ein share fuer die NFS roots in /etc/exports definieren - der Stern unten bestimmt, welche Clients den Share mounten duerfen

      Code
      /srv/nfsroots *(rw,async,wdelay,insecure,no_root_squash,no_subtree_check,sec=sys,rw,no_root_squash,no_all_squash)


    • Server: ein share in /etc/exports fuer das VDR Aufnahmeverzeichnis definieren - der Stern unten bestimmt, welche Clients den Share mounten duerfen (mein video_dir ist /srv/VDR)

      Code
      /srv/VDR *(rw,no_root_squash,no_subtree_check)


    • Server: die exports neu laden

      Code
      exportfs -rav


    • Client: Mounten des MLD Verzeichnisses im NFS Share nach /mnt2 (auf dem MLD Client ist /mnt in Benutzung):

      Code
      mkdir /mnt2 && mount <ServerIP>:/srv/nfsroots/mld /mnt2


    • Client: Kopieren des Inhalts der Rootpartition auf den Server:

      Code
      rsync -avx / /mnt2 # Das x sorgt dafuer, dass rsync in dem einen Filesystem bleibt, dadurch wird der Inhalt von /dev /sys usw. nicht mitkopiert


    • Client: Unmount des Datenverzeichnisses

      Code
      umount /mnt/data


    • Client: Erstellen des Aufnahmeverzeichnisses bzw. Mountpoints:

      Code
      mkdir /mnt/data/tv


    • Client oder Server: Anpassen der geteilten fstab (nicht die des Servers!!!!) - auskommentieren des bisherigen Eintrags fuer das rootfs und einbinden des Serververzeichnisses; auf dem Server
      Code
      vi /srv/nfsroots/mld/etc/fstab

      auf dem Client

      Code
      vi /mnt2/etc/fstab


      Code
      #UUID=<eine lange UUID>    /    btrfs   errors=remount-ro      0        1
      <ServerIP>:/srv/nfsroots/mld      /      nfs        defaults       0         0
      #UUID=<eine lange UUID>    /mnt/data       nfs       defaults      0       0
      <ServerIP>:/srv/VDR      /      nfs        defaults       0         0


    • Client: Aendern der /boot/cmdline fuer DHCP

      Code
      root=/dev/nfs rootfstype=nfs nfsroot=<ServerIP>:/srv/nfsroots/mld quiet splash=quiet ip=dhcp nodialog smsc95xx.turbo_mode=N dwc_otg.lpm_enable=0


      fuer static IP

      Code
      root=/dev/nfs rootfstype=nfs nfsroot=<ServerIP>:/srv/nfsroots/mld quiet splash=quiet ip=<clientIP>:<serverIP>:<gateway>:<netmask> nodialog smsc95xx.turbo_mode=N dwc_otg.lpm_enable=0


    • Client: Aendern der /boot/config.txt - dort den Eintrag fuer die initramfs entfernen oder mit einem # auskommentieren


    Ich hoffe, ich habe nichts vergessen ... :D


    Ruhig fragen, falls Du Fragen hast - wie gesagt, bin nicht sicher, ob ich alles richtig aus dem Gedaechtnis zusammenbekommen habe...
    Gruss


    /elle

  • Hi,
    nur so als HInweis.
    Ich habe das schon öfter mit verschiedenen Boards gemacht. Eines war das MarS-Board (iMX6). Es hat GB-Ethernet und läuft bezüglich Geschwindigkeit absolut ok über NFS.
    Leider hat den PI nur 100MB :( das bremst schon heftig.

    Grüße, Dieter :)

Jetzt mitmachen!

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