为了在ubuntu的grub中成功引导windows 7、ubuntu和centos三个系统,我们需要在ubuntu的/boot/grub/grub.cfg文件中手动添加centos的引导条目。以下是详细步骤和注意事项:
步骤和注意事项:
-
确认CentOS的/boot分区UUID: 确保你知道CentOS的/boot分区的UUID。你可以通过在Ubuntu中使用
blkid
命令来查找UUID。例如:sudo blkid
找到CentOS的/boot分区的UUID,并记下它。
-
编辑/boot/grub/grub.cfg文件: 在Ubuntu中,打开/boot/grub/grub.cfg文件。你可以使用文本编辑器来编辑这个文件,例如:
sudo nano /boot/grub/grub.cfg
-
添加CentOS引导条目: 在文件的适当位置(通常是其他操作系统条目的后面),添加以下内容。请确保将UUID和分区号替换为你实际的CentOS/boot分区的UUID和分区号。
menuentry 'CentOS6.5, with Linux 2.6.32-431.el6.x86_64' { insmod gzio insmod part_msdos insmod ext2 set root='hd0,7' if [ x$feature_platform_search_hint = xy ]; then search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos7 --hint-efi=hd0,msdos7 --hint-baremetal=ahci0,msdos7 e30284d7-5cf6-4864-a875-75012d8d9b14 else search --no-floppy --fs-uuid --set=e30284d7-5cf6-4864-a875-75012d8d9b14 fi echo 'Loading Linux 2.6.32-431.el6.x86_64 ...' linux /boot/vmlinuz-2.6.32-431.el6.x86_64 root=UUID=e30284d7-5cf6-4864-a875-75012d8d9b14 ro quiet splash echo 'Loading initial ramdisk ...' initrd /boot/initramfs-2.6.32-431.el6.x86_64.img }注意:请将
e30284d7-5cf6-4864-a875-75012d8d9b14
替换为你的CentOS/boot分区的实际UUID,将hd0,7
替换为你的CentOS/boot分区的实际分区号。 保存并退出编辑器: 保存文件并退出编辑器。
重新启动系统: 重新启动Ubuntu系统,检查GRUB菜单中是否出现了CentOS的引导选项。
其他注意事项:
- UUID和分区号:确保你使用的是正确的UUID和分区号。错误的UUID或分区号会导致无法引导CentOS。
-
手动编辑grub.cfg:手动编辑grub.cfg文件是一种临时解决方案。每次更新GRUB时,这些手动添加的条目可能会被覆盖。因此,建议将这些条目添加到
/etc/grub.d/40_custom
文件中,然后运行sudo update-grub
来使其永久生效。 - 备份grub.cfg:在编辑grub.cfg文件之前,建议先备份该文件,以防编辑错误导致系统无法启动。
通过以上步骤,你应该能够在Ubuntu的GRUB菜单中成功引导Windows 7、Ubuntu和CentOS三个系统。

如果在Ubuntu中安装时无法看到Windows分区,可以使用LiveCD进入系统,并使用以下命令修复:
sudo dd if=/dev/zero of=/dev/sda bs=1 count=8 seek=512
这样可以修复分区表,使Ubuntu安装程序能够识别Windows分区。










