Discussion:
systemd Reboot/Poweroff Problematik
(zu alt für eine Antwort)
Friedemann Stoyan
2024-03-22 14:15:09 UTC
Permalink
Moin!

Beim Reboot/Poweroff ist es ja so, dass alle Services, Timers,
Sockets whatever benendet werden. Es wird ein shutdown-ramfs generiert
und dorthin chrooted. Dann werden die Filesysteme umounted.
Irgendwann auch /var/log, dann sehe ich nicht mehr wie es
weitergeht. Die Meldungen fliegen in unglaublicher Geschwindigkeit
über die Console. Mit lesen ist da nicht viel. Ich kann noch
erkennen, das da irgendwas schief geht, ich sehe aber nicht was, da
der Bildschirm ja sofort schwarz wird. Kann man den systemd
irgendwie dazu bewegen, nach der letzten Ausschrift kurz, vielleicht
so 5s, innezuhalten?

Ich erinnere mich dunkel, da mal etwas gelesen zu haben, wie man das
bewerkstelligt. Ich finde das aber nicht mehr. Bei Google finde ich
nur Unsinn. Vielleicht irre ich mich auch und sowas gibt es gar
nicht.

Ein Kollege hat mir schon vorgeschlagen, ich soll ein Video
aufnehmen und dann in Zeitlupe schauen. Aber es muss doch auch so
gehen! Ich kann doch nicht schon wieder der Erste und Einzigste
sein, der so etwas will!

Irgendwelche Ideeen?

mfg Friedemann
Marco Moock
2024-03-22 14:58:18 UTC
Permalink
Post by Friedemann Stoyan
Irgendwelche Ideeen?
Ggf. gibt es die Option, per ACPI nicht das Ausschalten selbst
auszulösen, so wie früher, als man AT-Netzteile hatte.
Markus Schaaf
2024-03-22 15:32:26 UTC
Permalink
Post by Friedemann Stoyan
Moin!
Beim Reboot/Poweroff ist es ja so, dass alle Services, Timers,
Sockets whatever benendet werden. Es wird ein shutdown-ramfs generiert
und dorthin chrooted. Dann werden die Filesysteme umounted.
Irgendwann auch /var/log, dann sehe ich nicht mehr wie es
weitergeht. Die Meldungen fliegen in unglaublicher Geschwindigkeit
über die Console. Mit lesen ist da nicht viel. Ich kann noch
erkennen, das da irgendwas schief geht, ich sehe aber nicht was, da
der Bildschirm ja sofort schwarz wird. Kann man den systemd
irgendwie dazu bewegen, nach der letzten Ausschrift kurz, vielleicht
so 5s, innezuhalten?
$ systemctl halt

MfG
Friedemann Stoyan
2024-03-23 04:37:45 UTC
Permalink
Post by Markus Schaaf
$ systemctl halt
Hilft (bei mir) nicht. Das Display geht sofort nach Erreichen des Halt aus.

mfg Friedemann
Joerg Walther
2024-03-23 11:48:09 UTC
Permalink
Post by Friedemann Stoyan
Post by Markus Schaaf
$ systemctl halt
Hilft (bei mir) nicht. Das Display geht sofort nach Erreichen des Halt aus.
Das ist ja auch der Befehl zum sofortigen Herunterfahren. Aber ich habe
mal ChatGPT mit deiner Frage gefüttert, es meint:

"Ja, es gibt Möglichkeiten, systemd dazu zu bringen, nach der letzten
Ausgabe kurz innezuhalten, bevor das System heruntergefahren oder neu
gestartet wird. Sie können dies tun, indem Sie die Optionen für den
Boot-Loader (z. B. GRUB für BIOS/UEFI-Systeme) oder die
Kernel-Boot-Parameter verwenden.

Hier ist ein allgemeiner Ansatz:

Bearbeiten Sie die Konfigurationsdatei des Boot-Loaders: Je nach Ihrem
Boot-Loader (z. B. GRUB, LILO) müssen Sie möglicherweise seine
Konfigurationsdatei bearbeiten. In der GRUB-Konfigurationsdatei befindet
sich normalerweise unter Linux in der Regel in /etc/default/grub oder
/boot/grub/grub.cfg.

Fügen Sie den Kernel-Boot-Parameter hinzu: Fügen Sie dem Eintrag für das
Standardbetriebssystem den Kernel-Boot-Parameter
systemd.show_status=true hinzu. Dieser Parameter fordert systemd auf,
den aktuellen Status kurz vor dem Herunterfahren oder Neustarten des
Systems anzuzeigen.

Aktualisieren Sie den Boot-Loader: Nachdem Sie die Konfigurationsdatei
bearbeitet haben, aktualisieren Sie den Boot-Loader, damit die
Änderungen wirksam werden. Für GRUB führen Sie beispielsweise den Befehl
sudo update-grub aus.

Nachdem Sie diese Schritte ausgeführt haben, sollte systemd den
aktuellen Status kurz vor dem Herunterfahren oder Neustarten des Systems
anzeigen, sodass Sie Zeit haben, die Meldungen zu lesen, bevor der
Bildschirm schwarz wird. Die Dauer der Anzeige hängt von Ihrem System
und den Einstellungen des Boot-Loaders ab, kann jedoch normalerweise
kurz sein (etwa 5 Sekunden)."

Ob das so funktioniert?

-jw-
--
And now for something completely different...
Friedemann Stoyan
2024-03-23 12:23:25 UTC
Permalink
Post by Joerg Walther
Ob das so funktioniert?
Genau das meinte ich als ich schrieb: „Bei Google finde ich nur Unsinn.“ Das
ist alles Bullshit! Ich habe ja bei mir als Standard:

$ cat /proc/cmdline
initrd=\initramfs-linux.img root=/dev/mapper/vg0-root rw consoleblank=0 systemd.show_status=1 audit=0 quiet

Und es wird ja auch alles angezeigt. Nur zu schnell, das man es nicht lesen
kann.

Ich muss es wohl einsehen: Ich bin der Erste und Einzigste der dieses Problem
hat.

Nichts für ungut.


mfg Friedemann
Sieghard Schicktanz
2024-03-23 19:59:15 UTC
Permalink
Hallo Joerg,
Post by Joerg Walther
Das ist ja auch der Befehl zum sofortigen Herunterfahren. Aber ich habe
Reichlich unsinniges, wenn auch "eloquent formuliert".
Sozusagen "KD in voller Fahrt" (KD: Künstliche Dummheit).
(Als ob die "ND" nicht schon (mehr als) ausreichend wäre...)

...
Post by Joerg Walther
systemd.show_status=true hinzu.
ist das alles auch ohne die vorbeschriebenen Verrenkungen machbar.
--
(Weitergabe von Adressdaten, Telefonnummern u.ä. ohne Zustimmung
nicht gestattet, ebenso Zusendung von Werbung oder ähnlichem)
-----------------------------------------------------------
Mit freundlichen Grüßen, S. Schicktanz
-----------------------------------------------------------
Markus Schaaf
2024-03-23 13:08:24 UTC
Permalink
Post by Friedemann Stoyan
Post by Markus Schaaf
$ systemctl halt
Hilft (bei mir) nicht. Das Display geht sofort nach Erreichen des Halt aus.
Das liegt jedoch an Deinem Monitor oder Grafiktreiber. Versuche
doch mal, ihn wieder einzuschalten. Allerdings kenne ich solche
Macken von manchen Monitoren bei Einspeisung per HDMI.

Du kannst versuchen, das Abschalten der Grafikkarte zu
Post by Friedemann Stoyan
-[0000:00]-+-00.0 Intel Corporation Gemini Lake Host Bridge
+-00.1 Intel Corporation Celeron/Pentium Silver Processor Dynamic Platform and Thermal Framework Processor Participant
+-02.0 Intel Corporation GeminiLake [UHD Graphics 605]
+-0c.0 Intel Corporation Gemini Lake PCH CNVi WiFi
...
auto
Falls Du das Problem mit dem Monitor bzw. der Grafikkarte nicht
lösen kannst, bliebe noch die Verwendung einer seriellen Konsole.
Falls Du noch eine echte serielle Schnittstelle hast, gibst Du
dem Kernel als Option z.B. "console=ttyS0,115200" mit. Für GRUB
ist das in /etc/default/grub bei GRUB_CMDLINE_LINUX= zu ergänzen.
Danach "update-grub" nicht vergessen. Dann kannst Du Dich von
einem anderen Rechner aus mit einem Nullmodemkabel verbinden,
z.B. "screen /dev/ttyUSB0 115200"

MfG
Friedemann Stoyan
2024-03-23 14:40:58 UTC
Permalink
Post by Markus Schaaf
Post by Friedemann Stoyan
Post by Markus Schaaf
$ systemctl halt
Hilft (bei mir) nicht. Das Display geht sofort nach Erreichen des Halt aus.
Das liegt jedoch an Deinem Monitor oder Grafiktreiber. Versuche
doch mal, ihn wieder einzuschalten. Allerdings kenne ich solche
Macken von manchen Monitoren bei Einspeisung per HDMI.
Bei dem Gerät handelt es sich um einen Laptop Thinkpad X280. Eventuell könnte
ich da mal mit externem Monitor experimentieren.
Post by Markus Schaaf
Du kannst versuchen, das Abschalten der Grafikkarte zu
Post by Friedemann Stoyan
-[0000:00]-+-00.0 Intel Corporation Gemini Lake Host Bridge
+-00.1 Intel Corporation Celeron/Pentium Silver Processor Dynamic Platform and Thermal Framework Processor Participant
+-02.0 Intel Corporation GeminiLake [UHD Graphics 605]
+-0c.0 Intel Corporation Gemini Lake PCH CNVi WiFi
...
auto
Falls Du das Problem mit dem Monitor bzw. der Grafikkarte nicht
lösen kannst, bliebe noch die Verwendung einer seriellen Konsole.
Falls Du noch eine echte serielle Schnittstelle hast, gibst Du
dem Kernel als Option z.B. "console=ttyS0,115200" mit. Für GRUB
ist das in /etc/default/grub bei GRUB_CMDLINE_LINUX= zu ergänzen.
Danach "update-grub" nicht vergessen. Dann kannst Du Dich von
einem anderen Rechner aus mit einem Nullmodemkabel verbinden,
z.B. "screen /dev/ttyUSB0 115200"
Ich glaube, seriell wird das nichts. Hat das Gerät ja nicht. Und wenn ich mit
externem Seriellen Adapter experimentiere (USB oder Bluetooth) werden die
Treiber ja sicher entladen und was ich sehen will kriege ich nicht mehr mit.

Das mit der Grafikkarte scheint mir am erfolgsversprechensten zu sein.


mfg Friedemann
Markus Schaaf
2024-03-23 17:33:45 UTC
Permalink
Post by Friedemann Stoyan
Post by Markus Schaaf
Post by Friedemann Stoyan
Post by Markus Schaaf
$ systemctl halt
Hilft (bei mir) nicht. Das Display geht sofort nach Erreichen des Halt aus.
Das liegt jedoch an Deinem Monitor oder Grafiktreiber. Versuche
doch mal, ihn wieder einzuschalten. Allerdings kenne ich solche
Macken von manchen Monitoren bei Einspeisung per HDMI.
Bei dem Gerät handelt es sich um einen Laptop Thinkpad X280. Eventuell könnte
ich da mal mit externem Monitor experimentieren.
Post by Markus Schaaf
Du kannst versuchen, das Abschalten der Grafikkarte zu
Das funktioniert nicht. Allerdings hatte ich das Problem auch
noch nicht verstanden. Ich habe das jetzt ewig an meinem eigenen
Laptop ausprobiert. Ich habe hier Intel-Grafik, also i915 als
Treiber. Der macht genau das. Beim "Unbind" des Treibers geht das
LCD aus. Oder wird zumindest schwarz. Das Gleiche passiert, wenn
man "rmmod -f i915" ausführt. Da mich das nun interessiert hat,
habe ich solange rumprobiert, bis ich auf folgende
Kernel-Parameter gekommen bin, die das LCD beim System-Halt anlassen:

linux ... nomodeset i915.modeset=0 i915.fastboot=1

Trotzdem wärest Du damit nicht glücklich, wenn es wie bei mir
läuft. Ich sehe zwar die Kernelmeldung "System halted", aber
nicht die davor, weil kurz vorher der Bildschirm gelöscht wird.
Es wirkt so, als würde auf einen anderen Framebuffer oder VT
umgeschaltet. Hier muss ich erstmal passen, weil ich nicht weiß,
was er Auslöser ist.

MfG
Markus Schaaf
2024-03-23 21:14:59 UTC
Permalink
Post by Markus Schaaf
Trotzdem wärest Du damit nicht glücklich, wenn es wie bei mir
läuft. Ich sehe zwar die Kernelmeldung "System halted", aber
nicht die davor, weil kurz vorher der Bildschirm gelöscht wird.
Es wirkt so, als würde auf einen anderen Framebuffer oder VT
umgeschaltet. Hier muss ich erstmal passen, weil ich nicht weiß,
was er Auslöser ist.
Ich war neugierig und habe weiter rumprobiert. Letztlich bin ich
auf die gleiche Lösung wie Peter gekommen:

$ sudoedit /usr/lib/systemd/system-shutdown/wait
#!/bin/bash
for i in $(seq 10 -1 0)
do
printf 'waiting...%2d\r' $i >/dev/console
sleep 1
done

$ sudo chmod a+x /usr/lib/systemd/system-shutdown/wait

Auch das Problem mit dem Bildschirmlöschen habe ich gelöst
bekommen. Plymouth war dran schuld. Ich hatte den zwar
deaktiviert, logisch, aber etliche Service-Units werden trotzdem
aufgerufen und irritieren die Grafikkarte. Letztlich habe ich
Plymouth und alle Dienste, die irgendwas ausgeben wollen (in
meinem Fall noch tpm2-totp) komplett deinstalliert. Test:

$ systemctl --all | grep plymouth

Zur Not alle maskieren, wenn deinstallieren nicht geht. Jetzt
kann ich alle Meldungen vor dem Shutdown lesen.

MfG
Michael Ablassmeier
2024-03-23 13:33:21 UTC
Permalink
Post by Friedemann Stoyan
Ich erinnere mich dunkel, da mal etwas gelesen zu haben, wie man das
bewerkstelligt. Ich finde das aber nicht mehr. Bei Google finde ich
nur Unsinn. Vielleicht irre ich mich auch und sowas gibt es gar
nicht.
eventuell über printk delay?

https://sysctl-explorer.net/kernel/printk_delay/
--
bye,
- michael
Tim Ritberg
2024-03-23 19:04:26 UTC
Permalink
Post by Michael Ablassmeier
Post by Friedemann Stoyan
Ich erinnere mich dunkel, da mal etwas gelesen zu haben, wie man das
bewerkstelligt. Ich finde das aber nicht mehr. Bei Google finde ich
nur Unsinn. Vielleicht irre ich mich auch und sowas gibt es gar
nicht.
eventuell über printk delay?
https://sysctl-explorer.net/kernel/printk_delay/
Man kann auch über LAN loggen:
https://www.kernel.org/doc/Documentation/networking/netconsole.txt

Tim
Peter J. Holzer
2024-03-23 20:17:11 UTC
Permalink
Post by Friedemann Stoyan
Beim Reboot/Poweroff ist es ja so, dass alle Services, Timers,
Sockets whatever benendet werden. Es wird ein shutdown-ramfs generiert
und dorthin chrooted. Dann werden die Filesysteme umounted.
Irgendwann auch /var/log, dann sehe ich nicht mehr wie es
weitergeht. Die Meldungen fliegen in unglaublicher Geschwindigkeit
über die Console. Mit lesen ist da nicht viel. Ich kann noch
erkennen, das da irgendwas schief geht, ich sehe aber nicht was, da
der Bildschirm ja sofort schwarz wird. Kann man den systemd
irgendwie dazu bewegen, nach der letzten Ausschrift kurz, vielleicht
so 5s, innezuhalten?
Du könntest ein Script, das 5 Sekunden (oder wie lang auch immer)
schläft, nach /usr/lib/systemd/system-shutdown packen.

Laut
https://www.man7.org/linux/man-pages/man8/systemd-poweroff.service.8.html
läuft das

| after all services have been shut down, and after most mounts have
| been detached (the root file system as well as /run/ and various API
| file systems are still around though).

Wenn in einem Shutdown-Script etwas schief geht, sollte das also vorher
passieren.

hp
Friedemann Stoyan
2024-03-24 05:06:40 UTC
Permalink
Post by Peter J. Holzer
Du könntest ein Script, das 5 Sekunden (oder wie lang auch immer)
schläft, nach /usr/lib/systemd/system-shutdown packen.
Funktioniert perfekt! Ich habe gleich das Script von Markus genommen. Besten
Dank für die Anregungen und Inspiration!


mfg Friedemann
Jan Novak
2024-03-25 07:30:37 UTC
Permalink
Post by Friedemann Stoyan
Irgendwelche Ideeen?
Ich hätte noch einen völlig anderen Ansatz:
Nimm das Herunterfahren mit deinem Handy auf (hochaufgelöst usw). und
schaus dir dann in Ruhe an ...

Jan
Peter J. Holzer
2024-03-25 07:42:17 UTC
Permalink
Post by Jan Novak
Post by Friedemann Stoyan
Irgendwelche Ideeen?
Nimm das Herunterfahren mit deinem Handy auf (hochaufgelöst usw). und
schaus dir dann in Ruhe an ...
Genau das stand in dem Posting, auf das Du geantwortet hast ...

hp

Loading...