补充说明
grub-editenv 用来查看和修改 GRUB 的 environment block(环境块),也就是 /boot/grub/grubenv 文件。GRUB 在启动时读取其中的变量,grub-reboot、grub-set-default 实际上就是通过修改 next_entry、saved_entry 等变量实现的。
环境块是一个固定大小的小文件(通常 1024 字节),以 # GRUB Environment Block 开头,后面是 键=值 行。它由 GRUB 与系统工具共同读写,手工编辑容易破坏格式,因此应使用本命令。
常见变量包括 saved_entry(默认启动项)、next_entry(仅下次启动生效)、menu_auto_hide、feature_* 等。设置了 GRUB_DEFAULT=saved 时,saved_entry 才会被 GRUB 使用。
语法
grub-editenv [选项] 文件 命令 [参数...]
不指定文件时默认使用 /boot/grub/grubenv(EFI 系统上通常是 /boot/grub/grubenv,部分发行版为 /boot/grub2/grubenv)。
命令
create:创建空的环境块set 变量=值 [变量=值...]:设置变量unset 变量...:删除变量list:列出全部变量edit:用$EDITOR交互编辑
实例
# 查看当前环境块内容
sudo grub-editenv list
# 设置下次启动进入指定菜单项(需与 grub.cfg 中的条目 id 对应)
sudo grub-editenv set next_entry="1>0"
# 清除“仅下次启动”设置
sudo grub-editenv unset next_entry
# 查看默认保存的启动项
sudo grub-editenv list | grep saved_entry
# 重新创建环境块(先确认路径存在)
sudo grub-editenv /boot/grub/grubenv create
修改后无需运行 grub-mkconfig:next_entry 只在下次启动时被读取,随后 GRUB 会清除它。若需要持久改变默认启动项,应使用 grub-set-default。