我的电脑上安装了 2 个操作系统(Windows 8 和 Linux)。昨天我丢失了 GRUB 菜单,在尝试从实时 USB 恢复它时,我不小心格式化了我的 uefi 启动分区(即 /dev/sda5),现在我试图恢复 grub,但update-grub
输出:
Generating grub.cfg ...
Found linux image: /boot/vmlinuz-3.2.0-51-generic
Found initrd image: /boot/initrd.img-3.2.0-51-generic
[...]
Found memtest86+ image: /boot/memtest86+.bin
No volume groups found
Adding boot menu entry for EFI firmware configuration
done
所以没有 Windows.. 我猜问题出在这里:当我尝试访问安装 Windows 的分区时,我得到了
...
Windows is hibernated, refused to mount.
The NTFS partition is in an unsafe state. Please resume and shutdown
Windows fully ...
确实如此,我在从实时 USB 启动之前将 Windows 休眠。但我无法启动 Windows(因为我格式化了 uefi 分区)以完全重新启动它。
我还尝试使用ro
选项挂载 /dev/sda2(Win 分区),但没有帮助。我该怎么办?
更新型多巴胺sudo ntfsfix /dev/sdaX
都 没有remove_hiberfile
帮助
答案1
这里有两个问题,但你把它们混淆了……
问题 1:ESP 被破坏
根据您的描述,特别是您“意外格式化了 uefi 启动分区”的说法,听起来您的EFI 系统分区 (ESP)被破坏。这是一个严重的问题,因为 ESP 保存引导加载程序两个都视窗和Linux。因此,当您破坏 ESP 时,您会导致两个操作系统都无法启动,并且您无法从另一个操作系统恢复一个操作系统的可启动性——至少,在没有备份 ESP 上的文件的情况下是不行的。因此,您可能需要使用 Windows 恢复工具来恢复 Windows 引导加载程序。我对这些工具不太熟悉,因此在这方面我无法提供太多帮助。此外,update-grub
单独使用也无济于事,因为该工具只是更新 GRUB 的配置文件,它可能没有损坏,具体取决于 GRUB 配置的详细信息。相反,您需要使用grub-install
将 GRUB 重新安装到 ESP。
上述评论的一个警告是,多种的磁盘上的 ESP。您声称您的 ESP 是/dev/sda5
,这对于 ESP 来说是一个不寻常的分区号。(ESP 通常是磁盘上的第一个或第二个分区。)因此,可以想象 Windows 引导加载程序保持完整,大概在/dev/sda1
或上/dev/sda2
,而您只是在 上丢弃了 GRUB /dev/sda5
。不过,我怀疑您只有一个 ESP,并且位于不寻常的位置(也许这是手动安装 Linux 和 Windows 的结果,或者在某个时候重新配置了您的分区)。
请注意,在 EFI 下,GRUB 不会从 Windows 分区启动 Windows;相反,它会链式加载 Windows 引导加载程序,该加载程序存储在 ESP 上。ESP 按照定义使用 FAT,而不是 NTFS,因此有关 NTFS 错误的消息只是一种障眼法,至少对于您当前的启动问题而言是如此。(不过,请参阅下面的“问题 2”。)由于它既update-grub
用于基于 BIOS 的安装,也用于基于 EFI 的安装,因此它可能会尝试扫描您的 NTFS 卷,但这在基于 EFI 的系统上毫无意义。
请注意,当您重新安装一个操作系统的引导加载程序时,该引导加载程序将成为默认引导加载程序。因此,最好先修复 Windows,然后再修复 Linux。因为您可能使用 GRUB 作为引导经理(控制要启动哪个操作系统)以及引导加载程序,如果您按其他顺序操作,则需要在修复 Windows 后调整启动顺序。您可以使用简易UEFI在 Windows 中;或者通过启动 Linux 紧急磁盘并使用efibootmgr
,特别是它的-o
选项。一些 EFI 还允许您使用其设置实用程序中的选项调整启动顺序,但具体如何操作,各个计算机有所不同。
展望未来,我强烈建议您备份 ESP。有了备份,从此类问题中恢复会变得容易得多。EFI 模式启动涉及访问 FAT 文件系统上的文件,因此简单的文件级备份(使用cp
、、或类似工具)就足够了。ESP 很小,因此您可以将备份存储在 USB 闪存驱动器上zip
。tar
问题 2:Windows 休眠
有关 Windows 休眠的消息与您当前的启动问题无关;但是,它揭示了一个同样重要的问题。具体来说,双启动环境中的休眠可能会产生问题。通过使文件系统处于不一致的状态,休眠一个操作系统会使另一个操作系统无法访问该文件系统;如果它试图这样做,则可能导致文件系统损坏。不幸的是,Windows 8 及更高版本将关机操作转变为休眠操作,以减少启动时间。因此,您必须禁用此“快速启动”功能(Windows 中称之为)。对于 Windows 8,可以找到有关禁用快速启动的说明这里,以及其他地方。对于 Windows 10,请参阅这里;但也要确保在 Windows 10 中禁用休眠功能,如所述这里。
请注意,Linuxntfsfix
实用程序不是实际上执行任何重大修复;它只进行最基本的修复,然后将文件系统标记为需要在 Windows 中注意。因此,的用处ntfsfix
最多是有限的。