From 8b53d3c8b738a3ce490cff639dbe1b37f2d9bbe6 Mon Sep 17 00:00:00 2001 From: Kroese Date: Tue, 6 Feb 2024 02:32:38 +0100 Subject: [PATCH] Update power.sh --- src/power.sh | 63 ++++++++++++++++++++++++++-------------------------- 1 file changed, 31 insertions(+), 32 deletions(-) diff --git a/src/power.sh b/src/power.sh index 7c5d245..540d4ee 100644 --- a/src/power.sh +++ b/src/power.sh @@ -12,9 +12,6 @@ QEMU_LOG="/run/shm/qemu.log" QEMU_OUT="/run/shm/qemu.out" QEMU_END="/run/shm/qemu.end" -BIOS_LINE="Booting from Hard Disk..." -BOOT_LINE="Windows Boot Manager" - rm -f /run/shm/qemu.* touch "$QEMU_LOG" @@ -25,6 +22,29 @@ _trap() { done } +ready() { + + [ -f "$STORAGE/windows.boot" ] && return 0 + [ ! -f "$QEMU_PTY" ] && return 1 + + if [ -f "$STORAGE/windows.old" ]; then + local last + local bios="Booting from Hard Disk..." + last=$(grep "^B.*" "$QEMU_PTY" | tail -1) + if [[ "${last,,}" == "${bios,,}" ]]; then + return 0 + fi + return 1 + fi + + local line="Windows Boot Manager" + if grep -Fq "$line" "$QEMU_PTY"; then + return 0 + fi + + return 1 +} + finish() { local pid @@ -43,21 +63,11 @@ finish() { done fi - if [ -f "$STORAGE/$BASE" ] && [ ! -f "$STORAGE/windows.boot" ]; then - if [ -f "$QEMU_PTY" ]; then - if [ ! -f "$STORAGE/windows.old" ]; then - if grep -Fq "$BOOT_LINE" "$QEMU_PTY"; then - rm -f "$STORAGE/$BASE" - touch "$STORAGE/windows.boot" - fi - else - local last - last=$(tail -n 1 "$QEMU_PTY") - if [[ "${last,,}" == "${BIOS_LINE,,}" ]]; then - rm -f "$STORAGE/$BASE" - touch "$STORAGE/windows.boot" - fi - fi + if [ ! -f "$STORAGE/windows.boot" ] && [ -f "$STORAGE/$BASE" ]; then + # Remove CD-ROM ISO after install + if ready; then + rm -f "$STORAGE/$BASE" + touch "$STORAGE/windows.boot" fi fi @@ -137,20 +147,9 @@ _graceful_shutdown() { finish "$code" && return "$code" fi - local abort="Cannot send ACPI signal during Windows setup, aborting..." - - if [ -f "$QEMU_PTY" ] && [ ! -f "$STORAGE/windows.boot" ]; then - if [ ! -f "$STORAGE/windows.old" ]; then - if ! grep -Fq "$BOOT_LINE" "$QEMU_PTY"; then - info "$abort" && finish "$code" && return "$code" - fi - else - local last - last=$(tail -n 1 "$QEMU_PTY") - if [[ "${last,,}" != "${BIOS_LINE,,}" ]]; then - info "$abort" && finish "$code" && return "$code" - fi - fi + if ! ready; then + info "Cannot send ACPI signal during Windows setup, aborting..." + finish "$code" && return "$code" fi # Send ACPI shutdown signal