我有一台预装了 Windows 8.1 的联想 B-4030 笔记本电脑。我在 UEFI 模式下(保持安全模式off
)安装了 Ubuntu 14.04.1。即使我将 Windows 8.1 更新到 Windows 10,一切仍然运行正常,因为我能够使用以下命令恢复 grub启动修复工具。然后我升级到 Ubuntu 16.04。之后我无法启动 Windows 10。我不知道是什么原因造成的,但我并不为此烦恼,因为我使用 Ubuntu 作为主操作系统。但当我使用 Windows 10 可启动 USB 恢复 Windows 10 时,我再次能够启动 Windows(我不记得步骤了)。
但后来我更新到了 Ubuntu 16.04.1,我又失去了对 Windows 的控制。grub 菜单中的 windows 条目是空的(我这样称呼它),因为当我选择它时,它总是将我带回到 grub 菜单。我曾经boot-repair
修复过它。首先它给了我一个错误,提到了类似 GPT 检测到的内容。创建 BIOS 启动、>1MB 未格式化分区(带bios_grub
标志)和其他内容。看到后,我使用 gparted 创建了一个新的未格式化分区这个帖子但步骤 3 给出了一些输出,指出“无法找到目标”。然后我安装了rEFInd 启动管理器(即使我不知道它能做什么)。但是没有什么能解决我的问题。
然后我再次执行启动修复这次它给了我以下结果......
经历了这一切冒险之后,我决定将此作为问题发布,因为我不想独自探索更多。
更多信息:
今天我到处找了找,然后找到了RESULT.txt
的文件boot-repair
。我放在这里的内容来自两个文件;第一部分来自我运行时的文件Ubuntu 14.04旁边Windows 10当我升级到Ubuntu 16.04。
第一部分
我已经上传了文本文件。您可以在此处查看:
http://pastebin.com/YpcJjkR5
第二部分
文本可以在这里找到:
http://pastebin.com/i9C6Xbyc
我想强调的主要内容是:
忽略
sda6
。这只是一个实验,我完全相信这不是罪魁祸首。注意报告的开头。为什么一开始就有区别?
后面的结果中缺少中的条目
25_custom
(对应于EFI/ubuntu/fwupx64.efi
和EFI/ubuntu/MokManager.efi
) 。原因是什么?/etc/grub.d/
虽然我现在已经意识到 Windows 休眠可能是导致此问题的原因,但我如何在不使用Windows 恢复磁盘(因为我没有)?
答案1
如果您挂载所有硬盘并运行,会发生什么情况sudo update-grub
?
作为您的 paste2.org 文件http://paste2.org/AXVH8wM8告诉:
update-grub
正在生成 grub 配置文件...
找到了 linux 映像:/boot/vmlinuz-4.4.0-47-generic
找到了 initrd 映像:/boot/initrd.img-4.4.0-47-generic
找到了 linux 映像:/boot/vmlinuz-4.4.0-45-generic
找到了 initrd 映像:/boot/initrd.img-4.4.0-45-generic
找到了 linux 映像:/boot/vmlinuz-4.4.0-43-generic 找到了
initrd 映像: /boot/initrd.img-4.4.0-43-generic 找到了
linux 映像:/boot/vmlinuz-4.4.0-38-generic 找到
了 initrd 映像:/boot/initrd.img-4.4.0-38-generic
找到了 linux 映像:/boot/vmlinuz-4.4.0-36-generic
找到了 initrd 映像: /boot/initrd.img-4.4.0-36-generic
找到 linux 映像:/boot/vmlinuz-4.4.0-34-generic
找到 initrd 映像:/boot/initrd.img-4.4.0-34-generic
找到 linux 映像:/boot/vmlinuz-4.4.0-31-generic找到 initrd 映像:/boot/initrd.img-4.4.0-31-generic 找到 linux 映像:/boot/vmlinuz-4.4.0-24-generic 找到 initrd 映像:/boot/initrd.img-4.4.0-24-generic 找到 linux 映像:/boot/vmlinuz-4.4.0-22-generic
找到 initrd 映像:/boot/initrd.img-4.4.0-22-generic 找到 linux 映像: /boot/vmlinuz-4.4.0-21-generic 找到 initrd 映像:/boot/initrd.img-4.4.0-21-generic 找到 linux 映像:/boot/vmlinuz-3.13.0-85-generic 找到 initrd 映像:/boot/initrd.img-3.13.0-85-generic 在 /dev/sda1@/EFI/Microsoft/Boot/bootmgfw.efi 上找到 Windows 启动管理器 正在为 EFI 固件配置添加启动菜单项 缺少 NTFS 签名。 无法挂载“/dev/sda6”:参数无效 设备“/dev/sda6”似乎没有有效的 NTFS。 也许使用了错误的设备? 或者是整个磁盘而不是 分区(例如 /dev/sda,而不是 /dev/sda1)? 还是相反? mount /dev/sda6 : 错误代码 12 mount -r /dev/sda6 /mnt/boot-sav/sda6 缺少 NTFS 签名。 无法挂载“/dev/sda6”:参数无效 设备“/dev/sda6”似乎没有有效的 NTFS。 可能使用了错误的设备?或者是整个磁盘而不是 分区(例如 /dev/sda,而不是 /dev/sda1)?还是相反? mount -r /dev/sda6 : 错误代码 12 在 sda2/boot/grub/grub.cfg 中取消隐藏 GRUB 启动菜单 启动已成功修复。您现在可以重新启动计算机。
您的 Windows 挂载点似乎出了问题。您可以尝试删除 sda6 上的 BIOS 启动分区,并使用其内置工具修复 Windows。然后,使用实时 DVD,您可以再次修复 Grub。
答案2
一些观察/问题/建议:
- 您的磁盘上混杂着 BIOS/CSM/传统模式和 EFI/UEFI 模式引导加载程序。看起来您主要使用 EFI 模式,这很好,因为 Windows 不会从 GPT 磁盘以 BIOS 模式启动,而您也有 GPT 磁盘。尽管如此,BIOS 模式的东西显然让您徒劳无功。(例如,
bios_grub
分区/dev/sda6
仅由 GRUB 的 BIOS 版本使用,因此花在它上面的时间是浪费的。)我建议您阅读我的这个页面了解有关此主题的更多信息。 - 您的 Boot Repair 输出(位于http://paste2.org/AXVH8wM8) 缺少
grub.cfg
此输出通常包含的文件。这使得无法评论您的 GRUB 配置。您可能希望将该文件(它在/boot/grub/grub.cfg
您启动 Ubuntu 时)发布到pastebin 网站并在此处发布您的文档的 URL 以供评论。 - 您已安装 rEFInd(顺便说一句,我维护了它),并且 Boot Repair 会显示硬盘上的 rEFInd 文件;但是没有证据表明您的启动管理器中有 rEFInd 条目。您可以
sudo efibootmgr -c -l \\EFI\\refind\\refind_x64.efi -L "rEFInd boot manager"
在 Ubuntu 的终端窗口中键入来创建一个。完成此操作后,rEFInd应该下次启动时会出现;但是,rEFInd 启动项缺失这一事实表明您的固件可能有点不稳定,并且没有“接受”NVRAM 更改。如果是这样,或者您现在不想更改默认启动管理器,您可以尝试将 rEFInd 放在 USB 闪存驱动器或 CD-R 上——两者的图像都可以在您问题中提供的 rEFInd 下载链接中找到。rEFInd 在启动 Windows 方面有时比 GRUB 更可靠,这就是为什么值得尝试让 rEFInd 工作的原因。 - 理论上,Ubuntu 的更新不会影响你通过 GRUB 启动 Windows 的能力。这使得你遇到这个问题两次相当麻烦。我猜你忘记禁用 Windows 快速启动和/或休眠功能。这些功能可能会对共享文件系统造成文件系统损坏,包括引导加载程序所在的 ESP。阅读如何禁用快速启动这里,以及如何禁用休眠模式这里。Windows 再次启动后立即禁用这些功能。
- 如果我猜测快速启动/休眠是导致您问题的根源,那么您可能能够暂时地
dosfsck
通过在 上运行/dev/sda1
(即)来解决问题sudo dosfsck /dev/sda1
。在极端情况下,可能需要备份分区(在/boot/efi
Ubuntu 中),卸载它,在其上创建一个新的 FAT32 文件系统,重新安装它,编辑/etc/fstab
以使用其新序列号,并将数据恢复到它。但从长远来看,禁用快速启动和如果它们导致 ESP 上的文件系统损坏,则休眠是唯一的解决方案。
答案3
就我而言,我发现我的启动配置数据(BCD)不知何故损坏了,所以我的系统无法找到 Windows 10。
我按照以下步骤解决问题;
首先,从此网站下载 WinPE 的 ISO(Windows 10 恢复工具 - 可启动救援磁盘)当然您也可以从其他网站下载。
按照页面上的说明,从 WinPE 的 ISO 制作可启动的 USB 闪存驱动器 (如何从命令提示符创建可启动的 USB 驱动器)。
使用 USB 启动进入 WinPE。
以管理权限打开命令提示符。
输入
diskpart
后按回车键。输入
list vol
后按回车键。现在您需要使用下面给出的特征找到引导配置数据(BCD)的位置。
其格式为FAT32。
大小可以是 100MB/200MB/300MB/512MB,
例如:在我的情况下,它是卷 1。记下卷号小心。
输入
select Volume No.
后按回车键。输入
assign Letter Z:
,然后按 Enter。
您将看到一条消息DiskPart successfully assigned the drive letter or mount point
。输入
exit
后按回车键。输入
Bcdboot C:\Windows /s Z: /f UEFI
后按 Enter。
如果一切正常,您将收到一条消息Boot files successfully created
。输入
exit
后按回车键。重新启动系统。
您将能够启动 Windows 10。
我可以找到我解决这个问题的原始步骤这里。