mirror of
https://github.com/dockur/windows.git
synced 2025-10-28 03:45:48 +00:00
feat: Windows XP support
This commit is contained in:
parent
7baaedbed3
commit
dc6066efc1
1 changed files with 102 additions and 79 deletions
|
|
@ -532,30 +532,13 @@ detectImage() {
|
|||
return 0
|
||||
}
|
||||
|
||||
prepareImage() {
|
||||
prepareXP() {
|
||||
|
||||
local iso="$1"
|
||||
local dir="$2"
|
||||
|
||||
if [[ "${BOOT_MODE,,}" == "windows" ]]; then
|
||||
if [[ "${DETECTED,,}" != "winxp"* ]] && [[ "${DETECTED,,}" != "win2008"* ]]; then
|
||||
if [[ "${DETECTED,,}" != "winvista"* ]] && [[ "${DETECTED,,}" != "win7"* ]]; then
|
||||
|
||||
if [ -f "$dir/$ETFS" ] && [ -f "$dir/$EFISYS" ]; then
|
||||
return 0
|
||||
fi
|
||||
|
||||
if [ ! -f "$dir/$ETFS" ]; then
|
||||
warn "failed to locate file 'etfsboot.com' in ISO image, falling back to legacy boot!"
|
||||
else
|
||||
warn "failed to locate file 'efisys_noprompt.bin' in ISO image, falling back to legacy boot!"
|
||||
fi
|
||||
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
if [[ "${DETECTED,,}" == "winxpx86"* ]]; then
|
||||
BOOT_MODE="windows_legacy"
|
||||
ETFS="[BOOT]/Boot-NoEmul.img"
|
||||
|
||||
local drivers="$TMP/drivers"
|
||||
rm -rf "$drivers"
|
||||
|
|
@ -565,6 +548,13 @@ prepareImage() {
|
|||
exit 66
|
||||
fi
|
||||
|
||||
cp "$drivers/viostor/xp/x86/viostor.sys" "$dir/I386/viostor.sys"
|
||||
|
||||
mkdir -p "$dir/\$OEM\$/\$1/Drivers/viostor"
|
||||
cp "$drivers/viostor/xp/x86/viostor.cat" "$dir/\$OEM\$/\$1/Drivers/viostor/viostor.cat"
|
||||
cp "$drivers/viostor/xp/x86/viostor.sys" "$dir/\$OEM\$/\$1/Drivers/viostor/viostor.sys"
|
||||
cp "$drivers/viostor/xp/x86/viostor.inf" "$dir/\$OEM\$/\$1/Drivers/viostor/viostor.inf"
|
||||
|
||||
sed -i '/^\[SCSI.Load\]/s/$/\nviostor=viostor.sys,4/' "$dir/I386/TXTSETUP.SIF"
|
||||
sed -i '/^\[SourceDisksFiles.x86\]/s/$/\nviostor.sys=1,,,,,_x,4_,4,1,,,1,4/' "$dir/I386/TXTSETUP.SIF"
|
||||
sed -i '/^\[SCSI\]/s/$/\nviostor=\"Red Hat VirtIO SCSI Disk Device WinXP 32-bit\"/' "$dir/I386/TXTSETUP.SIF"
|
||||
|
|
@ -613,18 +603,13 @@ prepareImage() {
|
|||
echo "Language=00000409"
|
||||
} > "$sif"
|
||||
|
||||
cp "$drivers/viostor/xp/x86/viostor.sys" "$dir/I386/viostor.sys"
|
||||
|
||||
mkdir -p "$dir/\$OEM\$/\$1/Drivers/viostor"
|
||||
cp "$drivers/viostor/xp/x86/viostor.cat" "$dir/\$OEM\$/\$1/Drivers/viostor/viostor.cat"
|
||||
cp "$drivers/viostor/xp/x86/viostor.sys" "$dir/\$OEM\$/\$1/Drivers/viostor/viostor.sys"
|
||||
cp "$drivers/viostor/xp/x86/viostor.inf" "$dir/\$OEM\$/\$1/Drivers/viostor/viostor.inf"
|
||||
|
||||
BOOT_MODE="windows_legacy"
|
||||
ETFS="[BOOT]/Boot-NoEmul.img"
|
||||
|
||||
return 0
|
||||
fi
|
||||
}
|
||||
|
||||
prepareWin7() {
|
||||
|
||||
local iso="$1"
|
||||
local dir="$2"
|
||||
|
||||
ETFS="boot.img"
|
||||
BOOT_MODE="windows_legacy"
|
||||
|
|
@ -641,6 +626,44 @@ prepareImage() {
|
|||
return 0
|
||||
}
|
||||
|
||||
prepareImage() {
|
||||
|
||||
local iso="$1"
|
||||
local dir="$2"
|
||||
|
||||
if [[ "${BOOT_MODE,,}" == "windows" ]]; then
|
||||
if [[ "${DETECTED,,}" != "winxp"* ]] && [[ "${DETECTED,,}" != "win2008"* ]]; then
|
||||
if [[ "${DETECTED,,}" != "winvista"* ]] && [[ "${DETECTED,,}" != "win7"* ]]; then
|
||||
|
||||
if [ -f "$dir/$ETFS" ] && [ -f "$dir/$EFISYS" ]; then
|
||||
return 0
|
||||
fi
|
||||
|
||||
if [ ! -f "$dir/$ETFS" ]; then
|
||||
warn "failed to locate file 'etfsboot.com' in ISO image, falling back to legacy boot!"
|
||||
else
|
||||
warn "failed to locate file 'efisys_noprompt.bin' in ISO image, falling back to legacy boot!"
|
||||
fi
|
||||
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
if [[ "${DETECTED,,}" == "winxpx86"* ]]; then
|
||||
if ! prepareXP "$iso" "$dir"; then
|
||||
err "Failed to prepare Windows XP ISO!"
|
||||
return 1
|
||||
fi
|
||||
else
|
||||
if ! prepareWin7 "$iso" "$dir"; then
|
||||
err "Failed to prepare Windows 7 ISO!"
|
||||
return 1
|
||||
fi
|
||||
fi
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
updateImage() {
|
||||
|
||||
local iso="$1"
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue