如何在运行旧版 BIOS 固件的笔记本电脑上安装 Windows 8.1?有问题的笔记本电脑是东芝Satellite C870D-11X,最初带有Windows 8.1 OEM 安装。
我从微软网站下载了 Windows 8.1 ISO,并使用dd
在 Debian 11 下运行的实用程序将其刻录到 USB。当我将 USB 放入笔记本电脑并进入 BIOS 时,启动顺序中显示了一个 USB 设备但没有名称已连接到它,我无法从它启动。如果我在我的 UEFI 台式机中插入相同的 USB 并进入 UEFI 固件界面,我可以正常启动安装程序。
微软的网站不提供安装介质的 BIOS 风格,我已经搜索了 DuckDuckGo 和 Google 几个小时,唯一提到相同问题的是微软自己网站上的用户问题,其中包含根本无法解决问题的答案.
任何帮助深表感谢!
编辑:请参阅下面的@Akeo's great answer以获得正确的解释和解决方案。我还在下面解释了我所做的事情,即使它实际上与接受的答案相同,除了一个细节。fdisk
除了文件的最终复制之外,下面列出的每个步骤都是使用执行的。
我创建了一个新的 MBR 分区表(在词典中显然称为 DOS 分区表fdisk
),然后我创建了一个 5GiB 分区并使用 FAT32 文件系统对其进行格式化,然后将分区类型设置为“W95 FAT32”(代码“0b”)并设置可引导标志。最后,我将 Windows 8.1 安装程序 ISO 的内容(而不是 ISO 本身)复制到单个分区中,然后能够从中启动安装程序。
一件似乎很重要的事情是,我通过反复试验以及在线阅读大量材料得出了这个解决方案;最初我将分区类型(不要与文件系统混淆!)设置为“W95 FAT32(LBA)”(代码“0c”)。在这种情况下,Windows 8.1 安装程序会启动,但它很快抱怨缺少所需的驱动程序并邀请我提供它,但没有提示它是哪个驱动程序。
最后,我现在不确定笔记本电脑是否运行 UEFI 固件。缺乏鼠标支持的非常丑陋的用户界面,加上机器时代,让我相信情况就是如此。但是,固件设置确实包含选择 CSM 模式的选项,并且最终的 Windows 8.1 安装报告它在 UEFI 模式下运行 - 正如使用msconfig.exe
. 我没有尝试从带有 NTFS 分区的 GPT 驱动器引导安装程序,这在这台机器上可能完全有可能......
解释为什么您尝试过的方法不起作用
(如果您只对潜在的解决方案感兴趣,请跳过此步骤)
那是行不通的。
问题是您似乎来自 Linux 并相信,因为大多数现代Linux ISO 都有能力做到这一点(但并非总是如此!),您可以将 ISO 和
dd
它放到 USB 闪存中开车,它会工作的。这是一个不正确的假设。
这适用于现代 Linux ISO 的唯一原因是因为它们滥用了 ISO9660 规范,该规范描述了如何创建 ISO 映像,并使用称为ISOHybrid的黑客来添加分区方案(ISO9660 没有)和单独的文件系统(ISO9660只有一个)上面的ISO内容。
虽然这对于 Linux 用户来说当然是非常方便的,他们不必摆弄 SysLinux 或 GRUB 引导加载程序来为 BIOS 制作 ISO 内容引导(尽管应该说,就 UEFI 引导而言,如果发行版维护人员正确地完成了他们的工作,那么创建可启动 USB 媒体所要做的就是将 ISO 文件提取到 FAT32 格式的闪存驱动器上,因此可以说对 ISOHybrid 的实际需求可以被视为“有争议的” ' 对于 UEFI,特别是因为 UEFI 旨在避免必须在扇区级别写入媒体以使其可启动的整个废话......这就是这样
dd
做的),这种创建图像的方法仍然可以在刻录到CD/DVD 和dd
复制到 USB 介质显然是对 ISO9660 规范的滥用,因此,微软(到目前为止)宁愿不加入 Linux 发行版维护者的行列,为他们的 ISO 使用非常非标准的ISOHybrid方法。因此,您不能使用
dd
将 Microsoft Windows ISO 写入 USB 介质并期望它启动。相反,您必须将其内容提取到 FAT32 或 NTFS 媒体,并(可能)整理出一些引导加载程序安装。但是请注意,与某些 Linux 发行版的情况不同,Microsoft 始终确保,如果您想以 UEFI 模式安装系统,则只需将文件内容提取到 FAT32 或 NTFS 格式的媒体即可。确保您的媒体可以在 UEFI 计算机上启动。
然而,上面有一点需要注意的是,大多数最近的 Windows ISO 包含一个大于 4 GB 的文件,这需要使用 NTFS 来提取内容,并且许多旧的 UEFI 平台没有原生支持 UEFI 引导(但需要指出的是,许多最近的平台和主板都支持,并且存在不支持的平台的解决方案)。
关于如何完成你想要的可能的解决方案
现在,您的主要问题是您正在尝试为 BIOS 而不是 UEFI 创建可启动媒体,这意味着您需要做 3 件事:
我希望您熟悉如何完成第 1 步和第 2 步,而不是第 3 步,如果您还没有运行 Windows 平台,这需要更多的参与,就像您的情况一样。
但是,在 Linux 上,您可以使用ms-sys来完成此操作,该应用程序旨在准确安装您需要的引导加载程序类型。
我不相信 Debian 有现成的 ms-sys 包,所以你必须从源代码重新编译它,但是一旦你这样做了,假设你的 USB 设备是
/dev/sdu
,你应该能够完成第 3 步和:第一个命令将 Windows 7 引导记录安装到 MBR 中(相同的引导记录用于自 Windows 7 以来的所有 Windows 版本,因此您尝试安装 Windows 8.1 并不重要)。此引导记录基本上链式加载安装在 NTFS 分区上的引导记录(如果有)。
第二个命令安装一个 NTFS 引导记录,该记录
bootmgr
将从 NTFS 文件系统加载可执行文件并运行它,这就是 (BIOS) Windows 安装过程最终开始的方式。请注意,第一个命令的参数是整个磁盘设备 (
/dev/sdu
),而第二个命令使用第一个分区 (/dev/sdu1
)。或者,如果您可以访问 Windows 机器,并且按照其他人的建议,您可以使用像 Rufus 这样的实用程序,它完全符合我在幕后描述的功能(包括使用 ms-sys 代码)。
希望这可以帮助您从 Debian GNU/Linux 创建 Windows 8.1 安装媒体。
【免责声明:我是Rufus的主要开发者】