close Warning: Can't synchronize with repository "keplertools" (/srv/svn/keplertools does not appear to be a Subversion repository.). Look in the Trac log for more information.

Opened 8 years ago

Closed 8 years ago

#3068 closed Defekt (im Image)

Drucken funktioniert nicht (Gerhard-Image)

Reported by: Rüdiger Kupper Owned by: Rüdiger Kupper
Priority: schnell erledigen Milestone: Image "Galanter Gerhard"
Component: Software: Ubuntu Severity: beeinträchtigt den Unterricht einiger Lehrer
Keywords: needed-for-beta Cc: bau

Description

-> cups-Konfiguration prüfen (wurde während der Aktualisierung auf 18.04 auch aktualisiert)

Change History (15)

comment:1 by Rüdiger Kupper, 8 years ago

Cc: bau added
Status: new → accepted

CUPS läuft, die printers.conf wird nur nich beim Systemstart aktualisiert. Der systemd-Dienst hat ein Abhängigkeitsproblem:

root@rechner-3-12:/home/teachers/kup# systemctl status kepler--setup_local_printers.service
● kepler--setup_local_printers.service - Kepler-Drucker-Anpassungen
   Loaded: loaded (/etc/systemd/system/kepler--setup_local_printers.service; enabled; vendor preset: enabled)
   Active: inactive (dead)

Jan 15 06:32:19 rechner-3-12 systemd[1]: Dependency failed for Kepler-Drucker-Anpassungen.
Jan 15 06:32:19 rechner-3-12 systemd[1]: kepler--setup_local_printers.service: Job kepler--setup_local_printers.service/start failed with result 'dependency'.

Wovon hängt der denn ab?

comment:2 by bau, 8 years ago

Der Druckerdienst setzt ein gestartetes Netzwerk voraus.
Die Einstellungen sind in /etc/systemd/system/kepler--setup_local_printers.service definiert:

Unit]
Description=Kepler-Drucker-Anpassungen
After=network-online.target
Wants=network-online.target
RequiresMountsFor=/home/share

[Service]
Type=oneshot
ExecStart=/home/share/printers/setup_local_printers

[Install]
WantedBy=multi-user.target

comment:3 by Rüdiger Kupper, 8 years ago

Läuft der Rechner erst einmal, kann ich den Dienst von Hand starten und er macht, was er soll. Beim Booten des Rechners bricht er aber mit dem "dependency"-Problem.
Im syslog sieht man auch, warum:

Jan 15 11:25:28 rechner-3-12 systemd[1]: Reached target Network is Online.
Jan 15 11:25:28 rechner-3-12 systemd[1]: Mounting /home/share...
Jan 15 11:25:28 rechner-3-12 systemd[1]: Starting Kepler: Linbo-Torrents im normalen Betrieb verteilen...
Jan 15 11:25:28 rechner-3-12 systemd[1]: Starting LSB: VirtualBox Linux kernel module...
Jan 15 11:25:28 rechner-3-12 systemd[1]: home-teachers.mount: Directory /home/teachers to mount over is not empty, mounting anyway.
Jan 15 11:25:28 rechner-3-12 kepler--torrents[1428]: Starte Kepler--torrents-Management
Jan 15 11:25:28 rechner-3-12 systemd[1]: Mounting /home/teachers...
Jan 15 11:25:28 rechner-3-12 mount[1426]: mount.nfs: Failed to resolve server paedml: Name or service not known
Jan 15 11:25:29 rechner-3-12 systemd[1]: Starting Postfix Mail Transport Agent (instance -)...
Jan 15 11:25:29 rechner-3-12 systemd[1]: Started crash report submission daemon.
Jan 15 11:25:29 rechner-3-12 systemd[1]: home-students.mount: Directory /home/students to mount over is not empty, mounting anyway.
Jan 15 11:25:29 rechner-3-12 systemd[1]: Mounting /home/students...
Jan 15 11:25:29 rechner-3-12 mount[1441]: mount.nfs: Failed to resolve server paedml: Name or service not known
Jan 15 11:25:29 rechner-3-12 systemd[1]: Starting Tool to automatically collect and submit kernel crash signatures...
Jan 15 11:25:29 rechner-3-12 nscd: nss-ldap: do_open: do_start_tls failed:stat=-1
Jan 15 11:25:29 rechner-3-12 nscd: nss-ldap: do_open: do_start_tls failed:stat=-1
Jan 15 11:25:29 rechner-3-12 mount[1460]: mount.nfs: Failed to resolve server paedml: Name or service not known
Jan 15 11:25:29 rechner-3-12 systemd[1]: Mounting /home/ftp/Scans...
Jan 15 11:25:29 rechner-3-12 systemd[1]: Starting LSB: Epoptes client LTSP helper...
Jan 15 11:25:29 rechner-3-12 systemd[1]: Mounting /var/cache/sophomorix/tasks...
Jan 15 11:25:29 rechner-3-12 systemd[1]: Starting /etc/rc.local Compatibility...
Jan 15 11:25:29 rechner-3-12 mount[1473]: mount.nfs: Failed to resolve server paedml: Name or service not known
Jan 15 11:25:29 rechner-3-12 systemd[1]: Starting resolvconf-pull-resolved.service...
Jan 15 11:25:29 rechner-3-12 whoopsie[1457]: [11:25:29] Using lock path: /var/lock/whoopsie/lock
Jan 15 11:25:29 rechner-3-12 mount[1485]: mount.nfs: Failed to resolve server paedml: Name or service not known
Jan 15 11:25:29 rechner-3-12 systemd[1]: home-share.mount: Mount process exited, code=exited status=32
Jan 15 11:25:29 rechner-3-12 systemd[1]: home-share.mount: Failed with result 'exit-code'.
Jan 15 11:25:29 rechner-3-12 systemd[1]: Failed to mount /home/share.
Jan 15 11:25:29 rechner-3-12 systemd[1]: Dependency failed for Kepler-Drucker-Anpassungen.
Jan 15 11:25:29 rechner-3-12 systemd[1]: kepler--setup_local_printers.service: Job kepler--setup_local_printers.service/start failed with result 'dependency'.
Jan 15 11:25:29 rechner-3-12 systemd[1]: home-teachers.mount: Mount process exited, code=exited status=32
Jan 15 11:25:29 rechner-3-12 systemd[1]: home-teachers.mount: Failed with result 'exit-code'.
Jan 15 11:25:29 rechner-3-12 systemd[1]: Failed to mount /home/teachers.
Jan 15 11:25:29 rechner-3-12 systemd[1]: home-students.mount: Mount process exited, code=exited status=32
Jan 15 11:25:29 rechner-3-12 systemd[1]: home-students.mount: Failed with result 'exit-code'.
Jan 15 11:25:29 rechner-3-12 systemd[1]: Failed to mount /home/students.
Jan 15 11:25:29 rechner-3-12 systemd[1]: home-ftp-Scans.mount: Mount process exited, code=exited status=32
Jan 15 11:25:29 rechner-3-12 systemd[1]: home-ftp-Scans.mount: Failed with result 'exit-code'.
Jan 15 11:25:29 rechner-3-12 systemd[1]: Failed to mount /home/ftp/Scans.

Das Mounten von /home/share und der anderen Verzeichnisse schlägt beim Systemstart offenbar zunächst fehl.

Version 0, edited 8 years ago by Rüdiger Kupper (next)

comment:4 by Rüdiger Kupper, 8 years ago

Anscheinend ist das Netzwerk oben, doch die Namensauflösung tut noch nicht. Gibt es dafür ein weiteres Target?

comment:5 by bau, 8 years ago

Das ist auch die Beobachtung, die ich mal gemacht habe mit deinem Script schuelernetz.
Ich habe dann ja mal einen Workaround geschrieben, der 100% das Netz erkennt.
Systemd ist eigentlich ganz gut beschrieben, man findet die Targets in der Doku.

comment:6 by Rüdiger Kupper, 8 years ago

Dort steht immer nur "network-online.target". Das reicht ja nun aber offenbar nicht.

comment:8 by Rüdiger Kupper, 8 years ago

Auch hier:
​https://github.com/ansible/ansible/issues/39116

Scheint auch so, als ob sich eine ganze Reihe von Lejuten damit herumschlagen. Doch irgendwiw gibt es keine vernünftige Lösung (außer eben ein kleines Skript, das so lange in einer Schleife läuft, bis der mount da ist. Ist aber nicht sehr systemd-style...)

comment:9 by Rüdiger Kupper, 8 years ago

Mir sieht das ja nach einem Bug in systemd aus. Werde mal ein Ticket in deren Bugtracker erstellen.

comment:10 by Rüdiger Kupper, 8 years ago

Nach einigem ergebnislosen Forenlesen, ein möglicher Lösungsansatz:

  1. Habe hier jemanden gefunden, der gut recherchiert hat (siehe Antwort): ​https://askubuntu.com/questions/979058/16-04-nfs-mount-problems-at-boot-time

-> systemd richtet für alles, was in der fstab steht, ein .mount-Target ein, bei uns also etwa "home-share.mount". Schaut man sich das an mit systemctl show home-share.mount, so steht da zwar Wants=network-online.target, aber kein After=network-online.target. Demnach braucht das mount-Target nicht auf das Netzwerk zu warten. Das passt für einen lokalen Mount, nicht aber für einen Netzwerk-Mount.

Da die .mount-Targets beim Systemstart dynamisch von systemd erstellt werden, kann man sie nicht so einfach ändern. Der Nutzer löst das, in dem er das Target remote-fs-pre.target modifiziert: systemctl edit remote-fs-pre.target:

[Unit]
Wants=network-online.target
After=network-online.target
  1. In einigen Foren steht auch, dass systemd bei Netzwerk-Mounts Schwierigkeiten mit kurzen Domainnamen hat. Fqdn funktionieren besser. Also in der fstab "paedml" durch "paedml.kg-fds.de" ersetzt.

Die beiden Maßnahmen zusammen scheinen das Problem zu lösen -- jedenfalls hat mein Rechner vier mal gebootet und der Service lief jedes Mal. Es kann natürlich auch einfach sein, dass diese Maßnahmen den Ablauf nur ein wenig verzögern, so dass die Race Condition nicht mehr zuschlägt. Keine Ahnung, müssen wir weiter beobachten.
Den Bug-Report schreibe ich auf alle Fälle mal.

comment:11 by Rüdiger Kupper, 8 years ago

Leider auch keine sichere Lösung, wie sich herausstellt. Der Job schlägt immer noch dann und wann fehl.

comment:12 by Rüdiger Kupper, 8 years ago

Was das Problem sofort umgehen würde, wäre ein Eintrag des paedml in der /etc/hosts. Hier müssten wir per Postsync-Skript im Lehrernetz den Eintrag beim Syncen ändern.
Dann wären die NFS-Mounts beim Booten nicht auf den Nameservice angewiesen.

Bevor ich das mache, probiere ich aber noch, den systemd-resolved ganz abzuschalten und wieder dnsmasq zu verwenden.

comment:13 by bau, 8 years ago

Das ist ein sehr guter Gedanke.
Bei Gluster-FS ist es sogar vorgeschrieben, dass die einzelnen Nodes in der /etc/hosts eingetragen sein müssen, da bei Ausfall des DNS ansonsten das ganze Netzwerk-Filesystem stehen würde.

in reply to:  12 comment:14 by Rüdiger Kupper, 8 years ago

Replying to kup:

Bevor ich das mache, probiere ich aber noch, den systemd-resolved ganz abzuschalten und wieder dnsmasq zu verwenden.

Funktioniert prinzipiell, doch auch dnsmasq wird erst zu spät im Bootprozess aktiv (systemd ist halt darauf optimiert, möglichst schnell zu starten). Daher läuft auch damit unser Drucker-Skript nicht.

=> dnsmasq wieder entfernt, systemd wieder aktiviert, paedml steht nun in der /etc/hosts, postsync-Skript setzt die im Lehrernetz richtig.
=> Druckerskript scheint nun zu funktionieren.

Kepler-Torrent-Dienst ist einstweilen deaktiviert.

=> Damit hat Galanter Gerhard das Beta-Stadium erreicht :-).

comment:15 by Rüdiger Kupper, 8 years ago

Resolution: → im Image
Status: accepted → closed
Note: See TracTickets for help on using tickets.