红联Linux门户
Linux帮助
当前位置: 红联Linux门户 > Ubuntu

关于恢复GRUB的常用方法

发布时间:2008-01-04 01:11:21来源:红联作者:Dywesz
从2007年12月初到到到现在我已经没有用Ubuntu了,但如何修复GRUB这个问题我也一直没有忘记。
这里有两种方法来修复我们的GRUB,一种是从系统光盘启动修复,另一种则是用U盘来制作一个GRUB启动盘。

一,从光盘启动恢复(附:没有光盘)
方法1: 使用引导光盘
先用 debian/ubuntu 安装CD开机,在 "boot:" 提示号出现时, 键入 "rescue"
当作开机参数,eg:
boot: rescue
顺着屏幕上的指示跟着作, 例如 假设 /boot 磁盘分区位于 /dev/hda ,则直接输入:
grub-install /dev/hda
这样grub就恢复了,重启就可以看到启动菜单。

方法2:
如果没有光盘,那么重装windows之前,你可以先将 /boot/grub/menu.lst 放在win下面的某一个盘, 然后再重装win, 当然其实也不需要如此,但是你如果不这样,以后就需要输入很长的命令并且要将当前linux的内核记住, 所以,这里为了方便起见,我们先将这个grub的menu.lst保存好。重装windows完了之后,你需要装一个grub4dos放在C盘中,并且将它所在文件夹命名为grub, --- 为保险起见. 再将里面的grldr文件复制到
C:\ --- 即C盘的根目录下,然后修改C:\boot.ini 在最后面加入:
C:\GRLDR="Start Grub" --- 就表示这里采用grldr的指向的grub,然后里面的grub4dos的东东指定了多menu.lst的搜索路径,这里前面复制的menu.lst就有用了,直接将它C复制到C的根目录下面就可以,这样重起电脑之后就会发现有"Start Grub",选择它就会load这个menu.lst. 否则如果你事先没有copy这个,那么还是进不了你的Linux的,这时就需要手动输入:
kernel /vmlinuz -2.6.17-2-k7 root=/dev/hda3 ro
initrd /initrd.img -2.6.17-2-k7
savedefault
boot
进入Linux之后,再将grub装入mbr: grub-install /dev/hda
注意:上面手写的东西,根据你的内核不同而不同,而且由于我的linux装在主分区的第3号,
所以是 root=/dev/hda3

另附grub下面手写进入windows的方法:
root (hd0,0)
chainloader +1
boot

二,用U盘制作GRUB启动盘
1,下载一个工具叫USBoot1.7,注意1.7的版本与之前的版本多了一个功能就是增加了对大容量U盘的支持.此次操作会格式化U盘,所以请先备份好你U盘里面的重要文件.选择好U盘盘符之后点击下面选择工作方式为USB-ZIP模式,这种方式在作启动盘是比较成功(至于原因大家有兴趣自己探索)接下来按照提示走;

2,完毕之后呢,我们就拥有一个可以引导的
U盘了.接下来呢,我们要让这个U盘能够能够启动我们的grub程序.下载一个grub for dos的程序,放到u盘中,然后编辑u盘中的autoexec.bat文件,在里面写上
grub --config-file=(sdc0)/menu.lst
这样就可以利用grub来引导了,但在此之前我们要添加一个menu.lst的文件,这个文件作为grub的引导菜单,具体制作方法可以baidu一下,不过我们暂时不需要里面有什么内容,我们只需要运行一个grub命令行就可以了.
然后我们就可以来引导我们的安装程序了.

引导安装程序修复系统
为了引导linux系统,我们需要两个文件,一个是vmlinuz,另外一个是initrd.img
这两个文件可以在我们的linux系统镜像中查找,是用来初始化内核和一些环境的
将这两个文件拷贝到U盘上,然后到grub命令行下,输入
kernel (hd0,0)/vmlinuz (注意这里的(hd0,0)应该是用U盘启动之后他自动将U盘作为第一快硬盘的第一快分区了,如果提示找不到该文件的话,试下其他的)
initrd (hd0,0)/initrd.img (初始化镜像)
boot 镜像文件名.iso (引导镜像文件,即我们下载的安装镜像)
然后我们就可以看到熟悉的安装界面出现了,此时我们再按下Alt+F2进入命令行界面,首先挂载我们原先的linux系统到安装临时系统上,
mkdir /mnt/linux (建立挂载文件夹)
mount /dev/hda4 /mnt/linux (挂载,这里的sdc是我的设备号,具体大家可以用fdisk -l命令查看一下自己原先的linux是哪个设备,不行的话可以试着挂载 一下)
root /mnt/linux (将当前命令行切换到原来linux系统的 这样之后的操作都是针对原先系统的了)
grub (进入grub)
root (hd0,5) (设置grub引导根分区所在地)
setup (hd0,0) (将grub安装在第一块硬盘的mbr上面,这样windows分区也可以用grub来引导了)
退出,重启,引导第一快硬盘即可看到熟悉的grub又出来了.grub是一个比较优秀的引导程序,我们也可以利用这种思想来制作一个grub界面的超级启动U盘,这样以后不管windows还是linux系统怀了都可以用他来修复了.
文章评论

共有 0 条评论