grub2简介
GRUB legacy版本将文件放置在/boot/grub/目录下,包括在启动过程中读取并显示内容给用户的menu.lst文件。
GRUB2将文件主要放在三个地方:
/boot/grub/grub.cfg --这是替代menu.lst的主要配置文件。不像menu.lst那样,grub.cfg不能手动更改!我强烈建议不要尝试干预这个文件,无论是使用chattr命令或者其他。由他去就行。
/etc/grub.d/ --这个新文件夹包含GRUB脚本。这些文件是创建grub.cfg文件的基础。当相关的GRUB命令执行以后,这些脚本以某个特定的顺序被读取并且创建grub.cfg文件。
/etc/default/grub --这个文件包含GRUB脚本读取并且写入grub.cfg文件的GRUB菜单。它是GRUB的定制部分,类似于老的menu.lst文件,实际启动项目除外。这意味着,如果您想改变GRUB菜单,您将必须编辑已经存在的脚本或者创建新的脚本,然后更新菜单。相比老的GRUB,这更类似于LILO,LILO允许在运行中编辑菜单。
机制解释:
GRUB legacy用的menu.lst,所以用户直接修改该文件即可修改引导选项,而Grub2虽说使用跟menu.lst差不多的grub.cfg,但是需要注意的是grub.cfg是有其他脚本生成的而不是由用户直接编辑保存的一般文本文件,总体上也就是,menu.lst由用户制作而得到,而grub.cfg由其他程序生成,所以要想修改grub.cfg必须修改其他程序(/etc/grub.d下的脚本文件)然后update-grub,否则如果直接修改grub.cfg后如果无意中update-grub的话就会覆盖grub.cfg。说到这里开个小差,这点变态的地方有点像编译linux内核的.config文件,.config文件不是由用户直接编辑保存的,而是由用户通过make config而生成的。
既然grub.cfg是有grub.d下的脚本生成的,所以重点就在grub.d下的脚本了(/etc/default/grub文件只是设置非启动选项,例如默认选项,等待时间,图片等等)这里就说说脚本文件,脚本文件都是xx_开始的(两个数字加下划线)。
00_header是从/etc/default/grub中加载GRUB设置的脚本,包括超时、默认启动项和其他。我们会稍侯了解更多。
05_debian_theme定义背景、颜色和主题。这个脚本的名字很明确将会改掉当别的版本采用GRUB的时候。
10_linux 为已经安装的发行版加载菜单项。
20_memtest86+ 加载memtest(内存测试)功能
30_os-prober 这个脚本将会扫描硬盘上的其他操作系统并且添加到启动菜单。
40_custom 是一个您可以用来创建新加的条目到菜单的模板。
最后说一点,grub2相对于grub分区表示的变化:grub2分区从1开始:hd(0,1)hd(0,2)hd(0,3)