nfs-root und etherwake

  • Hi,


    vielleicht hat ja schon jemand selbiges probiert und weiss wie es geht.


    Ich möchte gerne einen diskless nfs-root client mit meiner SMT7020S realisieren.
    Dieser soll per ehterboot oder netboot starten, die eigene IP, die Serverip und nfs-root Informationen aber selbst schon kennen und vor dem eigentlichen booten den Server (der im s2ram sein könnte) per etherwake (die MAC muss er dafür natürlich auch irgendwo gespeichert haben) aufwecken.


    Hat sowas schonmal jemand probiert (hoffentlich erfolgreich) und kann mir sagen wie man das bewerkstelligt?



    Leider werde ich im Netz zu diesem Thema irgendwie nicht fündig (alle Links die ich da finde beschreiben nur die falsche etherwake Richtung - nicht der Server wird geweckt sondern der Client).


    MfG,
    Norbert

    Server: Athlon II X2 250 - Asus M3N-H HDMI - 2x1GB RAM - 3TB HDDs -
    1 x Digital Devices Cine S2 V6 DVB-S2 (SD Sender im Highband funktionieren mit der Karte nach wie vor unter Linux nicht, unter Windows schon)
    3 x Nova Budget (die ich eigentlich durch die Cine S2 mit Erweiterungsmodul ersetzen wollte, leider aber für die SD Sender immer noch brauche)
    mit yavdr 0.4.0

  • Zitat

    Dieser soll per ehterboot oder netboot starten, die eigene IP, die Serverip und nfs-root Informationen aber selbst schon kennen und vor dem eigentlichen booten den Server (der im s2ram sein könnte)


    diese Parameter kannst du z.B. beim 'mkelf-linux' hart ins combined image nehmen (siehe 'man mkelf-linux'). ABer ich habe es inzwischen bei mir so geloest, dass alles ueber DHCP laeuft. Also mit Parameter


    Code
    mkelf-linux '--append=root=/dev/nfs ip=dhcp ....'


    das funktioniert super, da spaetere Aenderungen am Netz nur im DHCP Server gemacht werden muessen.


    Zitat

    per etherwake (die MAC muss er dafür natürlich auch irgendwo gespeichert haben) aufwecken.


    genau diese Variante hat mir auch schon mal vorgeschwebt. Ich habe es jetzt aber IMHO besser geloest. Dazu habe ich auf meinem zentralen Router (der ist ja permanent online) nen Cronjob laufen, der jede Minute alle Boot/Shutdown Bedingungen fuer den Video-Server abprueft und dann diesen mit 'etherwake' oder 'init 0' steuert.


    Diese Loesung ist IMHO flexibler als der 'etherwake' direkt im Client, weil ein (zentrales) Script auf dem Router nen besseren Gesamtueberblick als die (dezentralen) Clients hat.


  • Die idee scheitert bei mir aber leider an der entscheidenden Stelle ;)
    a) Mein DHCP-Server ist mein Server
    b) kann ich das nicht auf meinen Router oder WLAN AP abwälzen, da dort die DHCP funktionen nur minimal Konfigurierbar sind. So kann ich z.B. keine Festzuordnung von einer Mac auf eine IP machen oder unterschiedliche weitere DHCP Parameter setzen.
    Das unterstützt leider weder der DLS-Router (Arcor Speedmodem 50Z), noch der WAP54G von Linksys (leider ist openwrt da noch work in progress).

    Server: Athlon II X2 250 - Asus M3N-H HDMI - 2x1GB RAM - 3TB HDDs -
    1 x Digital Devices Cine S2 V6 DVB-S2 (SD Sender im Highband funktionieren mit der Karte nach wie vor unter Linux nicht, unter Windows schon)
    3 x Nova Budget (die ich eigentlich durch die Cine S2 mit Erweiterungsmodul ersetzen wollte, leider aber für die SD Sender immer noch brauche)
    mit yavdr 0.4.0

  • Zitat

    Die idee scheitert bei mir aber leider an der entscheidenden Stelle....


    ok, schade.


    Wie/ob es geht vom diskless-Client direkt nen etherwake auf den Server zu machen wuerde mich auch interessieren. Vermutlich muss man das selber implementieren.


    Ich habe zum Thema auch noch nichts gefunden. Darum eben meine Ersatzloesung.

  • Ich hab grad keinen Zugriff auf meinen Server, aber imho geht der WOL konfigurierbar entweder ueber magic packet, oder ueber IP, oder auch ueber "irgendeine aktivitaet auf dem kabel". das koennte dann ja schon dein DHCP-request sein, der den server aufweckt.

    VDR: ASUS AT3ION-T, 2GB, Satix S2 Dual, 1TB 2.5", yavdr 0.4
    Server: Intel DH67CF, Pentium G620, 8GB, 2x1000GB 2.5" Raid1, WLAN, Ubuntu 12.04 @22W
    TV: Panasonic P50G30

    Einmal editiert, zuletzt von andreash ()

  • Um den Server zu Wecken muesstest du von einer Ramdisk booten (initrd), diese muss dann den Server wecken und danach einen Moment warten, bis sie das Root-FS per NFS mountet...

    VDR1: Pentium III 500MHz, TTbudget+FF2.1, 448 MB RAM, Slackware 10.2 mit Kernel 2.6.15 und VDR 1.4.7 als diskless recording&streaming server
    VDR2: Scenic XS PIII 733MHz, Hauppauge DVB-S 1.3+Skystar2, 512 MB RAM, Slackware 10.2 mit Kernel 2.6.15 und VDR 1.4.7, diskless
    VDR3: Samsung SMT-7020s, Slackware 10.2 mit Kernel 2.6.15 und VDR 1.4.7, diskless

    Einmal editiert, zuletzt von MHi ()

  • Zitat

    Original von MHi
    Um den Server zu Wecken muesstest du von einer Ramdisk booten (initrd), diese muss dann den Server wecken und danach einen Moment warten, bis sie das Root-FS per NFS mountet...


    ;) Wie gut, dass ich mich noch nie mit initrd beschäftigt habe ;)
    Ich hatte irgendwie gehofft es gäbe die Lösung schon irgendwo als Howto.

    Server: Athlon II X2 250 - Asus M3N-H HDMI - 2x1GB RAM - 3TB HDDs -
    1 x Digital Devices Cine S2 V6 DVB-S2 (SD Sender im Highband funktionieren mit der Karte nach wie vor unter Linux nicht, unter Windows schon)
    3 x Nova Budget (die ich eigentlich durch die Cine S2 mit Erweiterungsmodul ersetzen wollte, leider aber für die SD Sender immer noch brauche)
    mit yavdr 0.4.0

  • Zitat

    Original von sparkie



    Ich habe zum Thema auch noch nichts gefunden. Darum eben meine Ersatzloesung.


    Was benutzt du denn als router?
    Vielleicht überlege ich mir dann diese Lösung zu adaptieren ;)

    Server: Athlon II X2 250 - Asus M3N-H HDMI - 2x1GB RAM - 3TB HDDs -
    1 x Digital Devices Cine S2 V6 DVB-S2 (SD Sender im Highband funktionieren mit der Karte nach wie vor unter Linux nicht, unter Windows schon)
    3 x Nova Budget (die ich eigentlich durch die Cine S2 mit Erweiterungsmodul ersetzen wollte, leider aber für die SD Sender immer noch brauche)
    mit yavdr 0.4.0

  • Zitat

    Ich hatte irgendwie gehofft es gäbe die Lösung schon irgendwo als Howto.


    das ist aber nicht so schlimm.


    Modifizieren der Ramdisk geht grundsaetzlich recht einfach:

    Code
    mkdir /tmp/RAMD
    cd /tmp/RAMD
    gunzip < /boot/initrd.img-2.6.22-2-686 | cpio -idv
    vi init # oder sonst was
    find . | cpio --quiet --dereference -o -H newc | gzip -9 > /boot/initrd.img-2.6.22-2-686
  • Zitat

    Originally posted by Egalus


    Was benutzt du denn als router?
    Vielleicht überlege ich mir dann diese Lösung zu adaptieren ;)


    naja, ich habe mir damals ueberlegt, ob ich eine der gaengigen Linux Spezial-Routerloesungen mit minimalem Stromverbrauch zusammenbasteln soll.


    Aber am Ende habe ich mir dann mit einem Pundit ID3 Barebone + DFE-580TX + Fritzcard!PCI einen sehr flexiblen Router/Firewall gebaut. Mit 5 Ethernetports + ISDN Fallback. Der braucht laut diesem Messgeraet ca. 40W.


    Es laeuft dafuer halt nen minimalisiertes Etch (auf CF Card) mit seinen ganzen Vorteilen drauf. Das wiegt den groesseren STromverbrauch wieder auf :)

  • Zitat

    Original von sparkie


    das ist aber nicht so schlimm.


    Modifizieren der Ramdisk geht grundsaetzlich recht einfach:

    Code
    mkdir /tmp/RAMD
    cd /tmp/RAMD
    gunzip < /boot/initrd.img-2.6.22-2-686 | cpio -idv
    vi init # oder sonst was
    find . | cpio --quiet --dereference -o -H newc | gzip -9 > /boot/initrd.img-2.6.22-2-686


    Nur, wenn man überhaupt eine hat geht das modifizieren recht einfach ;)
    Nur brauchte ich bisher nie eine für meine selbstgebauten Kernel.

    Server: Athlon II X2 250 - Asus M3N-H HDMI - 2x1GB RAM - 3TB HDDs -
    1 x Digital Devices Cine S2 V6 DVB-S2 (SD Sender im Highband funktionieren mit der Karte nach wie vor unter Linux nicht, unter Windows schon)
    3 x Nova Budget (die ich eigentlich durch die Cine S2 mit Erweiterungsmodul ersetzen wollte, leider aber für die SD Sender immer noch brauche)
    mit yavdr 0.4.0


  • Interessant klingen tut das, allerdings würde ich gerne auf Kosten von 45-60€ für die 3 geplanten Diskless Clients verzichten. Vorallem wo ich für diese 3 auf je ein 32MB DOM hätte, auf die Kernel + initrd draufpassen würden - wenn ich denn wüsste, wie ich in einem initrd die Netzwerkhardware schon vorkonfiguriere und ein etherwake ausführe (und dann ein wenig warte bis der Server hoffentlich oben ist).

    Server: Athlon II X2 250 - Asus M3N-H HDMI - 2x1GB RAM - 3TB HDDs -
    1 x Digital Devices Cine S2 V6 DVB-S2 (SD Sender im Highband funktionieren mit der Karte nach wie vor unter Linux nicht, unter Windows schon)
    3 x Nova Budget (die ich eigentlich durch die Cine S2 mit Erweiterungsmodul ersetzen wollte, leider aber für die SD Sender immer noch brauche)
    mit yavdr 0.4.0

  • Zitat

    Originally posted by Egalus
    Vorallem wo ich für diese 3 auf je ein 32MB DOM hätte, auf die Kernel + initrd draufpassen würden - wenn ich denn wüsste, wie ich in einem initrd die Netzwerkhardware schon vorkonfiguriere und ein etherwake ausführe (und dann ein wenig warte bis der Server hoffentlich oben ist).


    das ist, falls du debian etch verwendest, kein Thema mehr. Ich war unter sarge uebrigens auch kein Freund von 'initrd'.


    Habe es mit dem Umstieg von sarge auf etch aber nochmal mit 'initrd' versucht. Es funkt!


    Mein Diskless Client holt sich, vor der root-mount in der 'initrd' ausgefuehrt wird, seine IP ueber DHCP vom Router. Das erledigt u.a. die 'ipconfig' Utility aus der Kernellibrary (/usr/lib/klibc/bin).


    Du muesstest vermutlich nur noch nen etherwake nach dem Aufruf von 'ipconfig' dazupacken. Ich denke das waere ohne grossen Aufwand zu realisieren. Diese Loesung gefaellt mir inzwischen auch :)


    DIe eigentlichen Probleme beim Aufsetzen des Diskless Clients hatte ich erst waehrend die '/etc/rcS.d' Scripten ausgefuehrt werden. Da ist auch unter etch noch nicht alles so astrein. Zumindest war bei mir noch einiges zu fixen.


    [EDIT]
    du hast den DHCP Service auf dem Server laufen - ist auch kein Problem.
    Man kann die Netzparameter alle auch hart vorgeben. Dann wird 'ipconfig' gar nicht benutzt. Aber an dieser Stelle koenntest du trotzdem den 'etherwake' machen.
    [/EDIT]


  • Na das klingt doch schonmal vielversprechend. Dann werd ich mal gucken wie ich das hingebogen bekomme. Und ja, ich benutze etch auf der Box ;)

    Server: Athlon II X2 250 - Asus M3N-H HDMI - 2x1GB RAM - 3TB HDDs -
    1 x Digital Devices Cine S2 V6 DVB-S2 (SD Sender im Highband funktionieren mit der Karte nach wie vor unter Linux nicht, unter Windows schon)
    3 x Nova Budget (die ich eigentlich durch die Cine S2 mit Erweiterungsmodul ersetzen wollte, leider aber für die SD Sender immer noch brauche)
    mit yavdr 0.4.0

  • So einfach scheints dann doch nicht zu sein. Ich beisse mir da gerade die Zähne dran aus.


    Ich hab mir zwar nen hook in /usr/share/initramfs-tools/hooks
    gemacht, der dafür sorgt, dass etherwake und etherwake.conf (in zweiterer ist die MAC des zu weckenden Rechners) im initrd landen und auch ein script in
    /usr/share/initramfs-tools/scripts/init-premount
    dass etherwake ausführen soll, nur leider gibts da ein Problem.


    Scheinbar wird zwar das initrd geladen, aber da ich dem Kernel root-nfs Parameter mitgebe nutzt er das initrd entweder garnicht - oder nur bis zum nfs-script.
    Ergo wird mein wakescript nie ausgeführt.
    Baue ich nun nfs-support als Modul, dann funktioniert das booten via NFS-Root wieder nicht.


    Ich dreh mich da gerade im Kreis.

    Server: Athlon II X2 250 - Asus M3N-H HDMI - 2x1GB RAM - 3TB HDDs -
    1 x Digital Devices Cine S2 V6 DVB-S2 (SD Sender im Highband funktionieren mit der Karte nach wie vor unter Linux nicht, unter Windows schon)
    3 x Nova Budget (die ich eigentlich durch die Cine S2 mit Erweiterungsmodul ersetzen wollte, leider aber für die SD Sender immer noch brauche)
    mit yavdr 0.4.0

  • hast du mal, wie in meinem obigen Post beschrieben, mit 'gunzip' und 'gzip -9' ent/gepackt?


    Die '/usr/share/initramfs-tools/hooks' habe ich noch nicht verwendet. Stattdessen baue ich einfach Debugausgaben und Kommandos direkt in das Image ein.


    Versuche doch am besten mal im File 'init' 'nen Debug wie 'set -x'. Dann wird jedes ausgefuehrte Shellkommando der 'initrd' ausgegeben.

  • Hi!


    Ich hab sowas auch mit der SMT vor, im Moment aber mit einem anderen Client genauso gelöst.
    Dauert zwar ein bisschen länger (weil nicht wirklich optimiert), funktioniert aber ohne zum Server in den Keller zu laufen :o)
    Und zwar so:
    Client im Wohnzimmer startet über cf ein mini linux, das über etherwake den Server startet, dann 2 minuten wartet und dann ein reboot macht.
    Danach startet er dann über Netzwerk, da Netzwerk in der Bootreihenfolge vor der lokalen CF Karte ist.


    Gruß,


    Thobu


  • Die Idee hatte ich auch schon, aber passt ein minilinux zusätzlich zu Kerneln, initrd auf ein 32MB dom? ;)

    Server: Athlon II X2 250 - Asus M3N-H HDMI - 2x1GB RAM - 3TB HDDs -
    1 x Digital Devices Cine S2 V6 DVB-S2 (SD Sender im Highband funktionieren mit der Karte nach wie vor unter Linux nicht, unter Windows schon)
    3 x Nova Budget (die ich eigentlich durch die Cine S2 mit Erweiterungsmodul ersetzen wollte, leider aber für die SD Sender immer noch brauche)
    mit yavdr 0.4.0

  • Zitat

    Original von sparkie
    hast du mal, wie in meinem obigen Post beschrieben, mit 'gunzip' und 'gzip -9' ent/gepackt?


    Nicht 100% nach der Aufstellung oben, aber entpackt und reingeschaut habe ich und da waren die Files genau wie in meinen hooks beschrieben auch drin.
    Es fand sich also etherwake und etherwake.conf wieder.
    Das set -x vergesse ich jedesmal ;)
    Das pack ich gleich mal mit rein (ich hoffe ich finde das auch in den hooks ;) ).


    Ich nehme die hooks, weil ich es dann auch recht bequem anderen zur Verfügung stellen kann und gleich alles beim kernelinstall per dpkg -i gemacht wird.
    Sprich in der nächsten zendeb wäre das als Option gleich mit drin ;)
    Dann müsste man nur /boot aufs dom packen und nen neuen Kernel installieren ;)

    Server: Athlon II X2 250 - Asus M3N-H HDMI - 2x1GB RAM - 3TB HDDs -
    1 x Digital Devices Cine S2 V6 DVB-S2 (SD Sender im Highband funktionieren mit der Karte nach wie vor unter Linux nicht, unter Windows schon)
    3 x Nova Budget (die ich eigentlich durch die Cine S2 mit Erweiterungsmodul ersetzen wollte, leider aber für die SD Sender immer noch brauche)
    mit yavdr 0.4.0

Jetzt mitmachen!

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