『壹』 linux 修复grub开机引导(ubuntu)
问题 : 有时候Linux系统/boot分区损坏时,启动Linux系统时直接进入字符介面的grub引导,并没有进入到系统或者开机显示 error:unknow filesystem提示
解决办法:
Linux开机自动会进入到grub引导介面(如果没进入到grub引导介面可以按C键进入)
第一步:找到系统对应的扇区及/boot/grub目录
注意 :假设是硬盘接口类型sd,hd0对应是sda hd1对应是sdb
(hd0)≠(hd0)
(hd1,gpt2)=(hd1,2)
ls (hd1,gpt2) 查看(hd1,gpt2)扇区信息(盘符、空间等)
ls (hd1,gpt2)/ 查看(hd1,gpt2)扇区下的内容(文件、文本等)
如果打印每个扇区目录信息,会出现两种情况:
1、ls (hd1,gpt2)显示Unknow filesystem提示说明这个扇区不是我们要找系统分区
2、ls (hd1,gpt2)显示/boot /proc等系统目录信息说明这个扇区是我们要找的系统分区
如果找到对应扇区的系统分区,可能会遇到两种情况:
1、 A目录下有/boot/grub
2、A目录下有/boot,B目录下有/grub (此时在第二步加载系统内核要使用 set prefix=(hd1,gpt2)/grub 命令)
grub > ls
(hd0), (hd1), (hd1, gpt1), (hd2,gpt2), (hd3, gpt3)
第二步:加载系统内核
grub > set root=hd1,2 #此处不需要括号,加括号也可以,hd0和hd1是有区别
grub > set prefix=(hd1,2)/boot/grub
grub > linux /vmlinuz root=/dev/sdb2 #vmlinuz必须使用TAB补全(可能有后缀),注意sda或sdb需要看自己的实际情况
grub > initrd /initrd.img-xxx #TAB补全,多内核情况下版本需统一
grub > boot
提示 :如果在boot之后不幸进入BusyBox,说明参数设置有问题,可以仔细查看出错的日志,再重启系统后重复执行第二步操作(重启系统后上面设置的参数会被清空)。
第三步:修改grub引导
如果成功进入系统,记得要马上信息grub引导,不然重启系统后问题还是存在
sudo update-grub2 #grub2命令(高版本使用grub2)
$ sudo grub-install /dev/sdb
第四步:重启系统
重启系统后即可正常进入系统
reboot
『贰』 linux启动出现grub
解决过程[以RedHat 7.3为例] 1.把安装盘的第一张放到光驱,然后重新启动机器,在BOIS中把系统用光驱来引导。 2.等安装界面出来后,按[F4]键,也就是linux rescue模式。 3.一系列键盘以及几项简单的配制,过后就[继续]了。。。这个过程,我不说了,比较简单。 4.然后会出现这样的字符 sh# 5.我们就可以操作GRUB了。哈。只要能出现这样的,以后都是小KISS了 sh#grub 会出现这样的字符 grub> 我们就可以在这样的字符后面,输入 grub>root (hdX,Y) grub>setup (hd0) 如果成功会有一个successful... 这里的X,如果是一个盘,就是0,如果你所安装的linux的根分区在第二个硬盘上,那X就是1了;Y,就是装有linux系统所在的根分区。 setup (hd0)就是把GRUB写到硬盘的MBR上。 我来举个例子吧,如果以我的硬盘为例。我在第一个硬盘上装了XP,在第一个硬盘的hda9个装了RH73.我总共有两个硬盘。如果我把GRUB丢了,就用这种办法找回来。 如果你不知道你的linux安装到哪个分区上,也就是说,不知道这个Y是多少,这也不要紧,先输入root (hdX,然后用[TAB]来查看,一下就明白了... 操作如下:[前面开机启动的上面有说明] sh# grub 会出现下面的字样的 grub> 然后再这样操作,如果我知道我的linux装在第一个硬盘上,但我不知道装在哪个分区上,就可以先输入root (hd0,然后用[TAB]键来补齐,然后就明白了。 [code:1:3249bf1c31] grub>root (hd0,8) grub>setup (hd0) [/code:1:3249bf1c31] 请弟兄们结合文章及这个例子,仔细想一想。 我的第一个硬盘的分区情况是这样的。。 /dev/hda1 主分区 NTFS /dev/hda2 扩展分区 /dev/hda5 NTFS /dev/hda6 FAT /dev/hda7 FAT /dev/hda8 /boot ext3 /dev/hda9 / ext3 /dev/hda10 /swap ext3 最后就是按一下[RESET]键,重新启动,就OK了。。。。
『叁』 linux开机grub>命令修复方法
出现grub rescue模式一般是硬盘分区出现变动、导致旧的grub找不到启动文件而出现的。
出现错误具体原因未知,但开机不能引导肯定是grub配置文件出错,/boot/grub2/grub.cfg
解决方法:
2,grub> 模式下:
输入:ls 查看所有磁盘分区:hd。x,x......
用:ls hd(x,x)/grub 找grub所在的分区,有正确执行结果的便是
找到linux所在分区后执行:
set prefix=hdx,x/grub
set root=hx,x
insmod normal
再使用normal命令进入系统后,再修复grub 配置。
or:
查找boot分区:
find /boot/grub/menu.lst 或者 find /boot/grub2/grub.cfg
输入以下命令:
cat hd0,7/boot/grub/grub.conf
关于内核信息的,看一下就明白了。
按照下面命令依次输入
指定/boot分区使用命令:
grub>root hd0,0
grub>kernel /boot/vmlinuz-2.6.18-53.el5 ro root=LABEL=/ rhgb quiet 回车
grub>initrd /boot/initrd-2.6.18-53.el5.img 回车
boot 回车启动
『肆』 linux重启后出现了grub
如果还有其他操作系统出现grub正常会自动区分uefi和mbr的bios不同引导方式,只有linux时出了grub很可能引导缺失文件或者root下的/boot有严重问题。有条件挂livecd进去看看。