多系统安装(8、grub2引导)

最后一节,把多系统方案彻底解决。

上一节我们已经回到grub1,在这种情况下怎么恢复到grub2呢。

第一种方法,如下图,在grub1菜单上按c进入命令行状态,
在grub>提示符下输入
grub>find /boot/grub/core.img (有/boot分区的用find /grub/core.img)
(hdx,y) (显示查找到的分区号)
grub>root (hdx,y)
grub>kernel /boot/grub/core.img (/boot分区的用 kernel /grub/core.img)
grub>boot

然后回出现grub2的引导界面,进入Ubuntu系统,在终端输入命令

sudo grub-install /dev/sda (或sdb,sdc等,根据第几硬盘而定)。
注意:如果ubuntu的启动分区使用ext4格式,要有支持ext4格式的grub才能修复。

sudo update-grub 可以重新读取各分区系统

第二种方法是用LIVECD,如果grub被windows擦掉的话可以采用此方法。

首先进入Ubuntu LIVECD

我的Ubuntu的分区在sda8,进入终端输入命令

 sudo -i
mount /dev/sda8 /mnt

grub-install --root-directory=/mnt/ /dev/sda

最后就是引导所有系统了。

sudo chmod +w /boot/grub/grub.cfg

sudo gedit /boot/grub/grub.cfg

### BEGIN /etc/grub.d/10_linux ###
menuentry "Ubuntu, Linux 2.6.31-14-generic" {
recordfail=1
if [ -n ${have_grubenv} ]; then save_env recordfail; fi
set quiet=1
insmod ext2
set root=(hd0,8)
search --no-floppy --fs-uuid --set 4290a224-55ad-4329-b310-031466eb4955
linux /boot/vmlinuz-2.6.31-14-generic root=UUID=4290a224-55ad-4329-b310-031466eb4955 ro quiet splash
initrd /boot/initrd.img-2.6.31-14-generic
}
menuentry "Ubuntu, Linux 2.6.31-14-generic (recovery mode)" {
recordfail=1
if [ -n ${have_grubenv} ]; then save_env recordfail; fi
insmod ext2
set root=(hd0,8)
search --no-floppy --fs-uuid --set 4290a224-55ad-4329-b310-031466eb4955
linux /boot/vmlinuz-2.6.31-14-generic root=UUID=4290a224-55ad-4329-b310-031466eb4955 ro single
initrd /boot/initrd.img-2.6.31-14-generic
}
### END /etc/grub.d/10_linux ###

### BEGIN /etc/grub.d/20_memtest86+ ###
### menuentry "Memory test (memtest86+)" {
linux16 /boot/memtest86+.bin
}
menuentry "Memory test (memtest86+, serial console 115200)" {
linux16 /boot/memtest86+.bin console=ttyS0,115200n8
}###
### END /etc/grub.d/20_memtest86+ ###

### BEGIN /etc/grub.d/30_os-prober ###
menuentry "Windows 7/Windows XP" {
insmod ntfs
set root=(hd0,1)
search --no-floppy --fs-uuid --set 183461123460f462
chainloader +1
}
menuentry "PCBSD 8.0 (on /dev/sda2)"{
set root=(hd0,2)
chainloader +1
boot
}
menuentry "OpenSolaris 2009.6 (on /dev/sda3)"{
set root=(hd0,3)
chainloader +1
boot
}

menuentry "Zenwalk6.0 (on /dev/sda6)" {

insmod ext2
set root=(hd0,6)
linux /boot/vmlinuz root=/dev/sda6
boot
}

menuentry "Sabayon Linux 5.0 (on /dev/sda7)" {
insmod ext2
set root=(hd0,7)
search --no-floppy --fs-uuid --set 6368746f-2074-616b-6f65-207575696400
linux /boot/kernel-genkernel-x86-2.6.31-sabayon root=/dev/ram0 ramdisk=8192 real_root=/dev/sda7 dolvm init=/linuxrc splash=silent,theme:sabayon vga=791 console=tty1 quiet resume=swap:/dev/sda9 real_resume=/dev/sda9
initrd /boot/initramfs-genkernel-x86-2.6.31-sabayon
}
menuentry "Sabayon Linux (kernel-genkernel-x86-2.6.31-sabayon) (safe mode) (on /dev/sda7)" {
insmod ext2
set root=(hd0,7)
search --no-floppy --fs-uuid --set 6368746f-2074-616b-6f65-207575696400
linux /boot/kernel-genkernel-x86-2.6.31-sabayon root=/dev/ram0 ramdisk=8192 real_root=/dev/sda7 dolvm init=/linuxrc console=tty1 resume=swap:/dev/sda9 real_resume=/dev/sda9 nox gentoo=nox acpi=off ide=nodma vga=normal
initrd /boot/initramfs-genkernel-x86-2.6.31-sabayon
}
### END /etc/grub.d/30_os-prober ###

需要改动的重要地方我已经用红色标出。

经过一些改动之后,最终完成了系统引导。

grub2的引导和grub1的有些不同,但大致还是差不多的。

补充一点:以上引导由windows 7带着windows xp,经过我的实验,如果想把windows 7和xp在grub2这里分开引导,可以把windows 7安装在主分区里。不过在此分区方案中,xp、pcbsd、opensolaris、各占一主分区,扩展分区算一个,加起来4个达到最大值,所以无法实现此方法。

文章到此结束。

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: