1. 相关目录
/boot/grub/grub.cfg # The auto-generated configuration file
/etc/default/grub # Grub configuration file
/etc/grub.d # Scripts Directory
好啦,上面就是启动所涉及到的相关文件与目录。排在首位的,就是系统具体会调用的文件grub.cfg。注意打开后,虽然注释说不要修改此文件(DO NOT EDIT THIS FILE),其实很多人还是会直接去编辑它。为啥呢?简单直接呗。应该说对于一般用户,作个备份然后直接编辑也可。之所以不这样做(好像grub本身并不反对这样做),原因就是我要介绍的下面两个/etc/default/grub、/etc/grub.d。
看到吗?都是etc目录下的东西。这意味着自带光环,本身就属于配置文件。所以这两样才是真正的应该改的东西,因为一旦它们发生了变化就可以通过update来覆写上面的grub.cfg。这就是为何系统虽然直接调用的就是/boot/grub/grub.cfg,但注释却仍然不建议修改此文件:原因就是你改了,但一旦系统发生更新就又会重新生成一份新的。又重新回到解放前。
逻辑理清一切就好办了,/etc/grub.d是一个存放系统在生成config文件所使用脚本的目录,/etc/default/grub则是在脚本运行间做一些控制调节的文件。两者的关系简单说就是这个样子,至于为什么要有grub来配合grub.d,原因就是因为通过改脚本来实现改启动顺序的目的很难且容易出错。既然这样,何不留个后门让生活轻松一些呢?
备注: 一个非常有用的命令, will give you a lot of heuristic introduction(never FINISH)
info -f grub -n 'Simple configuration'
2. grub-mkconfig & update-grub
有些文章说,就通过grub-mkconfig或update-grub来使改动生效。话虽如此,实际上两个工具还是略有不同:run grub-mkconfig will "compile" the output, however won't write to the grub.cfg, which means just no effect! To take effect, either the command below; or use update-grub.
下面这张截图就是运行update-grub前后的差异:
grub-mkconfig -o /boot/grub/grub.cfg
换句话说,仅运行grub-mkconfig并不会改写/boot/grub/grub.cfg。必须运行上面这个命令或者运行update-grub。两者并不等价。
3. 调整启动项
铺垫了这么多,正餐开席!其实理解了调用关系,那么要修改什么都是挺简单的事。
这里所作的是想要让系统默认加载 Adavanced Option 下面的第三个镜像:一行代码搞定!
GRUB_DEFAULT="1>2"