mirror of
https://github.com/dockur/windows.git
synced 2026-08-24 07:39:00 +01:00
feat: Install faster graphics driver for 2000/XP/2003 (#2167)
This commit is contained in:
+5
-1
@@ -28,7 +28,7 @@ setMachine() {
|
|||||||
|
|
||||||
case "${id,,}" in
|
case "${id,,}" in
|
||||||
|
|
||||||
"winnt4" | "win2k"* )
|
"winnt4" )
|
||||||
writeState "vga" "cirrus" || return 1 ;;
|
writeState "vga" "cirrus" || return 1 ;;
|
||||||
|
|
||||||
*) writeState "vga" "std" || return 1 ;;
|
*) writeState "vga" "std" || return 1 ;;
|
||||||
@@ -107,6 +107,10 @@ setMachine() {
|
|||||||
|
|
||||||
writeState "args" "-global q35-pcihost.x-pci-hole64-fix=false" || return 1
|
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 ;;
|
fi ;;
|
||||||
|
|
||||||
esac
|
esac
|
||||||
|
|||||||
+68
-5
@@ -42,9 +42,35 @@ SIFInstall() {
|
|||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ "${driver,,}" == "xp" || "${driver,,}" == "2k3" ]]; then
|
case "${driver,,}" in
|
||||||
addLegacyDrivers "$dir" "$target" "$driver" "$arch" "$drivers" || return 1
|
|
||||||
fi
|
"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
|
disableAutoReboot "$target" || return 1
|
||||||
setLegacyKey "$target" "$driver" "$arch" "$desc" || return 1
|
setLegacyKey "$target" "$driver" "$arch" "$desc" || return 1
|
||||||
@@ -156,6 +182,7 @@ addLegacyDrivers() {
|
|||||||
extractDrivers "$drivers" || return 1
|
extractDrivers "$drivers" || return 1
|
||||||
copyStorageDriver "$dir" "$target" "$driver" "$arch" "$drivers" || return 1
|
copyStorageDriver "$dir" "$target" "$driver" "$arch" "$drivers" || return 1
|
||||||
addNetworkDriver "$dir" "$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
|
addDisplayDriver "$dir" "$driver" "$arch" "$drivers" || return 1
|
||||||
addBalloonDriver "$dir" "$driver" "$arch" "$drivers" || return 1
|
addBalloonDriver "$dir" "$driver" "$arch" "$drivers" || return 1
|
||||||
|
|
||||||
@@ -224,7 +251,7 @@ addNetworkDriver() {
|
|||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
addDisplayDriver() {
|
addQXLDriver() {
|
||||||
|
|
||||||
local dir="$1"
|
local dir="$1"
|
||||||
local driver="$2"
|
local driver="$2"
|
||||||
@@ -259,6 +286,42 @@ addDisplayDriver() {
|
|||||||
return 0
|
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() {
|
addBalloonDriver() {
|
||||||
|
|
||||||
local dir="$1"
|
local dir="$1"
|
||||||
@@ -565,7 +628,7 @@ writeSIF() {
|
|||||||
' WaitForReboot="No"' \
|
' WaitForReboot="No"' \
|
||||||
' DriverSigningPolicy="Ignore"' \
|
' DriverSigningPolicy="Ignore"' \
|
||||||
' NonDriverSigningPolicy="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' \
|
' NoWaitAfterTextMode=1' \
|
||||||
' NoWaitAfterGUIMode=1' \
|
' NoWaitAfterGUIMode=1' \
|
||||||
' FileSystem=ConvertNTFS' \
|
' FileSystem=ConvertNTFS' \
|
||||||
|
|||||||
Reference in New Issue
Block a user