Netzwerkfreigabe mounten mit systemd Mount Unit

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Hallo Hofei,

    erst mal vielen Dank für das tolle Tutorial. Viel Hintergrundwissen vermittelt, sodass man, so denke ich, die Funktion gut verstehen kann.

    Nun, warum melde ich mich? Habe eben doch noch ein Problem, welches ich nicht gelöst bekomme ;(

    Vorab vielleicht noch: Mit einem Eintrag in der /etc/fstab und mit mount -a funktioniert das mounten problemlos!!

    Folgende Fehlermeldung: wenn ich es über systemd versuche:

    root@raspi-2:~# systemctl start mnt-raspi_backup.mount

    A dependency job for mnt-raspi_backup.mount failed. See 'journalctl -xe' for details.

    Ergebnis von journalctl -xe

    Mai 27 12:25:56 raspi-2 systemd[1]: mnt.mount: Failed with result 'exit-code'.

    ░░ Subject: Unit failed

    ░░ Defined-By: systemd

    ░░ Support: https://www.debian.org/support

    ░░

    ░░ The unit mnt.mount has entered the 'failed' state with result 'exit-code'.

    Mai 27 12:25:56 raspi-2 systemd[1]: Failed to mount Mount von /mnt.

    ░░ Subject: A start job for unit mnt.mount has failed

    ░░ Defined-By: systemd

    ░░ Support: https://www.debian.org/support

    ░░

    ░░ A start job for unit mnt.mount has finished with a failure.

    ░░

    ░░ The job identifier is 1518 and the job result is failed.

    Mai 27 12:25:56 raspi-2 systemd[1]: Dependency failed for Mount auf NAS fuer RASPI-Backups.

    ░░ Subject: A start job for unit mnt-raspi_backup.mount has failed

    ░░ Defined-By: systemd

    ░░ Support: https://www.debian.org/support

    ░░

    ░░ A start job for unit mnt-raspi_backup.mount has finished with a failure.

    ░░

    ░░ The job identifier is 1449 and the job result is dependency.

    Mai 27 12:25:56 raspi-2 systemd[1]: mnt-raspi_backup.mount: Job mnt-raspi_backup.mount/start failed with re>

    Nun noch die Info's, wie ich die Dateien und Berechtigungen aufgesetzt habe:

    Mein mount-directory ist:

    root@raspi-2:~# cd /mnt

    root@raspi-2:/mnt# ls -al

    insgesamt 12

    drwxr-xr-x 3 root root 4096 26. Mai 13:55 .

    drwxr-xr-x 18 root root 4096 8. Mai 18:42 ..

    drwxr-xr-x 2 root root 4096 26. Mai 13:55 raspi_backup

    root@raspi-2:/mnt#

    Zugangsdaten sind in /etc/smbcredentials hinterlegt. Die müssen stimmen, weil sie auch über die /etc/fstab mit mount -a funktionieren.

    systemd-escape --suffix=mount --path /mnt/raspi_backup

    mnt-raspi_backup.mount

    Muss noch dazu sagen, dass ich den Eintrag bei options OHNE vers=x.x, mit vers=1.0 + vers=3.0 mit selbem Ergebnis versucht habe.

    Nun für die Abhängigkeit:

    Jetzt noch das Script serverctl

    Nun noch die Berechtigungen von serverctl:

    root@raspi-2:/usr/local/sbin# ls -al serverctl

    -rwxr-xr-x 1 root root 1262 26. Mai 14:50 serverctl

    Was ich auch noch geprüft habe:

    systemctl status serverctl.service

    Ausgabe:

    ● serverctl.service - serverctl.service: Waiting for Network or Server to be up

    Loaded: loaded (/etc/systemd/system/serverctl.service; disabled; vendor preset: enabled)

    Active: inactive (dead) since Fri 2022-05-27 12:25:55 CEST; 24min ago

    Process: 1848 ExecStart=/usr/local/sbin/serverctl 192.168.178.2 (code=exited, status=0/SUCCESS)

    Main PID: 1848 (code=exited, status=0/SUCCESS)

    CPU: 126ms

    Mai 27 12:25:55 raspi-2 systemd[1]: Starting serverctl.service: Waiting for Network or Server to be up...

    Mai 27 12:25:55 raspi-2 thlu:serverctl[1855]: Host 192.168.178.2 is reachable! (RC:0, after 0 Seconds wait)

    Mai 27 12:25:55 raspi-2 thlu:serverctl[1858]: Successful terminated with exitcode=0

    Mai 27 12:25:55 raspi-2 systemd[1]: serverctl.service: Succeeded.

    Mai 27 12:25:55 raspi-2 systemd[1]: Finished serverctl.service: Waiting for Network or Server to be up.

    Sollte doch alles passen oder?????????????

    So, ich glaube, ich habe soweit alles dokumentiert.

    Hast Du oder jemand aus der Community ne Idee :helpnew:

  • Hallo Hofei,

    also, habe erst noch Versuche mit vers=x.y gemacht. Mit vers=3.0 in der /etc/fstab gabe es den
    mount error(95): operation not supported.

    Wenn kein vers=x.y oder mit vers=1.0 oder mit vers=2.0 in der fstab hat der mount -a oder der manuelle mount - cifs .......

    geklappt.

    Habe dann den Mountpoint /media verwendet und eine neue Mount Unit angelegt und damit funktioniert es :bravo2:

    Ich bin sprachlos und happy, nur verstehen tu ich es nicht.

    Naja so funzt es erstmal.

    Werde diese Woche nochmal ein paar Tests machen.

    Also ganz lieben Dank für Deine Hilfe und Deinen Input :danke_ATDE:

  • Hallo zusammen, Hallo Hofei

    Danke für die Anleitung, ich habe die entsprechenden Namen und IP-Adressen an meine Situation angepasst, das manuelle mounten funktioniert tadellos, wenn ich jedoch mit "systemctl start synology-ds118.mount" starten will, kommt folgender Fehler "Failed to start synology-ds118.mount: Unit synology-ds118.mount has a bad unit file setting."

    Ich sehe im Moment einfach den Fehler nicht ...

  • Hallo Hofei

    ich habe den Ordner neu erstellt

    /media/synology

    alle Files angepasst, immer noch der gleiche Fehler, das manuelle mounten funktioniert aber problemlos

    ich sehe aber wenn ich den systemd starte per Befehl "systemctl status synology.mount"

    root@raspi4:/home/pi# systemctl status synology.mount

    ● synology.mount - Mount der Synology

    Loaded: bad-setting (Reason: Unit synology.mount has a bad unit file setting.)

    Active: inactive (dead)

    Where: /media/synology

    What: //192.168.1.16/gopro/

    Nov 09 22:14:45 raspi4 systemd[1]: synology.mount: Where= setting doesn't match unit name. Refusing.

    Nov 09 22:18:21 raspi4 systemd[1]: synology.mount: Where= setting doesn't match unit name. Refusing.

    root@raspi4:/home/pi#

    ich werd daraus leider nicht schlau im Moment ....

    „i will tell you all my secrets, but i lie about my past“ Tom Waits

    :danke_ATDE:;)

  • Der Name der Mount Unit passt nicht - jetzt seh ichs.

    Wie schon erwähnt, ist der Name der Mount Unit abhängig vom gewählten Einhängepunkt.

    Mit folgendem Befehl bekommt man die Ausgabe, wie der Name der Mount Unit zu vergeben ist:

    systemd-escape --suffix=mount --path <EINHÄNGEPUNKT>


    In unserem Beispiel ist der Name: media-fritz_nas.mount


    nano /etc/systemd/system/media-fritz_nas.mount

    --> Deine Mountunit muss heißen: media-synology.mount

  • Mit Hilfe deiner Anleitung habe ich es geschafft meine Nextcloud - Verzeichnisse erst einzubinden wenn die Wlan Verbindung steht.

    Danke dafür!

    Wenn die Cloud-Verzeichnisse nach deiner Anleitung gemountet werden dann ist root der Besitzer und ich habe nur Leserechte.

    Wenn ich manuellen mounte habe ich Lese und Schreibrechte.

    Ich hatte gehofft wenn ich die fstab mit uid=1001, gid=1001, ergänze ist das Problem gelöst, das war aber leider nicht die Lösung.

    Kann mir jemand sagen wie ich als wieder Schreibrecht auf dem Netzwerklaufwerk bekomme?

    Meine fstab:

    Code
    https://meinecloud.de/remote.php/dav/files/ralle/ /home/ich/meinecloud davfs rw,user,uid=1001,gid=1001,_netdev 0 0

    Raspberry pi 4, pi 3 Model B , Zero WH , NodeMCU

  • Ich antworte mir mal selbst, vielleicht kann jemand die Lösung gebrauchen.

    Ich habe in der serverctl.service den Benutzer hinzugefügt.

    Code
     User=Benutzername     z.B. pi

    und die Mount Unit Option mit uid=1001,gid=1001 ergänzt.

    Code
    Options=user,rw,_netdev,uid=1001,gid=1001

    wobei ich vermute das die Änderungen in der Mount Unit schon ausreichen würden.

    Raspberry pi 4, pi 3 Model B , Zero WH , NodeMCU

  • da ich auf thu.de das Skript nicht gefunden habe, warum wird die eine IP-Adresse als Parameter übergeben während die andere fest im Skript hinterlegt ist?

    Wenn ich das skript richtig verstanden habe, dann wird beim Aufruf eine IP-Adresse übergeben. Dann wird verglichen ob das, was beim ping zurück kommt, auch dem entspricht was fest im Skript hinterlegt ist, also hier die 8.8.8.8

    Welche Idee steckt dahinter dass man nicht prüft ob der Wert, der beim ping zurück kommt, nicht dem Wert entspricht der per Parameter übergeben wurde?

    Wie müsste die Zeile aussehen wenn ich den Server nicht fest eintragen möchte?

    Ich bin schon dabei das Thema dieses Threads, als systemd.mount, auszuprobieren. Allerdings habe ich mehrere mounts zu unterschiedlichen Servern. Damit ich die serverctl in allen mounts verwenden kann, müssten die IP-Adressen von der jeweiligen mount-unit beim Aufruf übergeben werden.

    Vielen Dank.

    Einmal editiert, zuletzt von blacksun (16. Januar 2023 um 23:46)

  • ah, ok, an diese Stelle im Skript kommt nicht die IP der zu prüfenden Maschine, sondern hier wird nur ein DNS-Server angegeben.

    An der serverctl ist nichts zu ändern. Die sollte bleiben, wie sie ist.

    Anpassen musst du nur die Unit (xxx.mount) sowie ggfs. die serverctl.service (IP deines Routers)

    Zudem muss die smbcredencials erstellt werden mit den Zugangsdaten.

    Für jede Freigabe, die du mounten willst, brauchst du eine eigene "xxx.mount" sowie ein Verzeichnis, in das du die Freigabe mounten willst.

  • Hallo Hofei,
    ein super Beitrag :thumbup: und funktioniert bei mir schon seit geraumer Zeit und auch mit mehreren mounts extrem gut, nur ist mir erst dieser Tage aufgefallen, dass wenn ein mount nicht mehr verfügbar ist (z.B. PC runtergefahren), ich in der syslog alle 5 Minuten den Fehler:

    CIFS: Attempting to mount //192.168.178.11/linux-mint

    CIFS: VFS: cifs_mount failed w/return code = -112

    bekomme. Der Hinweis ist sicher sinnvoll, aber um die Schreibzugriffe auf meine SD-Karte zu minimieren, liegen die log-Dateien in einem RAM-Laufwerk welches so recht schnell voll wird bzw. wichtige andere Informationen durch logrotate verloren gehen ... kann man diese Meldung irgendwie umgehen oder ausschalten?

    Gruß, ElSol

  • Beitrag von Franjo G (20. April 2023 um 18:16)

    Dieser Beitrag wurde gelöscht, Informationen über den Löschvorgang sind nicht verfügbar.

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!