Shutdown per Power Button: Unterschied zwischen den Versionen

Aus CyberWiki
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
 
(6 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 5: Zeile 5:
Zuerst wird ACPI installiert:
Zuerst wird ACPI installiert:
  $ sudo apt-get install acpid
  $ sudo apt-get install acpid
Das sollte es eigentlich gewesen sein. Falls aber durch Test nach wie vor nichts passiert kann man einen Workaround implementieren. Informationen findet man z.B. hier: https://www.geeksforgeeks.org/acpid-command-in-linux-with-examples/<br />
Das sollte es eigentlich gewesen sein. Falls aber durch Test nach wie vor nichts passiert, kann man einen Workaround implementieren. Informationen findet man z.B. hier: https://www.geeksforgeeks.org/acpid-command-in-linux-with-examples/<br />
Die Konfigurationsfiles findet man hier:
Die Konfigurationsfiles findet man hier:
  /etc/acpi bzw.
  /etc/acpi bzw.
Zeile 12: Zeile 12:
  event=button[ /]power
  event=button[ /]power
  action=/etc/acpi/powerbtn-acpi-support.sh
  action=/etc/acpi/powerbtn-acpi-support.sh
D.h. der event ist der Druck auf den Power Button, die action ist die Ausführung der bash-Prozedur. Man kann nun überprüfen, ob diese Prozedur überhaupt ausgeführt wird. Dazu stoppen die '''acpid''' im Hintergrund und starten den daemon im Vordergrund und schalten auch das Logging ein:
D.h. der event ist der Druck auf den Power Button, die action ist die Ausführung der bash-Prozedur. Man kann nun überprüfen, ob diese Prozedur überhaupt ausgeführt wird. Dazu stoppen wir '''acpid''' im Hintergrund, starten den daemon im Vordergrund und schalten auch das Logging ein:
  sudo service acpid stop
  sudo service acpid stop
  sudo acpid -f -l
  sudo acpid -f -l
Damit läuft acpid im Terminalfenster. Jetzt sollte bei Druck auf Power Button etwas passieren. In meinem Fall erscheint zweimal die Meldung
Damit läuft acpid im Terminalfenster. Jetzt sollte bei Druck auf den Power Button etwas passieren. In meinem Fall erscheint zweimal die Meldung
  received input layer event "button/power PBTN 00000080 00000000"
  received input layer event "button/power PBTN 00000080 00000000"
  rule from /etc/acpi/events/powerbtn-acpi-support matched
  rule from /etc/acpi/events/powerbtn-acpi-support matched
Zeile 22: Zeile 22:
  1 total rule matched
  1 total rule matched
  completed input layer event "button/power PBTN 00000080 00000000"
  completed input layer event "button/power PBTN 00000080 00000000"
Das bedeutet, dass die Prozedur '''powerbtn-acpi-support.sh''' durchlaufen wird, aber nicht bis zum shutdown-Befehl kommt, sondern zuvor durch if-Abfragen mit exit 0 verlassen wird. Warum das so ist, kann sicher untersucht werden, mir reicht aber, dass bei Knopfdruck ein shutdown durch geführt wird.<br />
Das bedeutet, dass die Prozedur '''powerbtn-acpi-support.sh''' durchlaufen wird, die aber nicht bis zum shutdown-Befehl kommt, sondern zuvor durch if-Abfragen mit exit 0 verlassen wird. Warum das so ist, kann sicher untersucht werden, mir reicht aber, dass bei Knopfdruck ein shutdown durchgeführt wird.<br />
'''acpid''' sollte jedenfalls wieder gestartet werden:
'''acpid''' sollte jedenfalls wieder gestartet werden:
  sudo service acpid start
  sudo service acpid start
===Workaround===
===Workaround===
Dieser besteht darin, in der Prozedur '''/etc/acpi/powerbtn-acpi-support.sh''' am Beginn folgendes einzufügen:
Dieser besteht darin, in der Prozedur '''/etc/acpi/powerbtn-acpi-support.sh''' am Beginn folgendes einzufügen:
Zeile 30: Zeile 31:
  /sbin/shutdown -h -P now "Power button pressed"
  /sbin/shutdown -h -P now "Power button pressed"
  exit 0
  exit 0
Damit sollte ein shutdown nach kurzem Knopfdruck unmittelbar durchgeführt werden.

Aktuelle Version vom 28. Januar 2023, 18:53 Uhr

Diese Beschreibung bezieht sich sich nicht auf den Raspberry Pi, sondern auf einen Server mit Debian Bullseye.
Ziel ist das Abschalten des Rechners durch Druck auf den Einschaltknopf und ohne zuvor ein Login durchzuführen. Hat man eine grafische Oberfläche installiert, kann man versuchen, über das Energiemenü das gewünschte Verhalten einzustellen.
Falls man bei einem Test aber festgestellt hat, dass nach einem kurzen Druck auf den Power Button nichts passiert, kann man dieser Anleitung folgen. Es ist keineswegs ratsam mehrere Sekunden auf den Power Button zu drücken, denn das heißt abschalten durch Stromentzug und ist nicht ratsam.

Server mittels ACPI herunterfahren

Zuerst wird ACPI installiert:

$ sudo apt-get install acpid

Das sollte es eigentlich gewesen sein. Falls aber durch Test nach wie vor nichts passiert, kann man einen Workaround implementieren. Informationen findet man z.B. hier: https://www.geeksforgeeks.org/acpid-command-in-linux-with-examples/
Die Konfigurationsfiles findet man hier:

/etc/acpi bzw.
/etc/acpi/events

In dem Ordner events befindet sich die Datei powerbtn-acpi-support mit folgendem Inhalt:

event=button[ /]power
action=/etc/acpi/powerbtn-acpi-support.sh

D.h. der event ist der Druck auf den Power Button, die action ist die Ausführung der bash-Prozedur. Man kann nun überprüfen, ob diese Prozedur überhaupt ausgeführt wird. Dazu stoppen wir acpid im Hintergrund, starten den daemon im Vordergrund und schalten auch das Logging ein:

sudo service acpid stop
sudo acpid -f -l

Damit läuft acpid im Terminalfenster. Jetzt sollte bei Druck auf den Power Button etwas passieren. In meinem Fall erscheint zweimal die Meldung

received input layer event "button/power PBTN 00000080 00000000"
rule from /etc/acpi/events/powerbtn-acpi-support matched
executing action "/etc/acpi/powerbtn-acpi-support.sh"
action exited with status 0
1 total rule matched
completed input layer event "button/power PBTN 00000080 00000000"

Das bedeutet, dass die Prozedur powerbtn-acpi-support.sh durchlaufen wird, die aber nicht bis zum shutdown-Befehl kommt, sondern zuvor durch if-Abfragen mit exit 0 verlassen wird. Warum das so ist, kann sicher untersucht werden, mir reicht aber, dass bei Knopfdruck ein shutdown durchgeführt wird.
acpid sollte jedenfalls wieder gestartet werden:

sudo service acpid start

Workaround

Dieser besteht darin, in der Prozedur /etc/acpi/powerbtn-acpi-support.sh am Beginn folgendes einzufügen:

# workaround shutdown
/sbin/shutdown -h -P now "Power button pressed"
exit 0

Damit sollte ein shutdown nach kurzem Knopfdruck unmittelbar durchgeführt werden.