fix: Derive NT5 boot load size from extracted image (#1991)

This commit is contained in:
Kroese
2026-07-26 08:34:21 +02:00
committed by GitHub
parent c589e1be18
commit bada80331d
2 changed files with 39 additions and 29 deletions
+38 -28
View File
@@ -1044,43 +1044,53 @@ EOC
getBootLoadSize() { getBootLoadSize() {
local iso="$1" local iso="$1"
local desc="$2" local dir="$2"
local boot_info value local desc="$3"
local boot_info size value
if ! boot_info=$(isoinfo -d -i "$iso"); then case "${DETECTED,,}" in
"win2k"* | "winxp"* | "win2003"* )
case "${DETECTED,,}" in if [ ! -s "$dir/$ETFS" ]; then
"win2k"* | "winxp"* | "win2003"* ) error "Failed to locate file \"$ETFS\" in $desc ISO image!"
BOOT_LOAD_SIZE=4 return 1
return 0 fi
;;
esac
error "Failed to read boot image information from $desc ISO!" if ! size=$(stat -c%s "$dir/$ETFS"); then
return 1 error "Failed to determine boot image size from $desc ISO!"
fi return 1
fi
value=$(awk '/Nsect / { print $NF; exit }' <<< "$boot_info") if (( size < 512 || size % 512 != 0 )); then
error "Invalid boot image size found in $desc ISO!"
return 1
fi
if [ -z "$value" ]; then BOOT_LOAD_SIZE=$((size / 512))
;;
case "${DETECTED,,}" in * )
"win2k"* | "winxp"* | "win2003"* )
BOOT_LOAD_SIZE=4
return 0
;;
esac
error "Failed to determine boot image load size from $desc ISO!" if ! boot_info=$(isoinfo -d -i "$iso"); then
return 1 error "Failed to read boot image information from $desc ISO!"
fi return 1
fi
if [[ ! "$value" =~ ^[0-9]+$ ]] || [ "${#value}" -gt 5 ]; then value=$(awk '/Nsect / { print $NF; exit }' <<< "$boot_info")
error "Invalid boot image load size found in $desc ISO!"
return 1
fi
BOOT_LOAD_SIZE=$((10#$value)) if [ -z "$value" ]; then
error "Failed to determine boot image load size from $desc ISO!"
return 1
fi
if [[ ! "$value" =~ ^[0-9]+$ ]] || [ "${#value}" -gt 5 ]; then
error "Invalid boot image load size found in $desc ISO!"
return 1
fi
BOOT_LOAD_SIZE=$((10#$value))
;;
esac
if (( BOOT_LOAD_SIZE < 1 || BOOT_LOAD_SIZE > 65535 )); then if (( BOOT_LOAD_SIZE < 1 || BOOT_LOAD_SIZE > 65535 )); then
error "Invalid boot image load size found in $desc ISO!" error "Invalid boot image load size found in $desc ISO!"
+1 -1
View File
@@ -784,7 +784,7 @@ prepareImage() {
if [[ "${BOOT_MODE,,}" == "windows_legacy" && if [[ "${BOOT_MODE,,}" == "windows_legacy" &&
"${DETECTED,,}" != "win9"* ]]; then "${DETECTED,,}" != "win9"* ]]; then
getBootLoadSize "$iso" "$desc" || return 1 getBootLoadSize "$iso" "$dir" "$desc" || return 1
fi fi
skipVersion "$DETECTED" && return 0 skipVersion "$DETECTED" && return 0