Android x86 mit ACPI direkt herunterfahren

Eine einfache und effiziente Lösung

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ü:

Das Shutdown-Menü von Android

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 von poweroff.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.

Die Task-Queue von PROXMOX
* * *

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.

* * *
* * *
Christian Süßenguth Christian Süßenguth @sweetgood

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

👾 Magst du Kekse?

Ich würde gerne Cookies setzen

Ist das OK für dich?