Unverified Commit 42a52953 authored by Kroese's avatar Kroese Committed by GitHub
Browse files

feat: Detect SeaBIOS status (#153)

parent 249c5b77
Loading
Loading
Loading
Loading
+34 −16
Original line number Diff line number Diff line
@@ -22,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
@@ -40,6 +63,14 @@ finish() {
    done
  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

  pid="/var/run/tpm.pid"
  [ -f "$pid" ] && pKill "$(<"$pid")"

@@ -116,18 +147,10 @@ _graceful_shutdown() {
    finish "$code" && return "$code"
  fi

  local remove_iso=""

  if [ ! -f "$STORAGE/windows.old" ]; then
    if [ ! -f "$STORAGE/windows.boot" ] && [ -f "$QEMU_PTY" ]; then
      if grep -Fq "Windows Boot Manager" "$QEMU_PTY"; then
        [ -f "$STORAGE/$BASE" ] && remove_iso="y"
      else
  if ! ready; then
    info "Cannot send ACPI signal during Windows setup, aborting..."
    finish "$code" && return "$code"
  fi
    fi
  fi

  # Send ACPI shutdown signal
  echo 'system_powerdown' | nc -q 1 -w 1 localhost "${QEMU_PORT}" > /dev/null
@@ -151,11 +174,6 @@ _graceful_shutdown() {

  if [ "$cnt" -ge "$QEMU_TIMEOUT" ]; then
    error "Shutdown timeout reached, aborting..."
  else
    if [ -n "$remove_iso" ]; then
      rm -f "$STORAGE/$BASE"
      touch "$STORAGE/windows.boot"
    fi
  fi

  finish "$code" && return "$code"