mirror of
https://github.com/dockur/windows.git
synced 2026-08-24 15:48:59 +01:00
feat: Centralize boot marker checks (#2138)
This commit is contained in:
+8
-5
@@ -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
@@ -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
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user