命令行安装 Windows 系统
引言
众所周知,Windows 的安装程序是图形界面的,然而,这个图形界面在带来自动化的同时也带来了一些不适配导致的麻烦,以及一些莫名其妙的问题。如果你在安装 Windows 时想要
- 获得完整的控制(你自己可以替代图形界面,并完成图形界面背后的一系列操作,完美的复刻正常和自定义的安装途径),你非常想知道图形界面后面做了什么
- 遇到了图形界面的异常,包括但不限于:
- 你无法创建一个可以正常运行的启动 U 盘,尤其是无法搞定启动 U 盘上的文件系统问题(这件事尤其在从 Linux 制作启动盘的时候常见:你可以不用考虑太多,参照 “极性水溶小白鸟”@bilibili:的文章
https://www.bilibili.com/read/cv5013090/ 声称的这样灵活的做一个“启动盘”即可,只要他能引导到 Windows 最小系统就行) - 你可以做出启动盘,能引导到 Windows 最小系统,但是面临各种各样奇怪的硬盘错误。(我就是因为这个原因才被迫使用命令行的,我无论是使用 GPT 还是 MBR 的硬盘分区表,无论有没有格式化,尝试了我能查找到的所有方法,我总是在选择安装位置时提示 “Windows 不能建立或者查找到一个合适的分区”(Windows Setup couldn’t create a new partition or locate an existing one)事实上,这个问题在网上几乎搜索不到解决方案,而且仅有的几个通过 diskpart 的设置在我的计算机上根本不能挽救图形界面的异常。因此本文也是这个难解问题的一个解决方案。
- 你无法创建一个可以正常运行的启动 U 盘,尤其是无法搞定启动 U 盘上的文件系统问题(这件事尤其在从 Linux 制作启动盘的时候常见:你可以不用考虑太多,参照 “极性水溶小白鸟”@bilibili:的文章
为了让搜索引擎更加方便的识别到解决的问题,我要重复一遍:
本文提出了 Windows 安装程序硬盘分区错误:Windows Setup couldn’t create a new partition or locate an existing one 的一个解决方法
操作流程
进入安装程序
我假设你有一个空的硬盘,我就是在一个双硬盘的机器上安装 Windows 系统的。我的另一个系统安装的 Fedora 39,另一个硬盘是空的,事实上,如果他不完全是空的也没事。我们先在第一步格式化并开始让他变成 Windows 喜欢的格式。
在双硬盘机器上安装 Windows 系统可以有效避免 Windows 的 Boot loader 把 Linux 使用的 Grub 从主引导扇区(MBR)上覆盖的问题。毕竟每个硬盘都有一个单独的 MBR。这样你只用简单的告诉 BIOS 启动那个硬盘就行了。如果你只有一个硬盘装双系统,你就不能直接格式化,但是步骤大差不差。(这里必须谴责微软每次更新就一定要覆盖已有的 MBR 内容,没有一丝兼容 Linux 的努力,而几乎所有的 Linux 发行版都会兼容 Windows 的 MBR)
首先打开命令行,你可以在 Windows 最小系统(就是启动 U 盘上的那个)的任意界面上(建议一开始就不用图形界面)
Shift + F10
格式化和设置硬盘格式
进入 diskpart
diskpart
先查看你的机器有几个盘
list disk
你通常可以见到以下输出
Disk ### Status Size Free Dyn Gpt
-------- ------------- ------- ------- --- ---
Disk 0 Online 476 GB 2048 KB *
Disk 1 Online 476 GB 476 GB
Disk 2 Online 27 GB 21 GB
一般来说,假如 Disk 1 是你需要装 Windows 的空磁盘,Disk 2 就是你的 U 盘了。这里我们知道 Disk 1 是空的,可以放心格式化并从新建立分区。我们可以把这个磁盘设置成 GPT 也可以是 MBR。在命令行中,这些都是可以成功的(但是在图形界面就不一定了)。UEFI 使用 GPT 最好,BIOS 不支持 GPT,只能选择 MBR。
select disk 1
clean
convert gpt
我们建立三个 Windows 需要的分区,第一个是引导分区 EFI,512 MB 大小绰绰有余,然后格式化成 FAT32 文件系统,一定要注意这里不能格式化成 NTFS,否则无法启动:
create partition efi size=512M
format fs=fat32 quick
assign
然后建立 Microsoft 保留分区,我不清楚这个有什么用,但是正常系统都有建,似乎不建也可以
create partition msr size=512M
最后建立系统盘,就是日后的 C 盘,我假设建 100 GB 大小,反正日后可以在系统内调整大小,如果硬盘上还有空间的话,格式化成 NTFS:
create partition primary size=102400M
format fs=ntfs quick
assign
最后查看盘符,记下 EFI 分区和系统盘的盘符,后面有用
list volume
输出类似于
Volume ### Ltr Fs Type Size Status Info
---------- --- ----- ---------- ------- --------- --------
Volume 0 E NTFS Partition 100 GB Healthy
Volume 1 D FAT32 Partition 512 MB Healthy System
Volume 2 C NTFS Partition 27 GB Healthy
注意你现在在最小系统 X 盘中,这个是不显示的,C 盘是你的 U 盘(盘符可能不一样),D 盘是 EFI 盘,E 盘是系统盘(看大小鉴别)。退出 diskpart
exit
你现在应该在最小系统的 sources 目录下
X:\sources> _
部署系统
你应该到你的 U 盘去,直接使用里面的镜像安装
C:
cd sources
sources 文件夹中的 install.* 就是 Windows 镜像。后缀名可以是 WIM 也可以是 ESD。确保你的目录下有这个文件。
dism /get-wiminfo /wimfile:install.wim
我没有拍摄图片,但是输出可以参考(“极性水溶小白鸟”@bilibili:的文章
https://www.bilibili.com/read/cv5013090/ 大差不差,和你下载的镜像有关,有的里面还有企业版、工作站版等等)

选择你要安装版本的序号
dism /apply-image /imagefile:install.wim /index:【在此处输入你选择的序号】 /applydir:E:\
在 /imagefile 中找到你刚才确定的 install.wim 文件,提前 cd 到你要的目录中;在 /index 中指定你选择的序号;在 /applydir 中指定系统盘,这里是 E 盘,在前面记录盘符时改成你自己的。
最后建立系统引导,这里我们刚才给 EFI 盘命名了,所以我们知道 EFI 的盘符是 D
bcdboot E:\Windows /s D: /f ALL
第一个参数指定你的系统盘的 Windows 目录,指示你的系统在哪里(不要启动到 U 盘去了,是刚刚 dism 目的文件夹; /s 指定你的 EFI 盘符, /f 可以是 UEFI,BIOS 或者是 ALL(如果可能,两个都建)。
这样,你的 Windows 已经部署完成,重新启动即可。你在 BIOS 中可以看见 "Windows Boot Manager" 条目,启动那个条目就进入 Windows 创建用户等配置了。重启后拔去 U 盘。或者直接关掉你的安装程序也可以自动重启。
wpeutil reboot

浙公网安备 33010602011771号