BUG in nfs_server_script.sh

  • Hallo,


    aufgrund meiner aktuellen NFS-Probleme mit der dm7020 habe ich mir (u.a.) mal das nfs-Skript im Gemini angesehen. Unabhängig von von allem anderen, was ich unschön find, enthält das Skript noch einen BUG:


    Beim Start des MOUNTD werden die Parameter falsch zusammengebaut:
    if [ $MOUNTD_PORT_ON -ne 0 ]; then
    start-stop-daemon --start --quiet --exec $MOUNTD_BIN -p $MOUNTD_PORT
    else
    start-stop-daemon --start --quiet --exec $MOUNTD_BIN
    fi


    Die erste Anweisung für den Start des mountd (wenn man ihn über einen bestimmten Port zwingen will) ist falsch:
    die Optionen zum mountd müssen hinter "--" angegeben werden, da sie sonst nicht an das zu startende Programm übergeben werden. Also:
    start-stop-daemon --start --quiet --exec $MOUNTD_BIN -- -p $MOUNTD_PORT


    Wie gibt man so einen BUG nun weiter? Oder lies hier jemand mit, der das irgendwann mal patchen kann?


    Den Erfolg kann man leicht prüfen: Ohne das "--" wird IMMER in der Prozessliste nur "/usr/sbin/mountd" auftauchen; richtig wäre "/usr/sbin/mountd -p port", falls ein Port vorgegeben ist.

  • Mal abgesehen das davon dass ich auch massive Probleme mit NFS habe kann ich deine Angaben nicht bestätigen. Mit dem Parameter -- -p startet das Script überhaupt nicht mehr. Syntax Error.


    Gemini 4.1

  • Zitat

    Original von edvlooser
    Mal abgesehen das davon dass ich auch massive Probleme mit NFS habe kann ich deine Angaben nicht bestätigen. Mit dem Parameter -- -p startet das Script überhaupt nicht mehr. Syntax Error.
    Gemini 4.1


    Was heisst "mit dem Parameter -- -p"? Das ist ja auch Quatsch! Da fehlt dann der Port!


    In diesen Teil der IF-Abfrage gelangt das Skript nur, wenn ein Port für NFS angegeben ist; dann wird die Variable $MOUNTD_PORT mit dem Port besetzt. Aber das executable $MOUNTD_BIN wird vom programm start-stop-daemon angeworfen; starte das mal von Hand und es kommt (u.a.):


    Usage: start-stop-daemon [OPTIONS] [--start|--stop] ... [-- arguments...]


    Also: "--start" "--quiet" "--exec $MOUNT_BIN" sind Parameter für start-stop-daemon; -p dahinter allerdings ist ... gar nix. Argumente an das zu startende Programm sind nach einem "--" anzugeben; das "--" sagt start-stop-daemon, das hier seine Parameter enden und der Rest dem zu startenden Programm durchgereicht wird.


    Also der Aufruf "start-stop-daemon --start --quiet --exec $MOUNTD_BIN -- -p $MOUNTD_PORT" startet (--start) ohne Ausgabe (--quiet) das executable $MOUNTD_BIN (--exec ..) und übergibt an mountd "-p $MOUNTD_PORT", wobei der Port hier von der Shell aus der Variablen expandiert wird.


    Alles klar?


    Was für NFS-Probleme hast Du noch? Ich hab' meine jetzt im Griff; es geht zwar nicht alles via automounter aber zumindest ist die Verbindung PC-Dreambox jetzt stabil.

    • Offizieller Beitrag
    Zitat

    Original von wudelbrumpf
    Wie gibt man so einen BUG nun weiter? Oder lies hier jemand mit, der das irgendwann mal patchen kann?


    Hi,


    Zur erst, Danke für dem feedback :winking_face:


    Dies kannst du eigentlich sebst anpassen im nfs_server_script.sh. Danach sollte ja auch funktionnieren. Oder meinst du was anderes?


    E2 Box: TWO ~ ONE ~ DM8000 ~ DM7080 ~ DM7020HD~ DM9x0 ~ DM820 ~ DM800(SE(v2))~ DM52x ~ DM500HD(v2)~ DM7025(+)
    E1 Box: DM7020 ~ DM7000 ~ DM 5620 ~ DM600 ~ DM500+ ~ DM500 ~ TRIAX 272-S
    Image: OE2.5/OE2.6 Unst./GP4.2 ~ OE2.5 Unst./GP3.3 ~ OE2.2 Unst./GP3.3 ~ OE2.0 Exp./GP3.2 ~ iCVS/GP3 ~ Gemini 4.70
    Sonstiges: Logitech K600 ~ DM Tastatur ~ Box: DM100 ~ Router: Fritz!Box 7590 ~ Wlan Stick: Dream Multimedia ~ Server: ALIX.3D3 ~ BananaPI
    Satelliten: WaveFrontier T90
    23,5°E | 19,2°E | 16.0°E | 13,0°E | 10,0°E | 9,0°E | 7,0°E | 4,9°E | 3.0°E | 1.9°E | 0,8°W | 4,0°W | 5,0°W | 8,0°W | 12,5°W | 15,0°W | 22,0°W | 24,5°W | 30.0°W


    Hilfe gesucht ? schau mal ins Gemini Project WIKI, auch unsere Video Tutorial sind für den Einstieg sehr empfehlenswert

  • Zitat

    Original von cepheus


    Dies kannst du eigentlich sebst anpassen im nfs_server_script.sh. Danach sollte ja auch funktionnieren. Oder meinst du was anderes?


    Nee, das ist schon klar. Ich hab's bei mir ja auch angepasst (bei mir ist für NFS in der internen FW eben nicht jeder Port frei; daher war ich so erpicht auf einen festen Port. Jeder Linux Rechner hier nimmt für NFS immer einen festen Port; mit "Random" Ports hat meine Firewall Konfig so ihr Problem).


    Wenn ich das bei mir anpasse gehts. Aber das muss ich ja bei jedem Update wieder machen. Und der Fix ist ziemlich trivial; aber ich kann's eben nicht im Image für die nächsten Version fixen.


    Andreas

    • Offizieller Beitrag

    So,


    Ist als update im BluePanel jetzt vorhanden.



    Sollte eigentlich in der nächste Revision gefixt sein :winking_face:


    E2 Box: TWO ~ ONE ~ DM8000 ~ DM7080 ~ DM7020HD~ DM9x0 ~ DM820 ~ DM800(SE(v2))~ DM52x ~ DM500HD(v2)~ DM7025(+)
    E1 Box: DM7020 ~ DM7000 ~ DM 5620 ~ DM600 ~ DM500+ ~ DM500 ~ TRIAX 272-S
    Image: OE2.5/OE2.6 Unst./GP4.2 ~ OE2.5 Unst./GP3.3 ~ OE2.2 Unst./GP3.3 ~ OE2.0 Exp./GP3.2 ~ iCVS/GP3 ~ Gemini 4.70
    Sonstiges: Logitech K600 ~ DM Tastatur ~ Box: DM100 ~ Router: Fritz!Box 7590 ~ Wlan Stick: Dream Multimedia ~ Server: ALIX.3D3 ~ BananaPI
    Satelliten: WaveFrontier T90
    23,5°E | 19,2°E | 16.0°E | 13,0°E | 10,0°E | 9,0°E | 7,0°E | 4,9°E | 3.0°E | 1.9°E | 0,8°W | 4,0°W | 5,0°W | 8,0°W | 12,5°W | 15,0°W | 22,0°W | 24,5°W | 30.0°W


    Hilfe gesucht ? schau mal ins Gemini Project WIKI, auch unsere Video Tutorial sind für den Einstieg sehr empfehlenswert

    • Offizieller Beitrag

    Ja, habe es doch nochmal entfernt... :confused_face: Da war ich ein bischen zur voreilig mit dem hochladen..


    Code
    root@dreambox:/sbin> mountd -h                                                 
    Usage: mountd [-F|--foreground] [-h|--help] [-v|--version] [-d kind|--debug kin
    ]                                                                              
            [-o num|--descriptors num] [-f exports-file|--exports-file=file]       
            [-p|--port port] [-V version|--nfs-version version]                    
            [-N version|--no-nfs-version version] [-n|--no-tcp]                    
    root@dreambox:/sbin> mountd -p 2049
    root@dreambox:/sbin>


    [-p|--port port]


    E2 Box: TWO ~ ONE ~ DM8000 ~ DM7080 ~ DM7020HD~ DM9x0 ~ DM820 ~ DM800(SE(v2))~ DM52x ~ DM500HD(v2)~ DM7025(+)
    E1 Box: DM7020 ~ DM7000 ~ DM 5620 ~ DM600 ~ DM500+ ~ DM500 ~ TRIAX 272-S
    Image: OE2.5/OE2.6 Unst./GP4.2 ~ OE2.5 Unst./GP3.3 ~ OE2.2 Unst./GP3.3 ~ OE2.0 Exp./GP3.2 ~ iCVS/GP3 ~ Gemini 4.70
    Sonstiges: Logitech K600 ~ DM Tastatur ~ Box: DM100 ~ Router: Fritz!Box 7590 ~ Wlan Stick: Dream Multimedia ~ Server: ALIX.3D3 ~ BananaPI
    Satelliten: WaveFrontier T90
    23,5°E | 19,2°E | 16.0°E | 13,0°E | 10,0°E | 9,0°E | 7,0°E | 4,9°E | 3.0°E | 1.9°E | 0,8°W | 4,0°W | 5,0°W | 8,0°W | 12,5°W | 15,0°W | 22,0°W | 24,5°W | 30.0°W


    Hilfe gesucht ? schau mal ins Gemini Project WIKI, auch unsere Video Tutorial sind für den Einstieg sehr empfehlenswert

  • Zum Thema nfs (hoffentlich abschliessend)


    a) Der Fix ist korrekt
    b) der mountd läuft danach nicht mehr weil vermutlich KEIN anderer Port als 2049 angegeben wurde (dieser ist dummerweise der default im Image und EXTREM ungünstig gewählt)


    -- cut here ---
    root@dm7020:~> /usr/script/nfs_server_script.sh stop
    Stopping portmap daemon: portmap.
    Stopping NFS kernel daemon: mountd
    nfsd
    .
    Unexporting directories for NFS kernel daemon...
    done.
    root@dm7020:~> netstat -ae|grep 2049
    udp 0 0 *:2049 *:*
    --- cut here ---


    Wie man sieht, ist der Port bereits belegt! Und damit kann der mountd diesen Port nicht mehr benutzen und scheitert beim Start. (2049 ist AFAIK durch nfs belegt und der startet im Kernel)


    Die Behebung des Fehlers im Script bewirkt also nur, das nun der Konfigurationsfehler der default Konfiguration zuschlägt!


    Einfache Lösung ist, auf einen freien, nicht benutzten Port auszuweichen. Ob das ein "high-Port" sein soll oder evtl. einer der privilegierten Ports unter 1024 muss jeder selber entscheiden.


    Oder im Skript KEINEN Port angeben (also defaultmässig nicht mit einem vorgebenen Port starten); dann startet der mountd wie bisher.


    Andreas