就我看过的资料来看,每个人对于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,就能达到鸟哥同样的目的。
不知道上面的推测对不对,有机会实践一下。