feat: Centralize boot marker checks (#2138)

This commit is contained in:
Kroese
2026-08-14 11:19:03 +02:00
committed by GitHub
parent a3461db9a8
commit 39862b25b5
2 changed files with 17 additions and 14 deletions
+8 -5
View File
@@ -481,7 +481,6 @@ skipInstall() {
local iso="$1" local iso="$1"
local previousBase="$2" local previousBase="$2"
local marker="$STORAGE/windows.boot"
local system local system
if [ -n "$previousBase" ]; then if [ -n "$previousBase" ]; then
@@ -569,7 +568,7 @@ skipInstall() {
return 0 return 0
fi fi
hasData && [ -f "$marker" ] && return 0 hasData && hasBootMarker && return 0
return 1 return 1
} }
@@ -687,7 +686,6 @@ findFile() {
local fname="$1" local fname="$1"
local dir file base local dir file base
local marker="$STORAGE/windows.boot"
dir=$(find / -maxdepth 1 -type d -iname "$fname" -print -quit) || return 1 dir=$(find / -maxdepth 1 -type d -iname "$fname" -print -quit) || return 1
@@ -696,7 +694,7 @@ findFile() {
fi fi
if [ -d "$dir" ]; then if [ -d "$dir" ]; then
if ! hasSystemImage && { ! hasDisk || [ ! -f "$marker" ]; }; then if ! hasSystemImage && { ! hasDisk || ! hasBootMarker; }; then
error "The bind $dir maps to a file that does not exist!" && return 1 error "The bind $dir maps to a file that does not exist!" && return 1
fi fi
fi fi
@@ -786,6 +784,11 @@ isLegacyBoot() {
[[ "${mode,,}" == "windows_legacy" ]] [[ "${mode,,}" == "windows_legacy" ]]
} }
hasBootMarker() {
[ -f "$STORAGE/windows.boot" ]
}
hasImage() { hasImage() {
local iso="$1" local iso="$1"
@@ -828,7 +831,7 @@ hasInstalledDisk() {
hasCompletedInstall() { hasCompletedInstall() {
hasSystemImage && return 0 hasSystemImage && return 0
hasData && [ -f "$STORAGE/windows.boot" ] hasData && hasBootMarker
} }
needsExtraction() { needsExtraction() {
+9 -9
View File
@@ -261,7 +261,7 @@ ready() {
# The marker means installation completed previously, so shutdown # The marker means installation completed previously, so shutdown
# no longer needs to infer guest readiness from firmware output. # no longer needs to infer guest readiness from firmware output.
[ -f "$STORAGE/windows.boot" ] && return 0 hasBootMarker && return 0
[ ! -s "$QEMU_PTY" ] && return 1 [ ! -s "$QEMU_PTY" ] && return 1
@@ -384,9 +384,7 @@ getBootMarker() {
markWindowsBooted() { markWindowsBooted() {
local file="$STORAGE/windows.boot" if hasBootMarker || [ ! -f "$BOOT" ]; then
if [ -f "$file" ] || [ ! -f "$BOOT" ]; then
return 0 return 0
fi fi
@@ -394,14 +392,16 @@ markWindowsBooted() {
# now booting from the installed disk rather than from setup media. # now booting from the installed disk rather than from setup media.
ready || return 0 ready || return 0
if ! touch "$file"; then local marker="$STORAGE/windows.boot"
if ! touch "$marker"; then
warn "failed to create Windows installation marker!" warn "failed to create Windows installation marker!"
return 0 return 0
fi fi
if ! setOwner "$file"; then if ! setOwner "$marker"; then
rm -f "$file" rm -f "$marker"
warn "failed to set the owner for \"$file\" !" warn "failed to set the owner for \"$marker\" !"
return 0 return 0
fi fi
@@ -430,7 +430,7 @@ finish() {
forceKillQemu "$reason" forceKillQemu "$reason"
if [ ! -f "$STORAGE/windows.boot" ]; then if ! hasBootMarker; then
markWindowsBooted markWindowsBooted
fi fi