grub-install 做了什么?

就我看过的资料来看,每个人对于grub-install的说法不一,

我没有亲自试过,悟了很久,感觉悟出了点什么,能够解释一下。

首先我先说说我的疑惑,根据网上和某些资料,一般有以下两种认识不统一。

1.grub-install 只设定配置文件,真正的boot loader 需要用grub shell另外安装,MBR和boot sector需要分别安装(鸟哥这么认为,如果我没理解错的话)

2.grub-install 能安装boot loader,但是只能装到MBR(某些网页上大部分人这么认为)

理解:

首先,man page是这么说的:

grub-install  copies  GRUB  images into the DIR/boot directory specfied by --root-directory, and uses the grub shell to install grub into the boot sector。

对于以上这三种,我肯定会相信man page了。但是既然他们有别的看法,那肯定说明他们那么做成功了。这很难解释。我想了很久。

鸟哥有一点错地很明显,grub-install并不止是设定配置文件,还进行了安装。

看一下grub-install 的命令:

grub-install [OPTION] install_device

其中选项--root-directory会改变GRUB images的安装路径(默认是/boot/grub/)

你可以选择你的配置文件的路径和要安装的设备或分区(MBR还是某个boot sector?)


一般人认为grub 只会安装到MBR是因为grub只安装到MBR就已经够用了。

理解一下启动流程:

MBR中的boot loader启动后,根据配置文件,会有以下两种操作

1.直接将linux引导起来

2.转交给其他boot sector中的boot loader(如果还装有Windows)。

根据上面的流程,安装到MBR,就已经能应对多系统的问题了。

那么,grub-install能不能将boot loader装到boot sector中而不是MBR中呢?能,鸟哥试过了。

但是装上这个之后有什么作用呢?假设一下MBR中和boot sector中都有boot loader的情况。

如果MBR中能直接引导Linux那么,boot sector中的boot loader就起不到作用了。

如果MBR中指定的是转交给boot sector中的boot loader,那么引导Linux的任务就成了此boot sector 中boot loader的功能。

上面这种设定对配置文件有要求,就是要求MBR中的boot loader和boot sector 中的boot loader要使用不同的设定文件。

MBR中应该设定为交给boot sector 中的boot loader,而不是直接引导起Linux

boot sector 中应该设定为引导Linux。如果此时跟MBR使用同一套配置。那么,就现象而言的话,应该是一直停留在选单画面进入不了系统(如果你一直选择进入Linux而不是Windows)(鸟哥的配置就类似于此,他做了一个在选单上循环跳但是进不了系统的实现,因为他使用了同一套配置文件)

鸟哥在他的例子当中,装完boot sector中的boot loader时,说了一句“我们还没有配置文件哦,那要自己建立”。最后还是跟MBR的boot loader使用了同一个配置。


推测:

其实不用像鸟哥说的那样使用完grub-install后,再用grub shell进行安装,grub-install已经帮你安装好了(man page)。

只要使用两次grub-install,就能达到鸟哥同样的目的。

不知道上面的推测对不对,有机会实践一下。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值