使用命令行安装 Windows

Windows 安装的最简单方法是使用 Setup。然而这并不能满足我的需求。

注意!

这不是任何产品的官方文档、帮助或使用说明,仅代表博主个人的经验总结,难免会有疏漏和错误之处。请务必结合官方文档进行阅读,以作补充。

什么是使用命令行安装 Windows?

和安装 Arch Linux 一样,安装 Windows 同样需要三个步骤:

  1. 启动一个 Live Environment。在 Windows 叫做 Windows PE(Preinstall Environment)。
  2. 安装系统根目录。在 Windows 叫做 Apply Windows Image。
  3. 设置引导。在 UEFI 环境下一般指安装必要的文件到 ESP,以及可选的设置 EFI Var(表面上的引导项等)。

Windows Setup 会帮我们做这些步骤,以及一些可能的其他步骤。使用命令行安装,或者手动安装,指我们自己做这些步骤。

Windows Setup

为什么?

Windows Setup 固然方便,但它会 “自作聪明” 地帮我们做一些事情,有的时候是不需要的。包括但不限于:

  1. 创建多个可选分区,比如 MSR。
  2. 无法选择 ESP 分区。

Windows Setup 会创建多个分区(1 / 2)

Windows Setup 会创建多个分区(2 / 2):在图中,Windows 创建了 ESP、MSR 和 C。

对于自动创建 MSR 分区,博主猜测可以使用 Autounattend 应答文件来自动化分区创建和安装。然而对于 ESP 分区的选择,似乎没有可行的办法。选择自定义 ESP 分区对于多系统而言很重要。因为在我的环境中,为了避免 Windows 对 Linux ESP 进行修改,我为 Windows 和 Linux 分别创建了一个 ESP。然而,Setup 会自动选择 ESP。

准备工作

为了安装 Windows,需要准备如下资源:

  1. 可以启动的 Windows 镜像。PE、RE、常规 Windows 均可。
  2. Windows 镜像文件(wim)

如果你不知道上面这些是什么,那么准备一个 Windows ISO 就可以了。然后启动这个 Windows ISO。

如果你在使用官方的 ISO,那么应该会自动启动 Setup。这时候需要按下 Shift + F10 来启动 cmd,如下图所示:

启动了 cmd 的 Setup。

给硬盘分区

如果你没有创建必要的 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)进行安装,如图:

Windows Setup 的 Edition 选择界面。

对于命令行,我们可以使用 Dism /Get-ImageInfo 来获取 wim 包含的 Index,及其名称。

Dism /Get-ImageInfo /ImageFile:<wim 路径>

对于官方 ISO,wim 通常位于 <ISO 分区>:\sources\install.wim。光盘分区可以使用 notepad 查找:

使用 Notepad 查找光驱。

找到的 Windows 镜像。注意不是 boot.wim。

如图,镜像路径为 D:\sources\install.wim。执行命令的结果如下:

执行 Get-ImageInfo 的结果。

很明显,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

执行命令(1 / 2)

执行命令(2 / 2)

此时 Windows 已经安装完了,bcdboot 自动为你创建了 UEFI 引导项。(顺便吐槽,其实这个功能挺烦人的..)

感兴趣的读者也可以自行浏览 U:\ 的内容。

清理

最后的最后,我们还需要移除 ESP 分区的字母,因为这是完全不必要的。使用 Diskpart 的 REMOVE 命令即可。

此时,安装已经完成。重启看看结果吧。

参考资料