$$ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Self-defined math definitions %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Math symbol commands \newcommand{\intd}{\,{\rm d}} % Symbol ‘d‘ used in integration, such as ‘dx‘ \newcommand{\diff}{{\rm d}} % Symbol ‘d‘ used in differentiation ... $$

Loading

命令行安装 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 的设置在我的计算机上根本不能挽救图形界面的异常。因此本文也是这个难解问题的一个解决方案。

为了让搜索引擎更加方便的识别到解决的问题,我要重复一遍:

本文提出了 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/ 大差不差,和你下载的镜像有关,有的里面还有企业版、工作站版等等)

image

选择你要安装版本的序号

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
posted @ 2024-03-04 00:06  Xornent  阅读(688)  评论(0)    收藏  举报