安装了 Ubuntu 12.04。计算机有 3 个分区的硬盘和多个 Windows XP 实例。硬盘配置如下:
SDA Vista|Ubuntu; SDB Windows XP (1); SDC Windows XP (2) | Windows XP (3)
启动画面如下:
Ubuntu,使用 Linux 3.2.0-52-generic-pae Ubuntu,带有 Linux 3.2.0-52-generic-pae(恢复模式) 以前的 Linux 版本 内存测试(memtest86+) 内存测试(memtest86+,串行控制台115200) Windows Vista (加载程序) (在 /dev/sda3 上) Microsoft Windows XP Professional(在 /dev/sdb1 上) Microsoft Windows XP Professional(在 /dev/sdc1 上) Microsoft Windows XP Professional(在 /dev/sdc2 上)
如果选择了 Windows XP (!),计算机将在 HD SDB 上的 XP 实例上正确启动。但是,如果选择了 Windows XP (2) 或 (3),计算机仍将在 HD SDB 上的 XP 实例上启动,而不是 SDC。
查看文件 /boot/grub/grub.cfg 中的 SDB 和 SDC:
菜单项“Microsoft Windows XP Professional(在 /dev/sdb1 上)”--class windows --class os { 修改 part_msdos 修改ntfs 设置根目录='(hd1,msdos1)' 搜索--no-floppy--fs-uuid--set=root F6ECD6C9ECD68373 驱动器映射 -s (hd0) ${root} 链式装载机 +1 } 菜单项“Microsoft Windows XP Professional(在 /dev/sdc1 上)”--class windows --class os { 修改 part_msdos 修改ntfs 设置根目录='(hd2,msdos1)' 搜索--no-floppy--fs-uuid--set=root F6ECD6C9ECD68373 驱动器映射 -s (hd0) ${root} 链式装载机 +1 } 菜单项“Microsoft Windows XP Professional(在 /dev/sdc2 上)”--class windows --class os { 修改 part_msdos 修改ntfs 设置根目录='(hd2,msdos2)' 搜索--no-floppy--fs-uuid--set=root F6ECD6C9ECD68373 驱动器映射 -s (hd0) ${root} 链式装载机 +1
看来 Windows XP 的 3 个分区/实例具有相同的 UUID,这可能是问题所在。如何修复此问题?如果可以更改 UUID,这会改变使用计算机的 BIOS 启动菜单 (F2) 或 (F12) 启动所选分区的能力吗?
答案1
要将 Grub 指向正确的 UUID,请使用 找到正确的 UUID,sudo blkid
然后在 中替换它们grub.cfg
。