Skip to content

Commit

Permalink
feat: Detect Windows boot manager (#7)
Browse files Browse the repository at this point in the history
  • Loading branch information
kroese authored Feb 6, 2024
1 parent d5f4b47 commit b0eddb2
Show file tree
Hide file tree
Showing 4 changed files with 32 additions and 23 deletions.
File renamed without changes.
File renamed without changes.
22 changes: 11 additions & 11 deletions src/install.sh
Original file line number Diff line number Diff line change
Expand Up @@ -3,17 +3,17 @@ set -Eeuo pipefail

: "${MANUAL:=""}"
: "${DETECTED:=""}"
: "${VERSION:="win11arm"}"
: "${VERSION:="win11arm64"}"

if [[ "${VERSION}" == \"*\" || "${VERSION}" == \'*\' ]]; then
VERSION="${VERSION:1:-1}"
fi

[[ "${VERSION,,}" == "11" ]] && VERSION="win11arm"
[[ "${VERSION,,}" == "win11" ]] && VERSION="win11arm"
[[ "${VERSION,,}" == "11" ]] && VERSION="win11arm64"
[[ "${VERSION,,}" == "win11" ]] && VERSION="win11arm64"

[[ "${VERSION,,}" == "10" ]] && VERSION="win10arm"
[[ "${VERSION,,}" == "win10" ]] && VERSION="win10arm"
[[ "${VERSION,,}" == "10" ]] && VERSION="win10arm64"
[[ "${VERSION,,}" == "win10" ]] && VERSION="win10arm64"

CUSTOM="custom.iso"

Expand Down Expand Up @@ -65,8 +65,8 @@ getVersion() {
local name="$1"
local detected=""

[[ "${name,,}" == *"windows 11"* ]] && detected="win11arm"
[[ "${name,,}" == *"windows 10"* ]] && detected="win10arm"
[[ "${name,,}" == *"windows 11"* ]] && detected="win11arm64"
[[ "${name,,}" == *"windows 10"* ]] && detected="win10arm64"

echo "$detected"
return 0
Expand Down Expand Up @@ -235,10 +235,10 @@ getESD() {
local winCatalog size

case "${VERSION,,}" in
win11arm)
win11arm64)
winCatalog="https://go.microsoft.com/fwlink?linkid=2156292"
;;
win10arm)
win10arm64)
winCatalog="https://go.microsoft.com/fwlink/?LinkId=841361"
;;
*)
Expand Down Expand Up @@ -407,10 +407,10 @@ extractESD() {
local edition imageIndex imageEdition

case "${VERSION,,}" in
win11arm)
win11arm64)
edition="11 pro"
;;
win10arm)
win10arm64)
edition="10 pro"
;;
*)
Expand Down
33 changes: 21 additions & 12 deletions src/power.sh
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@ QEMU_PTY="/run/shm/qemu.pty"
QEMU_LOG="/run/shm/qemu.log"
QEMU_OUT="/run/shm/qemu.out"
QEMU_END="/run/shm/qemu.end"
BOOT_LINE="starting Boot0002"

rm -f /run/shm/qemu.*
touch "$QEMU_LOG"
Expand All @@ -23,6 +22,19 @@ _trap() {
done
}

ready() {

[ -f "$STORAGE/windows.boot" ] && return 0
[ ! -f "$QEMU_PTY" ] && return 1

local line="Windows Boot Manager"
if grep -Fq "$line" "$QEMU_PTY"; then
return 0
fi

return 1
}

finish() {

local pid
Expand All @@ -41,12 +53,11 @@ finish() {
done
fi

if [ ! -f "$STORAGE/windows.boot" ] && [ -f "$QEMU_PTY" ]; then
if grep -Fq "$BOOT_LINE" "$QEMU_PTY"; then
if [ -f "$STORAGE/$BASE" ]; then
rm -f "$STORAGE/$BASE"
touch "$STORAGE/windows.boot"
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

Expand Down Expand Up @@ -126,11 +137,9 @@ _graceful_shutdown() {
finish "$code" && return "$code"
fi

if [ ! -f "$STORAGE/windows.boot" ] && [ -f "$QEMU_PTY" ]; then
if ! grep -Fq "$BOOT_LINE" "$QEMU_PTY"; then
info "Cannot send ACPI signal during Windows setup, aborting..."
finish "$code" && return "$code"
fi
if ! ready; then
info "Cannot send ACPI signal during Windows setup, aborting..."
finish "$code" && return "$code"
fi

# Send ACPI shutdown signal
Expand Down

0 comments on commit b0eddb2

Please sign in to comment.