windows: 区分甲骨文的 vioscsi

This commit is contained in:
bin456789
2026-09-27 02:31:41 +08:00
parent 5d1001000a
commit c7c2c7b859
+26 -9
View File
@@ -6499,6 +6499,13 @@ get_drivers() {
) )
} }
is_xda_non_standard_virtio_scsi() {
get_drivers "/sys/class/block/$xda" | grep -q virtio_scsi &&
device_path="$(readlink -f "/sys/class/block/$xda" | sed 's,/virtio.*,,')" &&
[ -e "$device_path/subsystem_vendor" ] &&
! [ "$(cat "$device_path/subsystem_vendor")" = 0x1af4 ]
}
get_windows_type_from_windows_drive() { get_windows_type_from_windows_drive() {
local os_dir=$1 local os_dir=$1
@@ -7563,11 +7570,21 @@ EOF
} }
case "$nt_ver" in case "$nt_ver" in
6.0 | 6.1) $support_sha256 && 6.0 | 6.1)
dir=archive-virtio/virtio-win-0.1.187-1 || if $support_sha256; then
dir=archive-virtio/virtio-win-0.1.173-9 ;; # vista|w7|2k8|2k8R2 if is_xda_non_standard_virtio_scsi; then
dir=archive-virtio/virtio-win-0.1.187-1 # 甲骨文
else
dir=stable-virtio
fi
else
dir=archive-virtio/virtio-win-0.1.173-9
fi
;; # vista|w7|2k8|2k8R2
6.2 | 6.3) dir=archive-virtio/virtio-win-0.1.215-2 ;; # w8|w8.1|2k12|2k12R2 6.2 | 6.3) dir=archive-virtio/virtio-win-0.1.215-2 ;; # w8|w8.1|2k12|2k12R2
*) *) dir=stable-virtio ;;
esac
# 先获取最新版本号,再下载 # 先获取最新版本号,再下载
# 用 stable-virtio 的话国内镜像下载的可能是缓存的旧版 # 用 stable-virtio 的话国内镜像下载的可能是缓存的旧版
@@ -7578,9 +7595,11 @@ EOF
# https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/stable-virtio/CHECKSUM # https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/stable-virtio/CHECKSUM
# 路径是文件,应该不会弹出 anubis 验证? # 路径是文件,应该不会弹出 anubis 验证?
if [ "$dir" = stable-virtio ]; then
if ! dir=$(get_latest_virtio_dir "$baseurl"); then if ! dir=$(get_latest_virtio_dir "$baseurl"); then
mirror_baseurl=https://files.m.daocloud.io/$(echo "$baseurl" | sed -E 's,^https?://,,i') if is_any_ipv4_has_internet &&
if is_any_ipv4_has_internet && dir=$(get_latest_virtio_dir "$mirror_baseurl"); then mirror_baseurl=https://files.m.daocloud.io/$(echo "$baseurl" | sed -E 's,^https?://,,i') &&
dir=$(get_latest_virtio_dir "$mirror_baseurl"); then
baseurl=$mirror_baseurl baseurl=$mirror_baseurl
elif [ "$arch_wim" = x86 ] || [ "$arch_wim" = x86_64 ]; then elif [ "$arch_wim" = x86 ] || [ "$arch_wim" = x86_64 ]; then
add_driver_virtio_from_rpm "$@" add_driver_virtio_from_rpm "$@"
@@ -7589,9 +7608,7 @@ EOF
error_and_exit "Failed to get latest virtio-win version." error_and_exit "Failed to get latest virtio-win version."
fi fi
fi fi
# dir=stable-virtio fi
;;
esac
# 如果 dir 包含数字,则是从具体版本号文件夹下载,文件不会更新,可以使用国内镜像 # 如果 dir 包含数字,则是从具体版本号文件夹下载,文件不会更新,可以使用国内镜像
if [[ "$dir" =~ [0-9] ]]; then if [[ "$dir" =~ [0-9] ]]; then