我在过去两天遇到了这个问题。在看了大量有关如何操作的教程后,我来这里寻求一些提示或建议,告诉我应该怎么做。
以下是基本的历史。
我买了一台装有 Windows 10 的新三星电脑(仅供参考,是三星 NP300E5M-XF3BR)。我安装了 Fedora 25 的双启动。
为了实现这一目标,我遵循本教程和这个视频的说明,因为我是 Ubuntu 用户,并且害怕在我的计算机上第一次测试新的 Fedora 时做任何错误。
好的,安全启动已禁用,在 BIOS 中选择了 UEFI 操作系统,在 Windows 中创建了分区,在可启动 USB 中安装了 Fedora 25(使用由美)
然而,由于我的错误,我让 Fedora 自动创建 LVM 分区,而不是按照视频中的建议自己创建,问题就出现了。
我无法从硬盘启动,只能使用 USB 启动 GRUB。我尝试了很多 BIOS 配置,但这是所有配置中唯一的选项。
如果不插入 USB 记忆棒,系统无法启动,只会显示一条消息,如“所有启动选项都已尝试。按 F4 键进行恢复...”,但按 F4 键只会重新启动系统。插入 USB 记忆棒后,我得到了 GRUB,但只有 Fedora 可以运行(已安装的版本,而不是 liveUSB),Windows 只是重新启动。
我再次格式化了 LVM 分区并按照安装指南进行操作,这次我自己创建了分区。现在,仅使用 USB 仍可以启动,但 grub 甚至无法工作。当我不使用 USB 启动时,我只会看到一条消息,如“正在启动...1,2,3,4”,然后按 2 系统重新启动。
分区可以访问,我可以安装它们并检查文件。
这是在 Ubuntu 实时实例中运行的 GParted 的图像。
经过大量的教程,我已经尝试过
- 使用 testdisk 恢复 MBR(不改变任何内容)
- 使用Easus 分区管理器修复 UEFI(无法访问命令提示符)
- 使用重新发现要修复可启动部分,只需显示一个选项来重新启动计算机并访问具有有限命令的 shell,而我什么也做不了。
- 使用三星恢复分区恢复出厂默认设置,但不可用。
- 使用启动修复在 Ubuntu live 实例中出现以下结果消息“当前会话处于传统模式。请重新启动计算机,并在 EFI 会话中使用此软件。这将启用此功能。例如,在确保您的 BIOS 设置为在 EFI 模式下启动 USB 后,使用 Boot-Repair-Disk-64bit (www.sourceforge.net/p/boot-repair-cd) 的 live-USB。”
经过这么长时间(抱歉),我来这里是为了寻求任何提示或建议。我下一步应该尝试什么?
正如我所说,这是一台新电脑,所以我没有任何数据丢失,我接受任何东西,甚至访问恢复三星分区来重新安装所有内容。
我从 Boot-Repair 获得的 BootInfo 摘要已上传至这里
答案1
您的 BootInfo 摘要看起来不错,但需要注意的是,它似乎是从 BIOS/CSM/传统模式启动生成的,因此不提供有关 EFI 启动变量的信息。此外,还安装了 BIOS 模式引导加载程序/dev/sda
,但这不应干扰 EFI 模式启动。我也有可能错过了一些关键的诊断细节。以下是我建议您继续进行的操作:
- 下载我的 USB 闪存驱动器或 CD-R 映像rEFInd 启动管理器。
- 从 rEFInd 下载中准备启动介质。
- 重新启动进入 rEFInd。它应该为您提供启动 Windows 或 Fedora 的选项。测试这两个选项。
- 如果两个选项都有效,则启动 Fedora。
- 此时,您有几种选择(不一定互相排斥):
- 您可以打开终端,输入
su
becomeroot
,输入efibootmgr -v
,然后在此处发布输出(编辑您的问题以添加输出)以供进一步分析。这纯粹是诊断。 - 您可以继续使用可移动介质上的 rEFInd 进行启动。这可能有点尴尬,但应该可以。
- 您可以安装 rEFInd RPM。然后它应该接管为主引导加载程序,您的问题应该会得到解决。一个警告:在您安装 Fedora 后,阻止您的安装正常启动的因素也可能影响 rEFInd,在这种情况下,输出
efibootmgr
可能会有所帮助。 - 您可以尝试修复 GRUB 启动项。一种盲目、蛮力的方法是重新安装 grub(
grub-install
asroot
);但这似乎是 Fedora 安装的一部分,所以我怀疑它现在是否能更好地工作。通过检查输出来修复启动列表efibootmgr
,然后根据该知识发出系统特定的命令可能会有效。 /dev/sda
通过输入 (asroot
)删除 BIOS 模式引导加载程序dd if=/dev/zero of=/dev/sda bs=440 count=1
。请注意,此命令可能非常危险如果您输入错误。特别是,请确保bs=440
和count=1
选项正确;如果您写入过多数据,则会损坏分区表,甚至可能造成更多问题!此操作的目的是删除可能干扰 EFI 模式启动的 BIOS 模式启动路径。这种干扰不应该发生,但计算机如何决定是在 BIOS 模式还是 EFI 模式下启动并没有真正的标准化,因此这个 BIOS 模式启动代码可能会导致问题。
- 您可以打开终端,输入
在某些情况下,可能需要调整固件设置或调整引导加载程序位置和文件名。特别是,您的固件可能设置为在 BIOS/CSM/旧模式下启动,这可以解释为什么它现在无法启动;或者启动条目(存储在 NVRAM 中)可能完全混乱,需要将所有固件设置恢复为默认值。
编辑:
rEFInd 的菜单没有操作系统启动项,这表明 rEFInd 无法找到任何启动加载程序,这与 BootInfo 摘要信息不一致,后者显示启动加载程序位于 rEFInd 应该能够检测到的位置/dev/sda1
(参见输出顶部附近)。最可能的解释是文件系统损坏——一些 EFI 对此比大多数操作系统更敏感。这种“损坏但未损坏”的情况可能是由于未能禁用 Windows 快速启动和休眠功能而出现的,如所述这里和这里,分别。如果您可以让 Windows 启动,我建议您禁用这两个功能,然后重试。您也可以尝试CHKDSK
从 Windows 或 Linux 紧急磁盘在 ESP 上运行dosfsck
。在最坏的情况下,备份 ESP、在其上创建新的文件系统并恢复其文件可能会修复细微的文件系统损坏。这将需要将文件系统序列号(Linux 中的“UUID”,尽管它实际上不是 UUID)与现在的序列号匹配,或者更新/etc/fstab
以用新序列号替换旧序列号。(您可以通过 找到新的 UUID blkid
,如blkid /dev/sda1
。root
)
答案2
我将首先删除所有非 Windows 分区。
然后以 UEFI 模式从 Windows 10 安装 USB/DVD 启动并转到命令提示符。
然后我会重写 MBR(UEFI 启动不需要但没有危害)。
然后将硬盘上的 EFI 系统分区(ESP)映射到 S:(如果尚未映射)。
然后使用 bcdboot 修复启动:
bcdboot N:\windows /s S:
其中 N:是 Windows 所在的位置,S:是 ESP。
看 ”修复 Windows 启动问题“获取更多信息。