如何使用 grub2 从另一个磁盘启动

如何使用 grub2 从另一个磁盘启动

我买了一个新磁盘 (/dev/sdb),并决定在 /dev/sda 上安装 Xubuntu 13.04 和 Windows 7。我在安装过程中使用了自定义分区,在 /dev/sdb 上创建了 100GB 分区,并选择将引导加载程序安装到 /dev/sda。

我的磁盘是:

Disk /dev/sda: 512GB
Partition Table: msdos
Number  Start   End    Size   Type     File system  Flags
1      1049kB  106MB  105MB  primary  ntfs         boot
2      106MB   503GB  503GB  primary  ntfs

Disk /dev/sdb: 3001GB
Partition Table: gpt
Number  Start   End     Size    File system     Name                  Flags
1      1049kB  99.6MB  98.6MB  fat32                                 boot
4      99.6MB  100GB   99.9GB  ext4
2      100GB   108GB   8000MB  linux-swap(v1)
3      108GB   3001GB  2893GB  ntfs            Basic data partition

Disk /dev/sdc: 1000GB
Partition Table: msdos
Number  Start   End     Size    Type     File system  Flags
1      1049kB  1000GB  1000GB  primary  ntfs

现在我在 BIOS 中有多个启动选项:3 个磁盘,ubuntu 和 windows。如果我选​​择从 512GB 磁盘启动,我可以启动 windows,但如果我选择 Ubuntu/Windows 选项,grub2 会加载 Ubuntu 和 Windows 选项,但只有 Ubuntu 可启动。Windows 选项显示

invalid EFI file path.

据我了解,这是 chainloader 命令的错误。以下是完整的 Windows 7 条目:

### BEGIN /etc/grub.d/30_os-prober ###
menuentry 'Windows 7 (loader) (на /dev/sda1)' --class windows --class os $menuentry_id_option 'osprober-chain-3C0009460009089A' {
    insmod part_msdos
    insmod ntfs
    set root='hd0,msdos1'
    if [ x$feature_platform_search_hint = xy ]; then
      search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 --hint='hd0,msdos1'  3C0009460009089A
    else
      search --no-floppy --fs-uuid --set=root 3C0009460009089A
    fi
    chainloader +1
}
### END /etc/grub.d/30_os-prober ###

您能告诉我要怎么做才能让 Windows 7 从 grub2 启动吗?我知道搜索命令返回 hd0,msdos1,而且它似乎是有效的,因为如果在 BIOS 中选择 /dev/sda 作为主启动设备,我就可以启动 Windows 7。

更新:

ls (hd0,msdos1) 返回一些 $... 条目和 /Boot 目录,其中包含 memtest.exe 和其他文件,但我找不到任何 *.efi 图像。

ls (hd1,gpt1)/efi 返回 ubuntu、Microsoft、Boot、refind、tools,但将 ubuntu/*.efi 或 Microsoft/*.efi 传递给 chainloader 会导致启动到 grub2 菜单。

rEFInd 也只能启动 ubuntu。

相关内容