feat: Install faster graphics driver for 2000/XP/2003 (#2167)

This commit is contained in:
Kroese
2026-08-20 22:43:01 +02:00
committed by GitHub
parent eb1befd90e
commit eeaf64bdd9
2 changed files with 73 additions and 6 deletions
+5 -1
View File
@@ -28,7 +28,7 @@ setMachine() {
case "${id,,}" in
"winnt4" | "win2k"* )
"winnt4" )
writeState "vga" "cirrus" || return 1 ;;
*) writeState "vga" "std" || return 1 ;;
@@ -107,6 +107,10 @@ setMachine() {
writeState "args" "-global q35-pcihost.x-pci-hole64-fix=false" || return 1
else
writeState "args" "-global PIIX4_PM.acpi-root-pci-hotplug=off" || return 1
fi ;;
esac
+68 -5
View File
@@ -42,9 +42,35 @@ SIFInstall() {
return 1
fi
if [[ "${driver,,}" == "xp" || "${driver,,}" == "2k3" ]]; then
addLegacyDrivers "$dir" "$target" "$driver" "$arch" "$drivers" || return 1
fi
case "${driver,,}" in
"2k" )
# Windows 2000 keeps its existing storage/network path, but still needs
# the QBochs display package staged for Plug and Play setup.
extractDrivers "$drivers" || return 1
if ! addDisplayDriver "$dir" "$driver" "$arch" "$drivers"; then
rm -rf "$drivers" || :
return 1
fi
if ! rm -rf "$drivers"; then
warn "failed to clean temporary driver files!"
fi ;;
"xp" )
addLegacyDrivers "$dir" "$target" "$driver" "$arch" "$drivers" || return 1 ;;
"2k3" )
if [[ "${arch,,}" == "x86" ]]; then
error "The 32-bit version of $desc is not supported!" && return 1
fi
addLegacyDrivers "$dir" "$target" "$driver" "$arch" "$drivers" || return 1 ;;
esac
disableAutoReboot "$target" || return 1
setLegacyKey "$target" "$driver" "$arch" "$desc" || return 1
@@ -156,6 +182,7 @@ addLegacyDrivers() {
extractDrivers "$drivers" || return 1
copyStorageDriver "$dir" "$target" "$driver" "$arch" "$drivers" || return 1
addNetworkDriver "$dir" "$driver" "$arch" "$drivers" || return 1
addQXLDriver "$dir" "$driver" "$arch" "$drivers" || return 1
addDisplayDriver "$dir" "$driver" "$arch" "$drivers" || return 1
addBalloonDriver "$dir" "$driver" "$arch" "$drivers" || return 1
@@ -224,7 +251,7 @@ addNetworkDriver() {
return 0
}
addDisplayDriver() {
addQXLDriver() {
local dir="$1"
local driver="$2"
@@ -259,6 +286,42 @@ addDisplayDriver() {
return 0
}
addDisplayDriver() {
local dir="$1"
local driver="$2"
local arch="$3"
local drivers="$4"
local qbochs_arch="$arch"
[[ "${qbochs_arch,,}" == "amd64" ]] && qbochs_arch="x64"
local source="$drivers/qbochs/$driver/$qbochs_arch"
local destination="$dir/\$OEM\$/\$1/Drivers/QBochs"
if [ ! -d "$source" ]; then
error "Failed to locate required QBochs display driver directory: $source"
return 1
fi
local file
for file in qbochs.inf qbochs.sys; do
if [ ! -f "$source/$file" ]; then
error "Failed to locate required QBochs display driver file: $file"
return 1
fi
done
mkdir -p "$destination" || return 1
cp -L "$source/qbochs.inf" "$destination/qbochs.inf" || return 1
cp -L "$source/qbochs.sys" "$destination/qbochs.sys" || return 1
return 0
}
addBalloonDriver() {
local dir="$1"
@@ -565,7 +628,7 @@ writeSIF() {
' WaitForReboot="No"' \
' DriverSigningPolicy="Ignore"' \
' NonDriverSigningPolicy="Ignore"' \
' OemPnPDriversPath="Drivers\viostor;Drivers\NetKVM;Drivers\sata;Drivers\QXL;Drivers\Balloon"' \
' OemPnPDriversPath="Drivers\viostor;Drivers\NetKVM;Drivers\sata;Drivers\QXL;Drivers\QBochs;Drivers\Balloon"' \
' NoWaitAfterTextMode=1' \
' NoWaitAfterGUIMode=1' \
' FileSystem=ConvertNTFS' \