注:该博客是本人在网上查阅linux系统下修复windows启动项时候顺便查看的,未曾测试,三思
在安装linux后装windows时会改写mbr,造成grub丢失,可以用grub4dos引导进入ubuntu后修复grub或用livecd启动后修复grub。
先下载最新版的grub4dos,下载地址http://sourceforge.net/projects/grub4dos/files/GRUB4DOS/,如果是xp系统,把grub4dos压缩包内的grldr复制到C盘根目录下,修改boot.ini,在最后加上一行 c:\grldr=”grub4dos”,
对 于vista/win7系统,把压缩包内的grldr.mbr和grldr复制到C盘根目录下,在C盘自己建立一个boot.ini文件,若有boot隐 藏分区的,先给boot分区分配盘符.
再把grldr,grldr.mbr和boot.ini放在boot分区下,boot.ini内容如下:
Win7使用软改激活的请不要使用此方法,否则会造成win7不能启动。
然后在根目录新建一个menu.lst,内容为:
timeout 0
default 0
title grub2
find –set-root /boot/grub/core.img
kernel /boot/grub/core.img
boot
//(有/boot分区的改为
find –set-root /grub/core.img
kernel /grub/core.img)
重启后选择Grub4Dos会自动转入grub2,从grub2菜单项选择ubuntu启动后,在终端执行
sudo grub-install /dev/sda
将grub装入第一硬盘的mbr,如要装入第二硬盘的mbr把sda改为sdb,第三硬盘为sdc,类推。
至于要把grub装到sda或sdb或sdc的mbr上,需根据自己情况确定,看看要设置哪一块硬盘为启动盘,就把grub装到那块硬盘的mbr上。
2、用livecd修复grub
用ubuntu9.10的livecd启动后,打开终端
假如你的ubuntu的 / 分区是sda7,又假如 /boot分区是 sda6,用livecd启动,在终端下输入
sudo -i
mount /dev/sda7 /mnt
mount /dev/sda6 /mnt/boot //(如果没 /boot 单独分区这步跳过)
grub-install –root-directory=/mnt /dev/sda
和前面一样,要装入第二硬盘的把sda改为sdb。
如果grub.cfg己丢失,或grub.cfg出现错误,需要重建的继续执行下面操作:
mount –bind /proc /mnt/proc
mount –bind /dev /mnt/dev
mount –bind /sys /mnt/sys
chroot /mnt update-grub
umount /mnt/sys
umount /mnt/dev
umount /mnt/proc
exit
3、用带grub启动的光盘或U盘修复
如果手上有grub启动的工具盘,用工具盘启动,在grub菜单上按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
执行boot后能转入grub2菜单,启动ubuntu后,再在ubuntu终端下执行
sudo grub-install /dev/sda (或sdb,sdc等)修复grub。
如果ubuntu的启动分区使用ext4格式,要有支持ext4格式的grub才能修复。
4、没安装引导器的 grub4dos引导ubuntu的方法
按第一步的方法使用 boot.ini 建立grub4dos引导项,自己编写 menu.lst,内容如下
timeout 3
default 0
title Ubuntu 9.10
root (hdx,y)// ——–> (hd0x,y) 为 /boot分区的分区号
kernel /vmlinuz-xxx-generic root=/dev/sdxy //——->/dev/sdxy 为 / 分区的分区号
initrd /initrd.img-xxx-generic
//没 /boot 分区的用
timeout 3
default 0
title Ubuntu 9.10
root (hdx,y)
kernel /boot/vmlinuz-xxx-generic root=/dev/sdxy
initrd /boot/initrd.img-xxx-generic