GRUB 无法识别笔记本电脑不同硬盘上的 Windows 7

GRUB 无法识别笔记本电脑不同硬盘上的 Windows 7

“重复”中的链接太过针对该用户的问题,对我没有任何帮助。当我运行该答案时,我得到:

grub-probe: warning: disk does not exist, so falling back to partition device /dev/sda1.
grub-probe: warning: disk does not exist, so falling back to partition device /dev/sda1.
grub-probe: warning: disk does not exist, so falling back to partition device /dev/sda1.
grub-probe: error: disk `hostdisk//dev/sda1' not found.

首先,我有一台笔记本电脑,虽然已经有几年的历史了,但它与 Windows 8 以外的任何系统配合得都很糟糕:https://www.asus.com/Notebooks/ASUS_ROG_G750JX/overview/

我以前曾尝试过从同一个驱动器进行双重启动,但不知出于什么原因,这台机器没有成功。所以这次,我屈服了,决定将它们分开。

我在 1TB HDD (/dev/sda) 上安装了 Ubuntu 14.04 LTS,在 250GB SSD 上安装了 Windows 7 Ult (x64)(/dev/sdb)。两者都在 BIOS 中作为启动选项出现,Ubuntu 驱动器被设置为默认驱动器。

我唯一的抱怨是,目前进入 Windows 的唯一方法是让笔记本电脑启动到 GRUB,然后选择系统设置,以便它直接重新启动到 BIOS,然后从启动覆盖页面选择我的 Windows SSD。

我已经被告知无数次,在执行“sudo update-grub”后,GRUB 就会找到我的 Windows 操作系统,但事实从未如此。

我只想能够直接从 GRUB 启动到 Win7

是的,我遵循了所有正常的双启动程序,尽管是在单独的驱动器上(即先启动 Windows,然后启动 Ubuntu,确保当时已插入 Windows 驱动器等)。

我将非常感谢任何有帮助的回复。


lsblk 输出:

NAME                         MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda                            8:0    0 931.5G  0 disk 
├─sda1                         8:1    0   512M  0 part /boot/efi
├─sda2                         8:2    0   244M  0 part /boot
└─sda3                         8:3    0 930.8G  0 part 
  ├─ubuntu--vg-root (dm-0)   252:0    0 914.9G  0 lvm  /
  └─ubuntu--vg-swap_1 (dm-1) 252:1    0  15.9G  0 lvm  [SWAP]
sdb                            8:16   0 238.5G  0 disk 
├─sdb1                         8:17   0   100M  0 part 
└─sdb2                         8:18   0 238.4G  0 part 
sr0                           11:0    1  1024M  0 rom  

因此不确定这是否重要,但在用于启动修复的 GUI 中,它允许我更改“默认启动的操作系统”下拉栏,其中列出了 Windows 如下:

“Windows(通过 mapper/ubuntu--vg-root 菜单)”

答案1

我可以提供更一步一步的修复方法链接的答案。总体来说,我们将手动将 Windows 条目添加到 grub。此过程的大部分内容是查找执行此操作所需的信息。

  1. 通过挂载 efi 分区并搜索 bootmgfw.efi 来找到 Windows 引导加载程序所在的位置。

在我的系统(64 位 Win 8.1/Ubuntu 双启动)上,EFI 分区已安装。如果您的系统上没有,请对此发表评论,我会修改答案。

在终端窗口中发出命令来查找 EFI 分区lsblk。在我的系统上,它安装在/boot/efi分区上sda2

cd进入该目录并查找文件bootmgfw.efi。在我的系统上,它位于/boot/efi/EFI/Microsoft/Boot似乎有点多余,但无论如何。

  1. 查找驱动器的 uuid

在终端中输入sudo blkid并根据提示输入密码。这将列出您的所有驱动器及其 UUID。就我而言,我想要一个sda2

  1. 将其添加到 /etc/grub.d/40_custom

在终端类型中gksudo gedit /etc/grub.d/40_custom输入你的密码

将此条目添加到文件中。将 UUID 处的文本 UUID 替换为您在步骤 2 中获得的 UUID 值。替换后,将其(${root})替换/efi/Microsoft/Boot/bootmgfw.efi为您在步骤 1 中找到的路径。

menuentry "Windows x86_64 UEFI-GPT" {
    search --fs-uuid --no-floppy --set=root UUID
   chainloader (${root})/efi/Microsoft/Boot/bootmgfw.efi
}
  1. 最后运行update-grub

sudo update-grub在终端中 输入。

答案2

现在有两种可能性:

记录如下:您有 2 个驱动器(1 个是 Windows,分区为 MBR/NTFS;1 个是 Ubuntu,分区为 GPT/ext3-4)。您在 UEFI Bios 下运行,UEFI-Grub 启动 MBR-Windows 时出现问题。

可能性:

  1. 您正在尝试从 UEFI-Grub 启动 BIOS 模式 Windows 7 引导加载程序。
    • 这行不通。因为@oldfred 指出你不能混合启动模式。
    • 如果您有文件 (${root})/efi/Microsoft/Boot/EFIMicrosoftBootbootmgfw.efi),那么这不是您的问题,因为 MBR 或 GPT 在这里并不重要,但如果您在 MBR 模式下安装它,Windows 将不会创建 efi 启动文件。
    • 在下一步之前备份你的 bootloader 分区(sdb1)(例如克隆
    • 如果您没有此文件,则 Windows 可以创建 efi 引导加载程序。本文对此进行了描述: 如何通过 GRUB 以 UEFI 模式从旧式 MBR 分区启动 Windows 8?

  1. 您已经有 efi 启动文件(例如 EFIMicrosoftBootbootmgfw.efi)

    • 如果您已经有 Windows efi 启动文件(例如 (EFIMicrosoftBootbootmgfw.efi),如启动修复日志第 1301 行中指出的那样),则请在 /etc/grub.d/40_custom 中的配置中尝试不同的选项。对您来说,这将是:

      menuentry "Windows 7 " --class windows --class os {
      insmod part_msdos
      insmod ntfs
      insmod search_fs_uuid
      insmod chain
      
      set root='hd1,msdos1'
      if [ x$feature_platform_search_hint = xy ]; then
        search --no-floppy --fs-uuid --set=root --hint-bios=hd1,msdos1 --hint-efi=hd1,msdos1 --hint-baremetal=ahci1,msdos1  06D67F5BD67F4A47 
      else
        search --no-floppy --fs-uuid --set=root 06D67F5BD67F4A47 
      fi
      
      chainloader (${root})/efi/Microsoft/Boot/EFIMicrosoftBootbootmgfw.efi
      
      }
      
    • 这些值是从你的启动修复日志中读取的,或者是猜测的。如果你的 efi 启动文件位于不同的位置,请将以下行chainloader ...


  1. 最后但并非最不重要的是,您仍然可以擦除第二个硬盘。使用 GPT/NFTS 对其进行分区,然后安装新的 Windows。数据丢失即将发生在这里

相关内容