调整 NTFS 分区大小后,Windows 10 不再启动

调整 NTFS 分区大小后,Windows 10 不再启动

我的计算机通过 Grub 配置为双启动。我运行 Windows 10 和 Ubuntu 17.10。

今天早些时候,我在 Ubuntu 上工作,我的 ext4 分区空间不足。为了扩大它,我首先需要缩小我的 Windows 启动分区。

我曾经ntfsresize缩小过文件系统(它确实做到了,没有任何错误),然后fdisk删除并重新创建分区。我知道这一点,ntfsresize并且fdisk不同意 MB 与 MiB 的关系,为了弥补这一点,我检查了输出中的“字节”值ntfsresize并将其转换为 KiB,然后在 中使用该值fdisk。当它问我是否要删除现有的 NTFS 签名时,我说不。我将驱动器类型设置为 11(Microsoft 基本数据)。由于我的驱动器使用 GPT,我无法在 中将驱动器标记为可启动fdisk,因此我打开parted并在那里进行了更改。

完成所有这些操作后,我尝试重新启动 Windows 以运行 chkdsk,但启动修复程序并没有启动 Windows,而是自动启动。它说无法自动修复 Windows。我打开了恢复命令提示符,我的驱动器被检测到并挂载。(虽然它挂载为 E: 而不是 C:)我运行chkdsk E: /F它并成功完成。我可以看到它上面的所有文件。我尝试运行bootrec /FixMbr它,它似乎有效,bootrec /FixBoot它给出了“访问被拒绝”错误,并且bootrec /RebuildBcd能够检测到我的 Windows 安装并将其添加到 BCD。

然而,经过所有这些,每次我尝试启动 Windows 时,它只会启动启动修复。我仍然可以启动 Ubuntu,甚至能够使用 将我的 C 盘挂载为读写ntfs-3g

我可能错过了什么?为什么即使分区看起来很健康,Windows 仍拒绝启动?

提前致谢!

编辑:这是我的启动修复输出:http://paste.ubuntu.com/p/YCkzCcNdkN/

答案1

我在安装 Linux 时也做了同样的事 (ntfsresize + fdisk),也遇到了同样的问题。最后,从 Windows 恢复提示来看,这似乎有效:

fixboot /scanos

它找到了 c:\windows,然后我运行:

bcdboot c:\windows

在此之前我也运行过chkdsk c:,但我不认为它们与问题有关。fixboot /mbrbcdedit /set {default} recoveryenabled no

据我了解,上面的 bcdboot 命令添加了从新的 c:\windows 启动 bootmgfw.efi 的选项。实际上,重新启动后我有两个选项:

  1. 新的“windows 10,在分区 3 上”,有效,并且

  2. “windows 10”,但并没有(和以前一样)。

启动后,我从配置管理器中删除了不起作用的选项(搜索“配置管理器”,选项卡“启动”)。

参考: [https://docs.microsoft.com/en-us/windows/client-management/advanced-troubleshooting-boot-problems][1]

答案2

从 Windows Live CD 启动并运行chkdsk /f/x/r

我从 Linux 启动 CD 启动并用于gparted检查,但这没有帮助。然后我运行,ntfsfix但驱动器仍然无法访问。然后我从 Windows Live CD 启动并运行chkdsk /f/x/r,驱动器变得可以访问。

答案3

我总是重复说,Windows 磁盘只能从磁盘管理进行调整大小,因为 Windows 不允许破坏性的调整大小,而这正是这里发生的情况。

由于自动修复不起作用,请启动修复启动进入命令行模式,然后输入以下命令:

diskpart
list disk
select disk X        (X is the disk containing Windows)
list partition
select partition X   (X is the partition number where Windows is installed)
active
exit

如果这不起作用,并且没有更好的解决方案,则需要重新安装 Windows。

答案4

我注意到,当我尝试使用 GParted 工具缩小 Windows 系统分区时,Linux 中显示的可用空间与 Windows 中的可用空间不同。

我无法从技术上解释这种情况是如何发生的,但一般来说,当使用 Windows 缩小分区时,会保留一部分空间作为“Windows 保留存储”。由于 Linux 无法识别这种格式,因此使用 GParted 缩小分区时会发生数据丢失。

我使用虚拟机进行了测试,按照以下链接中的步骤禁用“Windows 保留存储”后,我成功缩小了 Linux 中的分区大小,操作系统可以顺利启动。有关如何禁用的链接:这里

对于没有耐心的人:

dism /Online /Set-ReservedStorageState /State:Disabled

相关内容