Grub 无法检测到 Windows 10(首先安装 UBUNTU)

Grub 无法检测到 Windows 10(首先安装 UBUNTU)

我有一台联想 Yoga 2 pro,安装了两个 Ubuntu(15.10、14.04)和 Windows 10,三重启动。最初我擦除了硬盘并安装了 Ubuntu。为了安装 Windows,我使用 gdisk 将硬盘重新格式化为 GTP,并在 ntfs 分区上安装了 Windows。

(最初什么都无法启动,但我能够通过从 novo 按钮访问启动菜单并选择 Windows 引导加载程序来启动 Windows(这里没有 ubuntu 引导加载程序,如果选择了硬盘,则会进入黑屏并带有闪烁的光标))

使用实时 ubuntu cd 修复 Grub 引导加载程序后,Windows 未出现。运行引导修复可检测到 Windows,但最终会弄乱 grub,导致计算机在尝试访问 grub 菜单时重新启动。引导修复的 pastebin 结果可在此处找到:http://paste.ubuntu.com/14692334/

从 USB 运行 Windows 修复环境无法解决问题。(选择修复启动,导致 Windows 尝试修复引导加载程序,但最终提示修复失败。)

100 Mib 的 Windows 启动分区似乎存在,但未被检测到。

Parted -l 给出以下输出(底部),os-prober 仅检测到其他 ubuntu 安装。我还尝试手动编辑 /etc/grub.d/40_custom 文件,但无济于事。也sudo update-grub没有产生任何(有用的)结果。

从 Legacy 切换到 UEFI 无法启动 grub,并且仍然无法检测到 windows 引导加载程序。任何建议都值得赞赏——谢谢

**请注意,我在这里确实发现了类似的情况:GRUB2 中未出现 Windows 8.1但没有结果。

    Model: ATA SAMSUNG MZMTE256 (scsi)
Disk /dev/sda: 256GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 

Number  Start   End    Size    File system     Name                          Flags
 1      1049kB  141GB  141GB   ext4            Linux filesystem
 2      141GB   192GB  50.9GB  ntfs            Microsoft basic data          msftdata
 3      192GB   192GB  472MB   ntfs            Basic data partition          hidden, diag
 4      192GB   193GB  105MB                   EFI system partition          boot, esp
 5      193GB   193GB  16.8MB  ntfs            Microsoft reserved partition  msftres
 7      193GB   203GB  10.2GB  ext4
 8      242GB   243GB  186MB   ext4                                          boot, esp
 6      248GB   256GB  8501MB  linux-swap(v1)  Linux swap


Model: SanDisk Cruzer Fit (scsi)
Disk /dev/sdb: 16.0GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags: 

Number  Start   End     Size    Type     File system  Flags
 1      1049kB  16.0GB  16.0GB  primary  fat32        boot, lba

答案1

你的很多问题似乎都归结于你的EFI 系统分区 (ESP),在你的情况下是(或应该是)/dev/sda4。问题是 Boot Repair 脚本被(错误地?-)识别/dev/sda4为保存 GRUBcore.img文件。另一方面,它在分区表中被标记为 ESP。我怀疑发生了以下两种情况之一:

  • 安装 Windows 时,/dev/sda4用作 ESP,但分区的位置恰好与已删除的BIOS 启动分区,其中包含用于 BIOS 模式启动的 GRUB 2 代码。如果 Windows 没有充分清除旧数据,则可能会导致文件系统被某些 Linux 工具错误识别,从而导致您现在面临的问题。
  • 在安装 Windows 后的某个时间点,您或修复实用程序错误地将 GRUB 数据“原始”写入/dev/sda4。BIOS grub-install/CSM/传统模式启动中的命令可能会执行此操作,但通常只有当分区被标记为 BIOS 启动分区时才会执行此操作,而目前它不是。尽管如此,如果 GRUB 数据以其他方式写入此处,或者如果分区的类型代码在错误发生后更改为 ESP,则这种情况是可能的grub-install

您应该希望得到第一个解释,因为这意味着 FAT 文件系统数据应该是完整的。在这种情况下,恢复的第一步是备份分区(您可能需要明确指定其文件系统类型以将其挂载在 Ubuntu 中,如sudo mount /dev/sda4 -t vfat /mnt),卸载它,在其上创建一个新的 FAT 文件系统(sudo mkdosfs /dev/sda4),重新挂载它,然后恢复备份文件。然后,这应该使启动修复能够正常工作。请注意,您可以在几乎任何操作系统中执行所有这些操作,但如果在 Windows 中执行此操作,则必须先挂载 ESP(见下文)。

另一个恢复的方法是使用我的rEFInd 启动管理器在 USB 闪存驱动器或 CD-R 上。如果 ESP 的文件系统对固件可读,rEFInd 应该能够让您启动 Windows 或 Ubuntu。然后,您可以创建一个/etc/fstab要挂载的条目/dev/sda4/boot/efi并通过其 Debian 包或 PPA 安装 rEFInd。(或者,您可以安装包grub-efi并自行设置。)但是,这种方法本身仍会在 ESP 上留下令人困惑的数据,因此 Boot Repair 等工具将继续不太有用;充分恢复,您需要备份 ESP,在其上创建一个新的文件系统,然后恢复它。就此而言,鉴于文件系统的错误识别,我并不完全确定 rEFInd 的安装脚本(在软件包中使用)是否能正常工作,因此即使使用此解决方案,您可能也需要修复该问题。

如果文件系统/dev/sda4损坏严重,无法恢复其文件,则需要在其上创建一个新的文件系统,使用 Windows 恢复磁盘重新安装 Windows 引导加载程序,然后使用 Boot Repair 或 rEFInd 将 Ubuntu 恢复到可引导状态。

请注意,可以想象文件系统在一个或两个环境中是可读的,但不是在所有三个环境中都是可读的。(这三个环境是 EFI、Windows 和 Ubuntu。)Windows 通常不会安装 ESP,因此您需要通过在mountvol S: /S管理员命令提示符窗口中键入来执行此操作。(S:如果愿意,您可以更改为其他驱动器标识符。)当然,您的 Boot Repair 输出已经显示某些 Linux 工具(如blkid)在磁盘上看不到 FAT 文件系统,但如果您告诉它使用驱动程序,内核仍然可以读取它vfat,就像mount /dev/sda4 -t vfat /mnt我之前提供的命令一样。

相关内容