我想更改我的 Windows“系统”分区,以便我可以摆脱驱动器
不确定我是如何陷入这种情况的,但是:
我有一个旧的、有故障的驱动器,上面只有一个分区,即字母 F。在磁盘管理中,它被标记为“系统”分区,尽管它上面没有 Windows 文件夹
我有一个 SSD,第一个分区上有我的 (Windows 10) C: 驱动器,标记为“启动”,我已经用了一两年了,没有问题,第二个分区上安装了 Linux。Grub 安装到这个 SSD 上,所以我可以双启动这两个分区。
SSD 是我的 BIOS 启动顺序中唯一的驱动器,Grub 成功打开,并列出
- 我的 Linux 安装(sdb2)
- “Windows 8”(sda1,我的 F:驱动器,不确定为什么它认为周围有一个 Windows 8 安装)
- “Windows 10”(sdb1,我的 C: 盘)
如果我拔下出现故障的 F:驱动器,则“Windows 10”将无法启动,并抱怨缺少具有我的 F:驱动器 UUID 的设备
如果我插入 F: 驱动器,则“Windows 8”和“Windows 10”都可以正常启动
如果我卸载 grub,就会出现同样的问题,如果没有 F 盘,windows 就无法启动,尽管 windows 在 C 盘上,BIOS 指向的是 C 盘,所以我不认为 grub 是这里的问题
我在网上找到的关于更改系统分区的唯一说明是,在 BIOS 中将所需的驱动器设置为主启动设备,然后在 Windows 安装磁盘上运行启动修复。这没有任何作用。
在 Windows 安装磁盘中打开命令行并运行,但bootrec /scanos
找不到我的操作系统。 bcdboot C:\Windows /s C: /f ALL
说写入数据时出错,但没有说错误是什么。
如何将系统分区移动到我的操作系统驱动器?
答案1
我能够利用一些在网上其他地方不太明显的关键信息来解决这个问题:
(使用恢复 CD/Live USB 修复 Windows 启动时)
bootrec
类似和的命令bcdedit
默认假设第一的硬盘是你的系统分区,事实上,运行其中一些将做了您的系统分区- 使用
active
in 来diskpart
改变其中一些命令所使用的驱动器。 - 您确实需要一个单独的系统分区,而不是您的操作系统分区。如果这样做,它将没有字母(为了安全起见),因此每次打开恢复磁盘时,您都需要手动为其分配一个字母(似乎 S: 代表“系统”很常见)
- 不带任何参数运行
bcdedit
将打印当前 BCD。这是 Windows 用于启动的内容。bootmgr
这里提到的是引导加载程序,它位于您的系统分区上。因此,在使用diskpart
在正确的驱动器上创建正确的单独系统分区(如)active
,然后运行bootrec /fixmbr
、bootrec /fixboot
和之后bootrec /rebuildbcd
,您应该会看到在 S: 驱动器上,而包含您的文件夹的任何分区都bcdedit
位于另一个列表中。然后您就知道您的 BCD 设置正确,并且可以安全地断开 BCD 中未提到的其他驱动器,而不会影响您的启动bootmgr
Windows/
- 我也看到过很多这样的命令
bcdboot C:\Windows /s C:
,但一直不清楚要使用什么驱动器号。inC:
是安装C:\Windows
的驱动器号\Windows
根据 diskpart。如果您的驱动器不是第一个驱动器,恢复磁盘将不会为其提供字母C:
,即使您要启动到 Windows 安装,安装所在的任何驱动器都会自动获得C:
。C:
输入/s C:
是系统分区的字母(S:
如果您按照我之前说的做了)。 - 您还可以
/v
向bcdboot
命令中添加一个来查看它实际在做什么,即将一些默认文件从 Windows 安装复制到系统分区以使其启动。 - 有时
bcdedit
无法找到您的 BCD 文件。您可以使用/store
指定文件的完整路径。 - 不要相信 Windows 提供的“自动启动修复”。一旦我知道如何打印出 BCD 等并验证我的设置正在做什么,我就能发现它做出了完全错误的决定
一旦我了解了所有这些,我就能解决问题,并让 Windows 从我的新驱动器启动。无需旧驱动器,也无需重新安装 Windows。
答案2
尝试将系统分区移动到另一个驱动器很可能不是一个可行的方法。Windows 10 也需要 UEFI 分区。
从可启动的 Windows USB 闪存盘开始,看看是否可以恢复数据。现有驱动器的状况可能会阻止此操作。
然后更换驱动器并重建 Windows。
希望您有一个外部备份。