一个 Nerd 安装 Windows 时可能遇到的问题

一个 Nerd 安装 Windows 时可能遇到的问题

RayAlto OP

故事背景一

昨天有人找我帮忙重装 Windows 10 ,我寻思“我操,这不有手就行,看我华丽丽的装个逼”,搞了一个 UUP 的 Shell 脚本直接在我的 ArchLinux 上构建了一个 Windows 10 的安装映像 ISO ,放进我的 Ventoy U 盘,插到她的电脑上, Windows 安装程序、启动!

奇妙的问题导致 Windows 安装程序弹出了 Windows 安装映像,然后安装程序报错的截图

「缺少计算机所需的介质安装驱动程序」的解决方式

尴尬了呀,这可怎么解释啊,这个报错看的我也一头雾水,之前明明没有这种问题的,我只好“你这台电脑好像有点特殊,让我研究一下”搪塞过去。那么这个微软式中文的报错到底在说什么呢?就是指 Windows 安装映像找不到了。我是怎么发现的呢?

众所周知 Ventoy 启动 ISO 的原理是模拟成一个虚拟光盘然后启动这个光盘,在 Windows 10 那传统的几个点转圈圈的画面出来之前,我的 Ventoy U 盘是狂闪的,证明在读盘,是正常的,但

Windows 10 的加载动画

开始转圈的时候我的 U 盘灯开始呼吸了,证明 U 盘被弹出了,而众所周知一个 USB 设备被弹出之后宿主设备就不能再对这个 USB 设备进行任何访问了,除非物理拔插,就是这个意义不明的弹出,导致 Windows 安装程序不能继续读安装映像的数据了,最后导致上面这种报错。

解决方案很简单也很暴力,就是发现 U 盘被弹出后立刻重新拔插。像我的 U 盘有指示灯可能轻松一些,很多 U 盘没有指示灯,没办法确认 U 盘是否被弹出,我的建议是发现 Windows 的加载动画后立刻重新拔插。

故事背景二

我回到家尝试用 Virt Manager 装 Windows 虚拟机,把 U 盘直通到虚拟机上作安装盘模拟上面的情况也能百分百复现上面的报错。不是很清楚为啥 Windows 安装程序会弹出我的 U 盘(可能是他以为 Windows 安装映像就是这个 U 盘, U 盘内容已经加载进内存,所以 U 盘可以弹出了?),我记得很清楚之前用移动硬盘(一个垃圾 NVME SSD 插在硬盘盒上)作 Ventoy 启动盘的时候没有这种问题,但换成 U 盘会有这种问题,我选择的 Ventoy 配置是 MBR 分区表 + exFAT 分区,后来又试了 GPT 分区表 + NTFS 分区也不行, Windows 安装程序始终会把我的 U 盘弹出,到这里我也整不明白具体原因了。

无论如何这个问题解决了,鉴于之前的 Windows 10 的虚拟机被我搞得很乱,顺手整一个新的吧,装着装着又看到了下面的场景:

Windows 10 安装程序不识别 VirtIO 类型的存储设备导致报错的截图

「我们找不到任何驱动器」的解决方式

这个问题倒是挺明确的,因为我觉得 VirtIO 比模拟出来的 SATA/SCSI 更轻量、性能更好,所以我选择了 VirtIO 类型的存储设备:

Virt Manager 创建一个使用 VirtIO 类型存储设备的虚拟机

Micro$oft 虽然近几年开始假装 ♥️ Open Source 了,但很明显他们不屑于内置 VirtIO 的驱动,去 Fedora 那边 下载一个 VirtIO 的 Windows 驱动的 ISO ,挂到虚拟机上:

Virt Manager 给虚拟机连接一个光盘设备

Virt Manager 连接光盘设备选择 SATA 类型和 VirtIO 驱动的 ISO

注意这里 Bus Type 要选择 VirtIO 以外的( Windows 内置了驱动的)模拟类型,我选择了默认的 SATA 。然后点击「加载驱动程序(L)」:

在 Windows 安装程序里加载 Windows 10 的 VirtIO SCSI 驱动的截图

因为我在装 Windows 10 ( Windows 11 三哥味太冲了),所以我选择了带有 w10 字样的,安装好后 Windows 安装程序就可以正常识别 VirtIO 类型的存储设备了:

Windows 安装程序成功识别 VirtIO 类型的存储设备的截图

总结

归根结底,还是我太穷了,之前用移动硬盘作 Ventoy 启动盘的时候没有这种问题,但这个移动硬盘里的 NVME SSD 被拆了放进我的 NAS 里了,我只好把 Ventoy 挪进一个小 U 盘里了。如果我有钱,再买一个 SSD 作 Ventoy 启动盘就不会有这么尴尬的经历了。

反转

后来又试了试,实际上弹出问题与 U 盘/移动硬盘无关,也与 Windows 无关。只要不是 USB 2.0 设备就不会有这种问题,之于是不是 Intel exclusive ,我手头没有按摩店测试不了。