Windows 安装的最简单方法是使用 Setup。然而这并不能满足我的需求。
注意!
这不是任何产品的官方文档、帮助或使用说明,仅代表博主个人的经验总结,难免会有疏漏和错误之处。请务必结合官方文档进行阅读,以作补充。
什么是使用命令行安装 Windows? #
和安装 Arch Linux 一样,安装 Windows 同样需要三个步骤:
- 启动一个 Live Environment。在 Windows 叫做 Windows PE(Preinstall Environment)。
- 安装系统根目录。在 Windows 叫做 Apply Windows Image。
- 设置引导。在 UEFI 环境下一般指安装必要的文件到 ESP,以及可选的设置 EFI Var(表面上的引导项等)。
Windows Setup 会帮我们做这些步骤,以及一些可能的其他步骤。使用命令行安装,或者手动安装,指我们自己做这些步骤。
为什么? #
Windows Setup 固然方便,但它会 “自作聪明” 地帮我们做一些事情,有的时候是不需要的。包括但不限于:
- 创建多个可选分区,比如 MSR。
- 无法选择 ESP 分区。
对于自动创建 MSR 分区,博主猜测可以使用 Autounattend 应答文件来自动化分区创建和安装。然而对于 ESP 分区的选择,似乎没有可行的办法。选择自定义 ESP 分区对于多系统而言很重要。因为在我的环境中,为了避免 Windows 对 Linux ESP 进行修改,我为 Windows 和 Linux 分别创建了一个 ESP。然而,Setup 会自动选择 ESP。
准备工作 #
为了安装 Windows,需要准备如下资源:
- 可以启动的 Windows 镜像。PE、RE、常规 Windows 均可。
- Windows 镜像文件(wim)
如果你不知道上面这些是什么,那么准备一个 Windows ISO 就可以了。然后启动这个 Windows ISO。
如果你在使用官方的 ISO,那么应该会自动启动 Setup。这时候需要按下 Shift + F10 来启动 cmd,如下图所示:
给硬盘分区 #
如果你没有创建必要的 Windows 分区,那么就使用 Diskpart 创建两个分区:
- EFI 分区,100M 即可。分配(Assign)盘符,如 U。格式化 FAT32。
- 系统分区,大小自定。分配盘符,如 O。格式化 NTFS。
Diskpart 的使用比较复杂,本文无法涉及。建议使用 HELP
查看帮助。
分区的格式化也可以使用 notepad 中内置的文件选择器进行。
应用 Windows 镜像 #
应用(Apply)Windows 镜像指将 Windows 镜像写入指定分区。这个步骤需要使用 Dism 进行。
获取镜像信息 #
一个 wim 镜像通常包含多个 Index,每个 Index 对应一个 Edition。Windows Setup 同样会要求用户选择 Edition(即 Index)进行安装,如图:
对于命令行,我们可以使用 Dism /Get-ImageInfo
来获取 wim 包含的 Index,及其名称。
Dism /Get-ImageInfo /ImageFile:<wim 路径>
对于官方 ISO,wim 通常位于 <ISO 分区>:\sources\install.wim
。光盘分区可以使用 notepad 查找:
如图,镜像路径为 D:\sources\install.wim。执行命令的结果如下:
很明显,Edition 和 Index 是对应的。如果我们需要安装专业版,那么就需要找到并记住它的 Index。在我这里是 5。注意:不同镜像的 Index 不同,切勿盲目抄袭。
应用镜像 #
现在就可以应用镜像了。使用命令 Dism /Apply-Image 即可。
Dism /Apply-Image /ImageFile:<wim 镜像路径> /Index:<Index 号码> /ApplyDir:<系统分区字母>
按照我的案例,Index 为 5,系统分区字母为 O,那么就应该为:
Dism /Apply-Image /ImageFile:D:\sources\install.wim /Index:5 /ApplyDir:O:\
等待命令走完即可。
设置引导 #
这是整个安装的最后一步,用于把必要的文件复制到 ESP,以及(自动)设置 EFI Var。当然,对于 Legacy(BIOS)用户,其细节会有很大不同。不过对于操作者来说步骤是大同小异的,本文以 UEFI 为准。设置引导需要使用 bcdboot 工具。
设置引导很简单,只需要指定系统根目录(系统盘)位置,以及 ESP 位置即可。命令:
bcdboot <系统根目录> /s <ESP 分区>
bcdboot 的命令行很简单,十分建议读者使用 /?
开关自行了解先,再执行。这里也可以使用 /p
开关了解 bcdboot 在做什么。
最后,按照本文的环境,即系统安装在 O:\,ESP 挂载在 U:\,命令为:bcdboot O:\Windows /s U: /p
此时 Windows 已经安装完了,bcdboot 自动为你创建了 UEFI 引导项。(顺便吐槽,其实这个功能挺烦人的..)
感兴趣的读者也可以自行浏览 U:\ 的内容。
清理 #
最后的最后,我们还需要移除 ESP 分区的字母,因为这是完全不必要的。使用 Diskpart 的 REMOVE
命令即可。
此时,安装已经完成。重启看看结果吧。