grub设置启动项

本文介绍如何通过编辑GRUB配置文件来设置Linux系统的启动项,包括如何查看启动项、设置默认启动项及调整启动菜单显示方式等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、查看当前系统的启动项有哪些

grep menuentry /boot/grub/grub.cfg

if [ x"${feature_menuentry_id}" = xy ]; then
  menuentry_id_option="--id"
  menuentry_id_option=""
export menuentry_id_option
menuentry 'Ubuntu' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-1fb97f59-9026-48b4-ab2b-f4aa547a577d' {
submenu 'Advanced options for Ubuntu' $menuentry_id_option 'gnulinux-advanced-1fb97f59-9026-48b4-ab2b-f4aa547a577d' {
    menuentry 'Ubuntu, with Linux 4.4.0-31-generic' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.4.0-31-generic-advanced-1fb97f59-9026-48b4-ab2b-f4aa547a577d' {
    menuentry 'Ubuntu, with Linux 4.4.0-31-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.4.0-31-generic-recovery-1fb97f59-9026-48b4-ab2b-f4aa547a577d' {
    menuentry 'Ubuntu, with Linux 3.13.0-24-generic' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-3.13.0-24-generic-advanced-1fb97f59-9026-48b4-ab2b-f4aa547a577d' {
    menuentry 'Ubuntu, with Linux 3.13.0-24-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-3.13.0-24-generic-recovery-1fb97f59-9026-48b4-ab2b-f4aa547a577d' {
menuentry 'Memory test (memtest86+)' {
menuentry 'Memory test (memtest86+, serial console 115200)' {

我们看到有三个 以menuentry为开头的选项,这三个选项就是grub启动菜单主菜单的选项,在这合格例子中,他们的编号分别为:
- 0:Ubuntu
- 1:Memory test (memtest86+)
- 2:Memory test (memtest86+, serial console 115200)
其中,Ubuntu选项下面有四个子菜单,编号分别为:
- 0:Ubuntu, with Linux 4.4.0-31-generic
- 1:Ubuntu, with Linux 4.4.0-31-generic (recovery mode)
- 2:3.13.0-24-generic’ –class ubuntu
- 3:Ubuntu, with Linux 3.13.0-24-generic (recovery mode)

2、编辑启动项配置文件

打开 /etc/default/grub

GRUB_DEFAULT="0"
#GRUB_DEFAULT="Advanced options for Ubuntu>Ubuntu, with Linux 3.13.0-24-generic"
GRUB_HIDDEN_TIMEOUT=-1
GRUB_HIDDEN_TIMEOUT_QUIET=false
GRUB_TIMEOUT=10
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="quiet"
GRUB_CMDLINE_LINUX="find_preseed=/preseed.cfg auto noprompt priority=critical locale=en_US"

参数解释
1. GRUB_DEFAULT=0

设置默认启动项,在grub.cfg文件中按menuentry顺序开始计数,从0开始计数。比如要默认从第四个菜单项启动,数字改为3,若改为 saved,则默认为上次启动项。


  1. GRUB_HIDDEN_TIMEOUT=0

此配置将影响grub菜单显示。若设置此选项为一个常数,则将在此时间内隐藏菜单而显示引导画面。菜单将会被隐藏,如果注释掉该行,即:(#GRUB_HIDDEN_TIMEOUT=0)。则grub菜单能够显示,等待用户的选择,以决定进入那个系统或内核。GRUB2第一次执行时将会寻找其他操作系统。若没有其他操作系统被检测到,菜单将会配置为隐藏。若辨认出其他操作系统,菜单将会显示。若是大于 0 的整数,系统将会依此配置的秒数暂停,但不会显示菜单。0 则菜单不会显示,也不会有延迟。使用者可以在启动时按住 SHIFT 键不放以强制显示菜单。启动过程中,系统将会检查 SHIFT 键状态。若无法辨识按键状态,会有一个短时间的延迟让使用者可通过按下 ESC 键来显示菜单。
  • GRUB_HIDDEN_TIMEOUT_QUIET=true
    true不显示倒计时。屏幕将会是空白的。false 在 GRUB_HIDDEN_TIMEOUT 中配置的时间,空白屏幕上会有一个倒数计时器。
  • GRUB_TIMEOUT=10
    此命令将顺从 GRUB_HIDDEN_TIMEOUT 配置,除非 GRUB_HIDDEN_TIMEOUT 被注释掉(#)。若 GRUB_HIDDEN_TIMEOUT 启用,则当菜单显示时,GRUB_TIMEOUT 将会只执行一次。配置此值为 -1 将会导致菜单一直显示,直到用户选择。GRUB2菜单默认为隐藏,除非其他操作系统被系统检测到。若没有其他操作系统,此行将会被注释掉,除非使用者修改它。为了在每次启动时显示菜单,去掉此行的注释并使用 1 或更大的值。
  • GRUB_CMDLINE_LINUX_DEFAULT=”quiet splash”
    quiet的意思是内核启动时候简化提示信息,splash是以图形界面启动。
- 假如我们想要有启动菜单选择界面,可以设置GRUB_HIDDEN_TIMEOUT=-1
- 如果要进入子菜单,如进入3.13.0-24-generic’ 可以设置GRUB_DEFAULT=“0>2”

修改完之后执行
sudo update-grub
sudo reboot

### 如何在Linux中配置GRUB引导加载程序的启动项 #### 修改默认启动项 对于基于Debian的发行版,如Ubuntu,在`/etc/default/grub`文件中有如下设置: - 默认情况下,`GRUB_DEFAULT`指令的关键字是“saved”,这意味着将指示GRUB 2加载`/boot/grub2/grubenv`环境中`saved_entry`指令指定的内核版本。可以利用`grub2-set-default`命令来更改默认启动GRUB菜单项,此命令会更新GRUB 2环境文件中的记录[^4]。 为了永久改变默认启动的操作系统或者内核版本,还可以直接修改`GRUB_DEFAULT=0`为具体的数值或者其他参数形式,这里的数字代表了在GRUB菜单列表里的位置索引(从0开始计数),也可以设定为特定字符串比如`"Advanced options for Ubuntu>Ubuntu, with Linux 5.4.0-73-generic"`表示选择高级选项下的某个具体内核版本作为默认启动项[^1]。 #### 更新GRUB配置文件 完成上述编辑之后,需要执行命令使新的配置生效。对于大多数现代Linux发行版而言,可以通过运行`sudo update-grub`命令刷新GRUB配置并应用所做的任何改动。 #### 自定义GRUB菜单条目 如果想要添加自定义的启动条目到GRUB菜单,则可以在`/etc/grub.d/`目录下创建脚本或者是编辑现有的模板文件;另一种方式是在`/etc/grub.d/40_custom`文件里追加相应的启动条目描述语句。每一条新加入的内容都应该遵循官方文档给出的标准格式,并且同样要记得最后调用`update-grub`让变化即时反映出来[^2]。 ```bash menuentry 'Custom OS' { set root=(hdX,Y) linux /vmlinuz-linux root=/dev/sdXY ro quiet splash initrd /initramfs-linux.img } ``` 这里需要注意的是`(hdX,Y)`以及`/dev/sdXY`应当替换为你实际使用的硬盘分区标识符,而路径则指向目标系统的kernel镜像(`vmlinuz`)和初始RAM磁盘(`initramfs`)的位置。 #### 设置超时时间和隐藏菜单 通过调整`/etc/default/grub`内的其他变量也能实现更多个性化的功能,例如设置等待用户输入的时间长度(`GRUB_TIMEOUT`)或是完全隐藏GRUB界面直到按下Shift键显示它(`GRUB_HIDDEN_TIMEOUT`)等特性都可以在此处进行相应调节。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值