Warum bleibt systemd beim Neustart hängen?


13

1 von 10 Mal hängt systemd beim Neustart. Ich verstehe den Grund nicht. Was / wo sollte ich suchen, um das Problem zu beheben? Ich verwende systemd v196 und kann es nicht auf Version> = 198 aktualisieren, da letzteres einen aktuellen Kernel (mit Unterstützung für cgroups) erfordert, der nicht durch Kundenanforderungen aktualisiert werden kann. Ich frage mich, ob es einen vernünftigen Weg gibt, den Grund für dieses Verhalten zu ermitteln und das System dazu zu bringen, das System bedingungslos neu zu starten.

Beachten Sie, dass dieser Link nicht hilft: http://freedesktop.org/wiki/Software/systemd/Debugging/#index2h1

Wie Sie dort lesen können:

Das Herunterfahren wird nie beendet

Wenn der normale Neustart oder das Ausschalten auch nach einigen Minuten Wartezeit nie abgeschlossen wird, hilft die oben beschriebene Methode zum Erstellen des Herunterfahrprotokolls nicht und das Protokoll muss mit anderen Methoden abgerufen werden. Zwei Optionen, die zum Debuggen von Startproblemen nützlich sind, können auch für Probleme beim Herunterfahren verwendet werden:

use a serial console
use a debug shell - not only is it available from early boot, it also stays active until late shutdown.

Ich verwende die serielle Konsole und kann mich aus irgendeinem Grund sogar anmelden, da die eth-Schnittstelle aktiv ist oder aufgerufen wurde (nachdem während der Neustartschritte eine Trennung aufgetreten ist).

Ich sehe den Grund nicht.

# cat /etc/systemd/system/
basic.target.wants/                          getty.target.wants/                          multi-user.target.wants/                     sysinit.target.wants/                        
dbus-org.freedesktop.NetworkManager.service  local-fs-pre.target.wants/                   sockets.target.wants/                        syslog.service                               
display-manager.service                      local-fs.target.wants/                       swap.target

Beachten Sie das swap.target. Es ist da, aber wir verwenden überhaupt keine Swap-Partitionen. Ich habe versucht, den Tausch zu maskieren, aber das Problem mit dem Aufhängen ist groß. Die letzte Zeile in der Konsole lautet:

[OK] Stopped target shutdown.

EDIT: Wie gesagt, ich kann mich über ssh over eth erneut anmelden.

Jetzt zeige ich Ihnen zwei Protokolle. Das erste Protokoll wird erstellt, wenn der Neustart / Shutdwon hängt, während das zweite Protokoll erstellt wird, wenn der Neustart erfolgreich ist:

Fall hängen, die Ausgabe ist immer so (vollständiges Protokoll):

[  OK  ] Stopped Network Time Service (one-shot ntpdate mode).
         Stopping Modem and VPN connections autoconnect...
         Stopping Login Service...
         Stopping LSB: Avahi mDNS/DNS-SD Daemon...
[  OK  ] Stopped Monitoring free system resources.
[  OK  ] Stopped Monitoring dropbear socket.
[  OK  ] Stopped Login Service.
[  OK  ] Stopped Modem and VPN c[  OK  ] Stopped Getty on tty1.
[  OK  ] Stopped Serial Getty on ttyO0.
[  OK  ] Unmounted /var/lib/opkg.
[  OK  ] Stopped Network Manager.
[  OK  ] Stopped LSB: Avahi mDNS/DNS-SD Daemon.
         Stopping D-Bus System Message Bus...
[  OK  ] Stopped target Remote File Systems.
[  OK  ] Stopped Suspend manager.
         Stopping X Server...
[  OK  ] Stopped X Server.
         Stopping System Logging Service...
[  OK  ] Stopped System Logging Service.
[   77.580000] g_ether gadget: using random self ethernet address
[   77.580000] g_ether gadget: using random host ethernet address
[   77.590000] usb0: MAC 6e:0d:de:b0:33:4f
[   77.590000] usb0: HOST MAC 62:7a:81:02:f3:ff
[   77.600000] g_ether gadget: Ethernet Gadget, version: Memorial Day 2008
[   77.600000] g_ether gadget: g_ether ready
[   77.610000] musb-hdrc musb-hdrc.0: MUSB HDRC host driver
[   77.610000] musb-hdrc musb-hdrc.0: new USB bus registered, assigned bus number 2
[   77.620000] usb usb2: New USB device found, idVendor=1d6b, idProduct=0002
[   77.630000] usb usb2: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[   77.640000] usb usb2: Product: MUSB HDRC host driver
[   77.640000] usb usb2: Manufacturer: Linux 2.6.37 musb-hcd
[   77.650000] usb usb2: SerialNumber: musb-hdrc.0
[   77.650000] hub 2-0:1.0: USB hub found
[   77.660000] hub 2-0:1.0: 1 port detected
[   77.690000] ADDRCONF(NETDEV_UP): usb0: link is not ready
[  OK  ] Stopped target Reboot.
[  OK  ] Stopped Reboot.
[  OK  ] Stopped target Unmount All Filesystems.
[  OK  ] Stopped target Shutdown.
[   78.330000] <46>systemd-journald[328]: Received SIGUSR1
<hang>

Normaler Neustart:

         Unmounting /var/lib/opkg...
[  OK  ] Stopped target Network.
         Stopping SSH Per-Connection Server...
[  OK  ] Stopped target Graphical Interface.
[  OK  ] Stopped target Multi-User.
         Stopping Monitoring free system resources...
         Stopping Monitoring dropbear socket...
         Stopping Network Time Service (one-shot ntpdate mode)...
[  OK  ] Stopped Network Time Service (one-shot ntpdate mode).
         Stopping Modem and VPN connections autoconnect...
         Stopping Login Service...
         Stopping LSB: Avahi mDNS/DNS-SD Daemon...
[  OK  ] Stopped Monitoring free system resources.
[  OK  ] Stopped Monitoring dropbear socket.
[  OK  ] Stopped Login Service.
[  OK  ] Unmounted /var/lib/opkg.
         Stopping Network Manager...
[  OK  ] Stopped Getty on tty1.
[  OK  ] Stopped Network Manager.
[  OK  ] Stopped Serial Getty on ttyO0.
[  OK  ] Stopped Suspend manager.
[  OK  ] Stopped LSB: Avahi mDNS/DNS-SD Daemon.
         Stopping D-Bus System Message Bus...
         Stopping X Server...
         Stopping Permit User Sessions...
[  OK  ] Stopped Permit User Sessions.
[  OK  ] Stopped target Remote File Systems.
[  OK  ] Stopped X Server.
[  OK  ] Stopped D-Bus System Message Bus.
         Stopping System Logging Service...
[  OK  ] Stopped System Logging Service.
[  OK  ] Stopped target Basic System.
[  OK  ] Stopped target Sockets.
[  OK  ] Closed dropbear.socket.
[  OK  ] Closed D-Bus System Message Bus Socket.
[  OK  ] Stopped target System Initialization.
         Stopping Import configuration from SD card...
[  OK  ] Stopped Import configuration from SD card.
         Stopping Load Kernel Modules...
         Stopping Apply Kernel Variables...
[  OK  ] Stopped Apply Kernel Variables.
[  OK  ] Stopped target Local File Systems.
         Unmounting /var...
         Unmounting /tmp...
[  OK  ] Closed Syslog Socket.
[  OK  ] Failed unmounting /var.
[  OK  ] Unmounted /tmp.
[  OK  ] Stopped Load Kernel Modules.
[  OK  ] Reached target Unmount All Filesystems.
[  OK  ] Stopped target Local File Systems (Pre).
         Stopping Remount Root and Kernel File Systems...
[  OK  ] Stopped Remount Root and Kernel File Systems.
[  OK  ] Reached target Shutdown.
[   52.340000] omap_wdt: Unexpected close, not stopping!
Sending SIGTERM to remaining processes...
[   52.490000] <46>systemd-journald[335]: Received SIGTERM
Sending SIGKILL to remaining processes...
Unmounting file systems.
Unmounting /sys/fs/fuse/connections.
Unmounting /var.
All filesystems unmounted.
Deactivating swaps.
All swaps deactivated.

AKTUALISIEREN:

Nach einigen Untersuchungen und Debugging habe ich den Grund für die Unterbrechung des Herunterfahrens entdeckt, obwohl ich ihn immer noch nicht lösen kann. Aus bestimmten Gründen wird einer der benutzerdefinierten Dienste vor Abschluss des Herunterfahrens gestartet, wodurch der Vorgang zum Herunterfahren hängen bleibt. Das ist ein Fall von Hang. Eine andere Art des Hängens ist, wenn das Herunterfahren nicht unterbrochen wird, sondern irgendwann stoppt. Aus diesem Grund möchte ich den Hardware-Watchdog unbedingt aktivieren, bevor ich alle Konflikte und andere mögliche Probleme einzeln löse. Um dies über systemd zu tun, habe ich RuntimeWatchdogSec und ShutdownWatchdogSec entweder separat oder zusammen aktiviert und getestet. Leider haben sie nicht geholfen. Durch Betrachten des Quellcodes,

Ich stecke fest. Ich bitte Sie, einen Weg zu finden, um entweder: 1. den Watchdog bedingungslos zu aktivieren, zumindest ab dem Punkt, an dem das Herunterfahren beginnt. 2. alle Konflikte auf einfache Weise zu erkennen und zu lösen

Die erste Lösung ist bevorzugt.


Ist es auf dem Weg nach unten hängt es? Können Sie uns mitteilen, welche Dienste auf dem System aktiviert sind? Irgendwelche maßgeschneiderten? Wie sind Sie zu dem Schluss gekommen, dass systemd hängt?
MattBianco

@ MattBianco Ich habe die Frage bearbeitet. Es gibt weitere Informationen.
Martin

Warum werden zwischen dem ersten und dem zweiten Protokoll keine Zeilen gleich angezeigt? Ich wäre in der Lage mehr Hilfe anbieten , wenn ich sehen konnte , wo sie anfangen zu unterscheiden.
BenjiWiebe

@ BenjiWiebe du hast recht. Ich werde die Frage noch einmal bearbeiten
Martin

Versuchen Sie, journalctl als root zu verwenden, und suchen Sie im systemd-Journal nach Zeitüberschreitungen, Fehlern und Abhängigkeitsfehlern.
Harrymc

Antworten:


5

Ich wage es, eine Lösung vorzuschlagen: versuchen Sie es hinzuzufügen

  Before=basic.target

an /usr/lib/systemd/system/dbus.service.

Ich bin von einer Kuriosität in Ihren Protokollen betroffen, die mich an einen Unfall erinnert, den ich vor einiger Zeit in den Arch Linux-Foren gelesen habe : Dieses System würde beim Neustart hängen bleiben. Die Lösung wurde wie oben angeboten, mit der Begründung, dass der Hang durch einen Dienst verursacht würde, der versucht, nach dem Anhalten mit dem D-Bus zu sprechen:

Wenn Sie es also vor dem basic.target bestellen, startet es nicht nur, bevor das basic-Ziel erreicht ist, sondern stellt auch sicher, dass es so lange erhalten bleibt, bis das basic.target beim Herunterfahren heruntergefahren wird.

In Ihrem ungesunden Protokoll sehen wir tatsächlich, dass das Basissystem nicht gestoppt wird, während es im fehlerfreien Protokoll ordnungsgemäß gestoppt wird .

Sollte dies nicht funktionieren und da Sie kein Upgrade durchführen können, haben Sie ein Downgrade in Betracht gezogen?


1
Danke, ich werde deine Lösung ausprobieren. Ich habe einen Ersatz für das gute alte SysV in Betracht gezogen, da systemd vom Design her fehlerhaft zu sein scheint.
Martin

Ich erhalte dies von systemd beim Booten, nachdem ich diese Änderung angewendet habe: Bestellzyklus gefunden, D-Bus System Message Bus überspringen. Irgendeine Idee?
Martin

@ Martin 1: Haben Sie / und / usr auf separaten Partitionen? 2) Hast du viele Sachen in /etc/init.d? Oder in /etc/rc.d?
Marius Matutiae

1
Dies funktioniert hervorragend unter Ubuntu 16.04. Die Datei befand sich /usr/lib/systemd/user/dbus.serviceunter [Unit]Abschnitt
Anwar

3

shutdown.targetKonflikte mit allen anderen Einheiten standardmäßig, um sie beim Starten des Herunterfahrens automatisch zu stoppen. Dies funktioniert auch umgekehrt - wenn ein anderes Gerät startet, wird es shutdown.targetgestoppt. Das Problem ist also , dass beim Herunterfahren etwas startet, was den Herunterfahrvorgang überschreibt.

Dies sollte in systemd v198 behoben worden sein, wodurch der Shutdown-Job "unersetzlich" wird.


Ich kann nicht upgraden :(
Martin

Ich muss die Konflikte entdecken und beheben
Martin

1

Möglicherweise ist der Swap noch aktiv, wenn "Zielabschaltung" erreicht ist. Meine Lösung bestand darin, die Deaktivierung des Austauschs vor dem Neustart zu erzwingen:

swapoff -a
swapoff /dev/md6

Danach verlief der Neustart für mich ohne Pause.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.