GNU GRUB手册之写你自己的配置文件(一)

GRUB的配置主要通过grub.cfg文件,通常位于/boot/grub目录下。grub-mkconfig工具可自动生成适合多数情况的配置,但高级用户可编辑/etc/grub.d/40_custom或/custom.cfg进行定制。GRUB_DEFAULT、GRUB_SAVEDEFAULT、GRUB_TIMEOUT等变量用于设定默认启动项和超时行为。文章还提及了终端输入和输出设备的选择以及多重启动的配置情况。
摘要由CSDN通过智能技术生成

GRUB是通过grub.cfg来配置的,通常是放在/boot/grub目录下面。这个文件是非常灵活的,但大多数用户都不应手写整个文件。

  1. 简单的配置----推荐大多数人使用

  1. 关于识别root的相关步骤----总结root文件系统是怎么定位的

  1. 类似与shell脚本----适用于那些动手能力强的用户和开发者

  1. 多重启动的配置----适用于非标准的多操作系统的场景

  1. 嵌入式的配置----把配置文件嵌入到GRUB中

简单的配置文件

grub-mkconfig可以生成的grub.cfg文件适用于大部分情况。在升级系统时,这个程序可以发现可用的内核,并生成一条启动菜单。

但grub-mkconfig会有点限制。要增加额外的自定义启动菜单,可以编辑/etc/grub.d/40_custom这个文件或者编辑/boot/grub/custom.cfg这个文件,改变启动顺序或者更改菜单名称,那么就要更改/etc/grub.d/目录下的脚本文件。这点在未来会改进。同时,那些比较厉害的人,可以自己去修改这个文件,并且关闭系统自动运行grub-mkconfig的功能。

文件/etc/default/grub是用来控制grub-mkconfig的具体操作的。这个文件通过shell脚本引入,因此必须是一个合法的POSIX shell的输入。通常,这个文件是键值对组成的(key=value),如果值里面有空格或者其他特殊字符,那么就要用引号括起来,比如:

GRUB_TERMINAL_INPUT="console serial"

以下是在/etc/default/grub中的合法的键:

  1. GRUB_DEFAULT

这个值指定了默认的启动菜单项。这个值可以是一个数值,这个数字从零开始计数,表示是第几条启动项,也可以是目录项的标题,或者是特殊的字符串“saved”。即使有很多个启动目录项,你还是可以用数字来设置默认的启动项。 比如,如果你有这个启动目录项: menuentry 'Example GNU/Linux distribution' --class gnu-linux --id example-gnu-linux { ... } 那么你可以这么设置默认启动项: GRUB_DEFAULT=example-gnu-linux (这里说的标题,指的是id后面的那个字符串吗?为什么不是菜单项的那个标题呢?) 在之前,也可以使用菜单项的标题,虽然这么做它依旧可以使用,但不建议这么做。因为这里面肯能会包含不稳定的设备名,有可能会变掉。

如果你把这个设置为‘saved’,那么这个默认菜单项会和GRUB_SAVEDEFAULT或者grub-set-default保存的哪个条目一致。至于是哪个,取决于环境块,这个环境块有个问题,就是未必可以在所有环境都能取得。

这个键的默认值是0。

  1. ‘GRUB_SAVEDEFAULT’

如果这个设为‘true’,那么当一个项目被选中后,GRUB就会把它当做以后的默认启动项。只有当GRUB_DEFAULT=saved的时候,这个才有用,这个本身是个独立的选项,即使没有这个选项,和grub-set-default一起用是,GRUB_DEFAULT=saved也可以生效的。这个选项跟环境块有关,可能不会在所有情况都生效。

  1. GRUB_TIMEOUT

表示在目录显示这么多秒之后,自动的启动这个菜单项,除非有键被按下了。默认值是5,如果设置成0,那么就会马上启动菜单项,如果思-1,那么就会一致等待,不启动。 如果GRUB_TIMEOUT_STYLE设置成countdown或者hidden,在显示目录前,会倒数timeout秒。

  1. GRUB_TIMEOUT_STYLE

如果这个没有设置,或者设置为menu,GRUB会显示目录,然后等待timeout秒之后,就会启动默认菜单项。如果这段时间esc、f4、shift被按下,它会显示目录等待输入。如果有快捷键和菜单项绑定,并且被按下,那么就会马上启动相应的条目。如果没有任何操作,那么在timeout后,就会启动默认项。如果是倒计时的形式,会以单行的形式显示还有多少时间剩余。

  1. GRUB_DEFAULT_BUTTON’ ‘GRUB_TIMEOUT_BUTTON’ ‘GRUB_TIMEOUT_STYLE_BUTTON’ ‘GRUB_BUTTON_CMOS_ADDRESS’

上面那些变量,如果变成不带 ‘_BUTTON’ 的形式,是开发商特定的按钮,具体的要参见 vendor power-on的按键.

  1. ‘GRUB_TERMINAL_INPUT’

选择终端的输入设备,你可以在这里指定多个输入设备,用空格隔开就行 合法的终端输入设备的名字依赖于平台,但许多都包含“console”,‘serial’,‘serial_’, ‘at_keyboard’, ‘usb_keyboard’这几种。

  1. ‘GRUB_TERMINAL_OUTPUT’

选择终端的输出设备,可以选择多个设备,设备之间用空格分开。 合法的终端名字依赖与平台,不过一般都包含:‘console’ (native platform console), ‘serial’ (serial terminal), ‘serial_’ (serial terminal with explicit port selection), ‘gfxterm’ (graphics-mode output), ‘vga_text’ (VGA text output), ‘mda_text’ (MDA text output), ‘morse’ (Morse-coding using system beeper) or ‘spkmodem’ (simple data protocol using system speaker). spkmodem 在没有串口的时候很有用。可以连接发送系统的输出和接收系统的输入。在接收系统中,通过‘util/spkmodem-recv.c’来编译spkmodem-recv,并且执行

parecord --channels=1 --rate=48000 --format=s16le | ./spkmodem-recv

默认使用的是平台的原生终端的输出。

  1. ‘GRUB_TERMINAL’

如果这个选项设置了,它会覆盖 ‘GRUB_TERMINAL_INPUT’ 和 ‘GRUB_TERMINAL_OUTPUT’,把它们设置成相同的值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值