Android x86 mit ACPI direkt herunterfahren
Eine einfache und effiziente Lösung
- Christian Süßenguth
- Kurz notiert
Ich betreibe mehrere virtuelle Maschinen mit Android x86 (LineageOS 14.1-RC4) in einer PROXMOX-Umgebung. Um diese Instanzen von Android x86 herunterzufahren, musste ich bisher jedes Mal manuell eingreifen.
Grund dafür ist, dass beim ACPI-Signal "Shutdown" von PROXMOX das Drücken der Hardwaretaste "Power" unter Android simuliert wird. Und das wiederum öffnet das folgende Aktions-Menü:
Da ich von virtuellen Maschinen erwarte, dass sie bei dem ACPI-Signal "Shutdown" des Hosts direkt und vor allem automatisch herunterfahren, ist dieses standardmäßige Verhalten von Android x86 kontraproduktiv.
Gerade bei einem Stromausfall verlängert das den gesamten Shutdown-Vorgang um die Zeitspanne, die unter "shutdown timeout" bei PROXMOX hinterlegt ist. Das wiederum liegt daran, dass die virtuelle Maschine nach dem ACPI-Signal aus Sicht von PROXMOX nicht ausgeht.
Es musste also eine einfache und effiziente Lösung her.
Was ich getestet habe
- Anpassen der
build.prop
und Ergänzen vonpoweroff.doubleclick=0
- Anpassen diverser Kernel-Parameter in GRUB
Keiner dieser Versuche war erfolgreich. Scheinbar ist es mit Bordmitteln und auf Basis der gefundenen Informationen nicht möglich, dieses Verhalten zu verändern. Die Option, Android x86 selbst zu kompilieren, kam für mich nicht in Frage.
Die Lösung
Also habe ich folgendes kleines Script geschrieben:
#!/system/bin/sh
while true; do
if [ "$(getevent -lc4 /dev/input/event0)" != "" ]; then
echo "Shutting down Android x86. Bye"
# you can use 'poweroff' here as an alternative
reboot -p
fi
sleep 1
done
Wenn du es unter /data/local/userinit.sh
speicherst, wird es nach jedem Start automatisch im Hintergrund ausgeführt und fährt die VM direkt nach dem ACPI-Signal "Shutdown" des PROXMOX-Hosts herunter.
Der Reboot-Befehl von PROXMOX funktioniert dabei weiterhin wie gehabt.
Was das Script genau tut
Das Script prüft sekündlich, ob ein Hardware-Tastendruck erfolgt ist (was in meiner Praxis ausschließlich bei einem ACPI-Signal seitens PROXMOX passiert) und führt direkt danach den Befehl reboot -p
bzw. poweroff
aus. Die Lösung braucht in der Praxis keine merkliche CPU-Leistung und führt zuverlässig dazu, dass der Host bei einem ACPI-Event direkt herunterfährt und ausgeht.
Sollte man das Shutdown-Menü doch mal wieder brauchen, kann man das Script einfach "deaktivieren", indem man die Passage reboot -p
auskommentiert und die VM mit reboot
einmal neu startet.
Hinweis
Bei Tests in PROXMOX ist es wichtig, den vorherigen "Shutdown-Befehl" unten in der Task-Queue stets mit einem Doppelklick auf den Task 1️⃣ und einem Klick auf "Stop" 2️⃣ zu beenden, falls die VM nicht heruntergefahren wird/wurde. Andernfalls häufen sich die Shutdown-Befehle und gehen nicht mehr sauber durch bzw. laufen in das PROXMOX-Timeout.
Ich möchte eine Android x86 VM mittels ACPI herunterfahren, habe dabei aber Schwierigkeiten
Ich unterstütze dich gerne beim Einrichten des Scripts und der entsprechenden Konfiguration von Android x86.
Schreib mir hierzu einfach über Kontakt, per Telegram oder unten in die Kommentare eine Nachricht.
Quellen und weiterführende Links
- Power Off Button and Shutdown
- Power Off Button and Shutdown
- How can I take the power button as an input to make an action run
- Power Button Issues (Sleep & Wake) - HELP !!! - Android x86
- howto shutdown
- Settings to remove power-off confirmation / dialogue
- Make device sleep when pressing the power button
- sleep/suspend vs. power-menu
- Android x86 Konfigurationsparameter von GRUB
- [SOLVED] Unable to locate GRUB on Android x86
- How can I run a script on boot?
Hi, ich bin Christian und Inhaber der Firma SWEETGOOD. Mit dem andersGOOD Blog möchte ich auch dich für datensichere IT-Lösungen begeistern. So bringst du dein Unternehmen voran, ohne großen Konzernen deine wertvollen Daten zu liefern. Probiers mal anders!
Kommentarbereich
Die Kommentare sind für dich noch deaktiviert, da du dem Setzen von Cookies bisher nicht zugestimmt hast.
Klicke oben rechts auf "Ja, klar!" und lade die Seite neu, um die Kommentare anzuzeigen.
Seite neu laden