从9.10开始, Ubuntu使用grub2作为默认启动引导程序, 相对于grub的第一个版本,grub2改动很大。 grub2的新特性主要有:支持图形化界面,支持主题,模块化加载,跨平台兼容等,总而言之,功能的加强也使得grub2的配置变得更加复杂了
4.1 grub配置文件组成grub2包含一个完全修改过的配置文件及目录,menu.list不再使用
grub2采用模块化的设计,主要配置文件是/boot/grub/grub.cfg,但是这个文件的权限是444,连root也不让修改,这是刻意为之的,不要修改文件权限,grub.cfg的内容更新由update-grub命令来更新,其实就是执行grub-mkconfig -o /boot/grub/grub.cfg来更新,此文件会在更新内核自动更新, 在/boot/grub目录下有很多模块文件,以在按需时自动加载模块每段模块配置的加载以### BEGIN xxx ###开始,以### END xxx ###结尾。
grub2主要有三部分组成:
配置文件描述/etc/default/grub grub的默认配置文件,可以修改一些常见的参数
/etc/grub.d 这个文件夹下面是一些生成grub.cfg文件的可执行脚本,可以修改
/boot/grub/grub.cfg 系统引导时读取的文件之一,由其他文件生成的,一般不在这里修改
4.2 /etc/default/grub
此文件包含menu.list的前半部分内容,以及每行内核配置后面追加的配置, 在更新时会合并到grub.cfg中
/etc/default/grub控制grub-mkconfig的操作,grub里面是以键值对存在的选项,如果值有空格或者其他字符需要用引号引起来,参数如下
参数描述GRUB_DEFAULT 默认的菜单选择项,值可以是数字,默认从0开始,值也可以是title后面的字符串,当值是‘saved’时有特殊含义:默认的菜单选则项会被保存在GRUB_SAVEDEFAULT中,下次启动时会从这个值启动。当值为saved是可以用grub-set-default和grub-reboot来设置默认启动项,grub-set-default直到下次修改前都有效,grub-reboot下次启动时生效
GRUB_SAVEDEFAULT 只有这个值是true,GRUB_DEFAULT是saved时才会起作用
GRUB_TIMEOUT 选择菜单的显示时间,默认是5,值是0表示不显示菜单选项,值是-1表示无限期的等待做出选择
GRUB_HIDDEN_TIMEOUT grub2第一次执行时会寻找其他操作系统,如果没有检测到则会将菜单隐藏,如果有其他操作系统才会显示菜单,如果参数大于0,则会等待响应的秒数,但是不会显示菜单,可以按住shift显示菜单
GRUB_DISTRIBUTOR 菜单中的描述名称,采用命令lsb_release判断,应该是红帽系列的,如果不是就归为Debian
GRUB_CMDLINE_LINUX 此行将追加到所有的linux 定义内核行的后面,不论是救援模式还是一般模式
GRUB_CMDLINE_LINUX_DEFAULT 次选项只会追加在一般模式后面,同上
GRUB_TERMINAL=console 启用console,默认注释状态
GRUB_DISABLE_LINUX_UUID=true 在grub中指定root时可以使用UUID,默认注释
GRUB_GFXMODE=640x480 图形化菜单的分辨率,默认注释
GRUB_DISABLE_LINUX_RECOVERY=true 禁止显示救援模式
定制自己的/etc/default/grub配置文件, 如下所示
# If you change this file, run 'update-grub' afterwards to update GRUB_DEFAULT=0 #设置默认启动项,按menuentry顺序如果要默认从第四个菜单项启动,数字改为3,若改为 saved,则默认为上次启动项 GRUB_TIMEOUT="10" #设置进入默认启动项的等候时间,默认值10秒,按自己需要修改,单位为秒改改为零和负值为无限等待操作 GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian` #获得发行版名称(比如Ubuntu, Debian GRUB_CMDLINE_LINUX_DEFAULT="quiet splash" #选择启动的环境,“quiet splash”为图像界面,“text”为文本界面 #GRUB_CMDLINE_LINUX="noresume" #手动添加内核启动参数,比如 acpi=off noapic 等可在这里添加 # Uncomment to disable graphical terminal (grub-pc only) #GRUB_TERMINAL=console #设置是否使用图形介面。前面有#注释(使用图形界面),前面没有#注释(仅使用控制台终端,不使用图形介面) ) # The resolution used on graphical terminal # note that you can use only modes which your graphic card supports via VBE # you can see them in real GRUB with the command `vbeinfo' #GRUB_GFXMODE=640x480 #设定图形介面分辨率,如不使用默认。把前面#去掉,把分辨率改为800x600或1024x768 # Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux #GRUB_DISABLE_LINUX_UUID=true #取消注释以阻止GRUB将传递参数 "root=UUID=xxx" 传递给 Linux内核 # Uncomment to disable generation of recovery mode menu entrys #GRUB_DISABLE_LINUX_RECOVERY="true" #定是否创建修复模式菜单项,前面有#注释(建立修复模式).前面没有#注释(不建立修复模式 # Uncomment to get a beep at grub start #GRUB_INIT_TUNE="480 440 1" #当GRUB菜单出现时发出鸣音提醒,户无法看到屏幕特别有用,默认关闭 4.3 /etc/grub.d/目录