我买了一个新磁盘 (/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。