我尝试三重启动 Windows xp、Fedora 14 和 Ubuntu 10.04。我首先安装 Windows xp,然后安装 fedora,最后安装 Ubuntu。
问题是我没有选择启动 Ubuntu,而 Xp 可以正常启动。Ubuntu 似乎无法在 MBR 上用自己的 grub 替换 Fedora 的 grub。查看它们的 grub conf 文件,Fedora 和 Ubuntu 将同一块硬盘识别为两个不同的设备,而我还有另一块没有任何操作系统的 80 GB 硬盘。
下面是我的分区的详细信息以及两个操作系统的 grub 文件的部分信息。
设备启动开始结束块ID系统 /dev/sda1 * 63 40965749 20482843+ 7 HPFS/NTFS /dev/sda2 102414436 312576704 105081134+ f W95 扩展 (LBA) /dev/sda3 40965750 102414374 30724312+ 83 Linux - /Home(适用于 Fedora) /dev/sda5 102414438 204812684 51199123+ 7 HPFS/NTFS /dev/sda6 204812748 253634219 24410736 83 Linux——Ubuntu /dev/sda7 253634283 302455754 24410736 83 Linux——Fedora /dev/sda8 302455818 312576704 5060443+ 82 Linux 交换 / Solaris
来自 ubuntu 的 grub.cfg
### 开始 /etc/grub.d/10_linux ### 菜单项‘Ubuntu,带有 Linux 2.6.32-21-generic’--class ubuntu --class gnu-linux --class gnu --class os { 記錄失敗 修改 ext2 设置根='(hd1,7)' 搜索--no-floppy--fs-uuid--设置cd55e078-a2c1-4d8a-9e87-ae838b6f4a05 linux /boot/vmlinuz-2.6.32-21-generic root=UUID=cd55e078-a2c1-4d8a-9e87-ae838b6f4a05 ro 安静启动 initrd /boot/initrd.img-2.6.32-21-generic } 菜单项‘Ubuntu,带有 Linux 2.6.32-21-generic(恢复模式)’--class ubuntu --class gnu-linux --class gnu --class os { 記錄失敗 修改 ext2 设置根='(hd1,7)' 搜索--no-floppy--fs-uuid--设置cd55e078-a2c1-4d8a-9e87-ae838b6f4a05 echo ‘正在加载 Linux 2.6.32-21-generic...’ linux /boot/vmlinuz-2.6.32-21-generic root=UUID=cd55e078-a2c1-4d8a-9e87-ae838b6f4a05 ro单个 echo ‘正在加载初始 ramdisk ...’ initrd /boot/initrd.img-2.6.32-21-generic } ### 结束 /etc/grub.d/10_linux ### ### 开始 /etc/grub.d/20_memtest86+ ### 菜单项“内存测试 (memtest86+)”{ 修改 ext2 设置根='(hd1,7)' 搜索--no-floppy--fs-uuid--设置cd55e078-a2c1-4d8a-9e87-ae838b6f4a05 linux16 /boot/memtest86+.bin } menuentry“内存测试(memtest86+,串行控制台115200)”{ 修改 ext2 设置根='(hd1,7)' 搜索--no-floppy--fs-uuid--设置cd55e078-a2c1-4d8a-9e87-ae838b6f4a05 linux16 /boot/memtest86+.bin 控制台=ttyS0,115200n8 } ### 结束 /etc/grub.d/20_memtest86+ ### ### 开始 /etc/grub.d/30_os-prober ### 菜单项“Microsoft Windows XP Professional (在 /dev/sdb1 上)”{ 修改ntfs 设置根='(hd1,1)' 搜索--no-floppy--fs-uuid--set cad48cc6d48cb5eb 驱动器映射 -s (hd0) ${root} 链式装载机 +1 } 菜单项“Fedora (2.6.35.14-96.fc14.i686) (在 /dev/sdb6 上)”{ 修改 ext2 设置根='(hd1,6)' 搜索--no-floppy--fs-uuid--set 6aee34cf-f77a-489a-9361-85d07194b84b linux /boot/vmlinuz-2.6.35.14-96.fc14.i686 ro root=UUID=6aee34cf-f77a-489a-9361-85d07194b84b rd_NO_LUKS rd_NO_LVM rd_NO_MD rd_NO_DM LANG=en_US.UTF-8 SYSFONT=latarcyrheb-sun16 KEYBOARDTYPE=pc KEYTABLE=us rhgb quiet initrd /boot/initramfs-2.6.35.14-96.fc14.i686.img } 菜单项“Fedora (2.6.35.6-45.fc14.i686) (在 /dev/sdb6 上)”{ 修改 ext2 设置根='(hd1,6)' 搜索--no-floppy--fs-uuid--set 6aee34cf-f77a-489a-9361-85d07194b84b linux /boot/vmlinuz-2.6.35.6-45.fc14.i686 ro root=UUID=6aee34cf-f77a-489a-9361-85d07194b84b rd_NO_LUKS rd_NO_LVM rd_NO_MD rd_NO_DM LANG=en_US.UTF-8 SYSFONT=latarcyrheb-sun16 KEYBOARDTYPE=pc KEYTABLE=us rhgb quiet initrd /boot/initramfs-2.6.35.6-45.fc14.i686.img } ### 结束 /etc/grub.d/30_os-prober ###
来自 fedora 的 grub.conf
默认值=0 超时=5 启动画面=(hd0,5)/boot/grub/splash.xpm.gz 隱藏菜單 标题 Fedora (2.6.35.14-96.fc14.i686) 根(hd0,5) 内核 /boot/vmlinuz-2.6.35.14-96.fc14.i686 ro root=UUID=6aee34cf-f77a-489a-9361-85d07194b84b rd_NO_LUKS rd_NO_LVM rd_NO_MD rd_NO_DM LANG=en_US.UTF-8 SYSFONT=latarcyrheb-sun16 KEYBOARDTYPE=pc KEYTABLE=us rhgb quiet initrd /boot/initramfs-2.6.35.14-96.fc14.i686.img 标题 Fedora (2.6.35.6-45.fc14.i686) 根(hd0,5) 内核 /boot/vmlinuz-2.6.35.6-45.fc14.i686 ro root=UUID=6aee34cf-f77a-489a-9361-85d07194b84b rd_NO_LUKS rd_NO_LVM rd_NO_MD rd_NO_DM LANG=en_US.UTF-8 SYSFONT=latarcyrheb-sun16 KEYBOARDTYPE=pc KEYTABLE=us rhgb quiet initrd /boot/initramfs-2.6.35.6-45.fc14.i686.img 标题 其他 rootnoverify (hd0,0) 链式装载机 +1
答案1
您有多个硬盘吗?
在 Grub 中,Ubuntu grub.conf 中的 (hd1,7) 表示第二块硬盘的第八个分区,而 Fedora 的 grub.conf 中的 (hd0,5) 表示第一块硬盘的第六个分区。
如果您使用的是 SCSI 驱动器,则驱动器的设备特殊文件将为 /dev/sda*。FireWire、USB、我确信光纤通道和大多数 RAID 也被视为 SCSI。
SCSI 的问题在于 Linux 内核无法以任何特定方式保证驱动器顺序。我猜想您的问题是 Ubuntu 和 Fedora 运行不同的内核,而这些不同内核的某些方面会改变您的驱动器顺序。
两个操作系统的根分区都标有 GUID。我不知道:是否可以让 grub 查找 GUID,而不是 hd0 或 hd1?
hd 编号应该是 BIOS 驱动器编号。如果每个驱动器上只有一个分区,则 hd0 将是 DOS C: 驱动器,而 hd1 将是 DOS D: 驱动器,因为 DOS 使用 BIOS 来查找驱动器,而不是通过内核和设备驱动程序。
如果你能弄清楚为什么你的 BIOS 驱动器在每个操作系统下的顺序不同,那么我认为你的问题就解决了。所以虽然我没有回答你的问题,但也许我给了你一些有用的线索。