学习计算机科学与技术专业,喜欢计算机,喜欢linux,喜欢编程
分类: linux
2013-06-17 13:07:06
4、grub知识讲解
首先,我们得明确 grub 是一个来自gnu项目的多操作系统启动程序。它是一个多重操作系统启动管理器,grub 可用于选择操作系统分区上的不同内核,用来引导不同的系统如windows,linux。它是一个多重启动管理器。grub 可用于选择分区上的不同,用来引导不同系统,如windows,linux。
grub的执行脚本是grub.cfg,这个脚本在 /boot/grub2 目录下
grub.cfg系统引导程序,从 mbr 我可以找到当前的活动分区(系统分区),然后我可以从找到的活动分区读取 grub.cfg引导程序,加载选择系统的界面,可以让我们选择我们需要启动的系统,然后启动该系统。
这个是我的 grub.cfg的部分内容,我的 / 挂载在 /dev/sda10上。
它给出了我的 / 挂载位置,然后将执行权利交给所选的操作系统。然后操作系统进行加载。
那么 grub.cfg是怎样生成的呢?
它是由 /etc/grub.d/ 目录下的文件生成的。我们现在看看这个目录下是什么东东吧。
其中的 10_linux 是我们所用的 linux系统引导,30_os-prober是 windows系统。之前我写过一篇关于修改 grub 默认开机顺序的博文。有兴趣的花可以看看我前面的博文。
现在说一下 grub 引导的修复。grub 引导可能出现的错误大概有一下两点。
开机后直接进入 windows系统,没有 grub 的选择界面。
开机后一个系统都进入不了,直接蹦出 grub error:(貌似是这个)。
那么我们就要进行修复 grub(这里以ubuntu 12.04为例):
1、我们需要一个系统盘(刷了系统的u盘也可以),刷入的系统和你的本机上安装的 linux系统是同一个体系,比如都是ubuntu,fedora........
2、开机进入bios,选择u盘启动(这里用u盘修复grub)。
3、选择 试用而不安装 进入u盘中的操作系统。
4、先取得 root 权限,然后用 fdisk -l 命令查看你的 / 在什么地方挂载着(我的是在 /dev/sda10)。
5、先将你的 / 进行挂载
sudo mount /dev/sda10 /mnt
然后进行指定引导安装的位置
sudo grub-install --root-directory=/mnt /dev/sda10
如果出现“lnstallation finished.no error reported.”字符的时候,就表示当前的操作成功了。
然后重启你就可以进入本机的 ubuntu 系统了,但是还不能进入 windows系统。在本机的ubuntu系统下用 root 权限再执行
sudo update-grub2
或者执行:grub2-mkconfig -o /boot/grub2/grub.cfg
(注意,如果你的grub是不是grub2,那么就将上面的grub2换成grub试试)
会出现类似下面的语句就表示成功了:
generating grub.cfg . . .
. . . . . . //这块我就省略了
done
这样你的系统引导就修复好了