GRUB2的配置方法【涉及/etc/default/grub,/etc/grub.d/*】

 

介绍 

 

GRUB 2 通过运行/etc/grub.d/folder  目录下的脚本来 建立配置文件 (grub.cfg) ,并且/etc/default/grub这个文件也可以配置。update-grub命令(手动运行,或更新内核的时候会被执行)  可以自动更新grub.cfg .这个命令会激活上面的脚本,并且会寻找系统中存在的操作系统和内核。一旦发现操作系统或内核,那么它们会被加入到 GRUB 2 的启动菜单当中。 

 

通过以下两个命令中的任意一个 可以知道,GRUB2被安装在了哪个分区:

  • Device: sudo grub-probe -t device /boot/grub

  • UUID: sudo grub-probe -t fs_uuid /boot/grub

例如: 

$ grub-probe -t device /boot/grub/
/dev/sda1
$ sudo grub-probe -t fs_uuid /boot/grub/
efa0f8fd-d69d-4931-8275-d25f8871511d
$ sudo grub-probe -t device /boot/grub/
/dev/sda1
$
$ df -h
文件系统            容量  已用  可用 已用%% 挂载点
/dev/sda5              19G   16G  2.3G  87% /
none                  1.5G  672K  1.5G   1% /dev
none                  1.5G  104K  1.5G   1% /dev/shm
none                  1.5G  356K  1.5G   1% /var/run
none                  1.5G     0  1.5G   0% /var/lock
/dev/sda1             3.7G  132M  3.4G   4% /boot     # 我这台机的 grub2是装在 /boot 分区的
/dev/sda8             426G  303G  102G  75% /home
/dev/sda7             5.6G  417M  4.9G   8% /opt
df: "/home/swtd1/.gvfs": 无效的跨设备连接
/home                 426G  303G  102G  75% /home

 

安装 在 sda1 的操作系统接管 grub2。

 

主目录和文件 -- Main Directories & Files

The Menu: /boot/grub/grub.cfg

grub.cfg 这个文件,在以前的grub版本( GRUB 0.97')是 menu.lst    。grub.cfg这个文件不像 menu.list这个文件, menu.list是直接编辑的。

而grub.cfg是用命令(每个命令负责这个配置文件中的某一块的更新)来更新的。

 

grub.cfg 通过运行update-grub    来更新的。update-grub 其实就跟如下命令是一个作用。

      grub-mkconfig -o /boot/grub/grub.cfg.

如果用户希望在一个不同的位置创建一个不同名字的启动菜单的话,就需要通过 “-o” 选项来指定新的路径。

 

当 grub-install  命令运行的时候,并不创建或者更新 grub.cfg 文件。

 

直接修改 grub.cfg  --- Editing grub.cfg directly

手动修改 grub.cfg 需要注意:

如果其他的任务会运行 update-grub ,那么应该在 update-grub 运行之后, 再编辑 grub.cfg  。也就是说在编辑grub.cfg之前,应该所有需要的内核和相关资源已经有了。

当然,你手动编辑的内容,一般来说在下次运行update-grub  之后,都会被覆盖掉。update-grub 是根据它自己的规则来更新grub.cfg。

 grub.cfg的部分内容 是/etc/grub.d     下的脚本生成的。用户可以根据需要编辑这个目录下的脚本。

 

 

用户设置: /etc/default/grub

/etc/default/grub 文件包含了很多默认配置。

 /usr/sbin$ ls grub-*
grub-install   grub-mkdevicemap  grub-probe   grub-set-default
grub-mkconfig  grub-mknetdir     grub-reboot  grub-setup

 在 /usr/sbin 目录下,以 grub- 开头的文件都是 脚本文件,并非二进制可执行文件。

很多预定义的变量包含在/usr/sbin/grub-mkconfig    这个文件中,用如下命令可以列出这些预定义的变量:

 

grep "export GRUB_DEFAULT" -A50 /usr/sbin/grub-mkconfig | grep GRUB_

 

/usr/sbin$ grep "export GRUB_DEFAULT" -A50 /usr/sbin/grub-mkconfig | grep GRUB_
export GRUB_DEFAULT \
  GRUB_HIDDEN_TIMEOUT \
  GRUB_HIDDEN_TIMEOUT_QUIET \
  GRUB_TIMEOUT \
  GRUB_DEFAULT_BUTTON \
  GRUB_HIDDEN_TIMEOUT_BUTTON \
  GRUB_TIMEOUT_BUTTON \
  GRUB_BUTTON_CMOS_ADDRESS \
  GRUB_BUTTON_CMOS_CLEAN \
  GRUB_DISTRIBUTOR \
  GRUB_CMDLINE_LINUX \
  GRUB_CMDLINE_LINUX_DEFAULT \
  GRUB_CMDLINE_XEN \
  GRUB_CMDLINE_XEN_DEFAULT \
  GRUB_CMDLINE_NETBSD \
  GRUB_CMDLINE_NETBSD_DEFAULT \
  GRUB_TERMINAL_INPUT \
  GRUB_TERMINAL_OUTPUT \
  GRUB_SERIAL_COMMAND \
  GRUB_DISABLE_LINUX_UUID \
  GRUB_DISABLE_RECOVERY \
  GRUB_VIDEO_BACKEND \
  GRUB_GFXMODE \
  GRUB_BACKGROUND \
  GRUB_THEME \
  GRUB_GFXPAYLOAD_LINUX \
  GRUB_DISABLE_OS_PROBER \
  GRUB_INIT_TUNE \
  GRUB_SAVEDEFAULT \
  GRUB_BADRAM


 

脚本: /etc/grub.d/

 

$ ls /etc/grub.d/
00_header        10_linux      20_memtest86+  40_custom  README
05_debian_theme  20_linux_xen  30_os-prober   41_custom

 在 /etc/grub.d/ 目录下的脚本,当 update-grub执行的时候,会被读取,并合并到 /boot/grub/grub.cfg   这个文件中。

grub.cfg文件中的 菜单条目的放置,是由 /etc/grub.d/   目录下的脚本运行的顺序来决定的。文件名以数字开头的的脚本会被先执行,并且数字小的先执行。比如10_linux20_memtest之前执行。而20_memtest   会在40_custom  之前执行。文件名以字母开头的(alphabetic)的脚本在数字命名的脚本之后运行。

 自定义的 启动菜单入口(menu entries)可以被添加到40_custom   这个文件中,或者单独创建一个文件。40_custom  中的菜单入口将会出现在启动菜单的最底部。一个以“06_”开头的自定义文件,将出现在 启动菜单的最顶部。

 

 update-grub执行的时候,  /etc/grub.d/ 下的脚本会被执行。

脚本描述:

  • 00_header

  • 设置环境变量,比如 系统文件位置、video设置和之前保存的入口(previously saved entries 。这个也导入了一些相关的东西(存储在/etc/default/grub)。用户通常不需要改变这个文件。

  •  

  • 05_debian_theme

  • 这个文件的主要目的是设置GRUB2的背景图片,文本颜色,选择高亮和主题。这些文件初始化菜单显示。关于如何设置字体和显示等请参考:Grub2/Displays  (https://help.ubuntu.com/community/Grub2/Displays)

  •  

  • 10_linux

  • 识别在 root device中操作系统正在使用的内核,并且为这些内核创建(menu entries) . 这个包含了相应的“recovery mode (恢复模式)”选项。在GRUB 1.99和之后的版本中, 在 启动主菜单页面,仅显示最新的内核。其他的内核被包含在了子启动菜单中( submenu)。 更多submenu相关信息请参考Grub2/Submenus  。

    Note:对于早期的GRUB 2版本, 所有位于 boot目录的内核都包含在 main menu 中. 如果要减少显示的内核,那就要删除/boot文件夹下的旧内核,或者使用一个有效的的grub2自定义应用。

  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值