GNU GRUB(GRand Unified Bootloader简称“GRUB”)是一个来自GNU项目的多操作系统启动程序。GRUB是多启动规范的实现,它允许用户可以在计算机内同时拥有多个操作系统,并在计算机启动时选择希望运行的操作系统。GRUB可用于选择操作系统分区上的不同内核,也可用于向这些内核传递启动参数。
因为自从安装Linux之后比较折腾,因此多次遇到了Grub出现问题,所以把遇到的几种情况总结一下。
(一)重新安装Linux系统,同时调整了分区
开机显示:GRUB loading
error:unknow filesystem
grub rescue>
这种属于重装过后,grub的位置已经改变,因此启动错误。
(1)先找出Linux安装在哪个分区
命令:
ls
会列出所有分区信息,如
(hd0,1),(hd0,5),(hd0,6),(hd0,7)(hd0,8),(hd0,9),(hd0,10)
然后对每个分区使用
命令:
ls (hd0,X)/boot/grub
如有列出文件信息,则Linux安装在此分区
(2)将正确的Grub的位置关联起来,同时暂时显示出Grub菜单
命令:
grub rescue>set root=(hd0,x)
grub rescue>set prefix=(hd0,x)/boot/grub
grub rescue>insmod normal
grub rescue>normal
(3)进入Linux中,修复Grub
终端命令:
sudo update-grub
sudo grub-install /dev/sda
重启测试,已修复成功
(二)在终端使用命令将Ubuntu由12.04升级到14.04,过程中可能损坏了grub文件
开机显示:GRUB loading
error:file not found
grub rescue>
按照方式一的解决办法,最后会显示file not found,ls一看~/boot/grub中的很多文件都没有了
只有使用LiveUsb启动到Ubuntu Try环境
sudo -i
fdisk -l (查看计算机分区列表)
mount /dev/sdaX /mnt (Linux系统所在分区)
mount /dev/sdaX /mnt/boot (如果/boot没有单独分区则不要执行这个命令)
grub-install --root-directory=/mnt/ /dev/sda
重启测试,已修复完成