资讯动态

linux-command 项目实战:grub2-set-default 命令详解——设置 GRUB 默认启动内核的完整指南

发布时间:2026/10/1 8:07:47 来源:尧图企业网站定制
文档教程【免费下载链接】linux-commandLinux命令大全搜索工具内容包含Linux命令手册、详解、学习、搜集。https://git.io/linux项目地址https://gitcode.com/GitHub_Trending/linux/linux-command点击查看免费下载导读grub2-set-default是 GRUB 2 引导器系列工具之一用于将系统默认启动的内核或默认启动菜单项持久化写入 GRUB 配置从而在重启后自动进入指定内核。本文以本仓库中的 grub2-set-default 文档 为核心结合仓库内 grub2-mkconfig、grub、awk、uname 等配套文档系统讲解该命令的语法、前置条件、三类参数取值方式、完整操作流程与验证方法读者学完后可以独立完成列出可选内核 → 设置默认内核 → 重启验证的完整闭环特别适用于内核升级后需要回滚、多内核共存场景下的默认启动项管理。命令概览与语法grub2-set-default的作用非常明确设置 GRUB 的默认启动菜单项default boot menu entry。其完整用法如下内容引自仓库文档 command/grub2-set-default.mdUsage: grub2-set-default [OPTION] MENU_ENTRY Set the default boot menu entry for GRUB. This requires setting GRUB_DEFAULTsaved in /etc/default/grub. -h, --help print this message and exit -v, --version print the version information and exit --boot-directoryDIR expect GRUB images under the directory DIR/grub2 instead of the /boot/grub2 directory MENU_ENTRY is a number, a menu item title or a menu item identifier. Report bugs to bug-grubgnu.org.命令本身只有一个必选位置参数MENU_ENTRY含义是要把哪个菜单项设为默认它支持三种形式MENU_ENTRY 形式说明示例数字number菜单项序号从 0 开始计数对应 grub.cfg 中菜单的排列顺序grub2-set-default 0菜单项标题menu item title菜单中显示的完整标题文本grub2-set-default CentOS Linux (3.10.0-862.el7.x86_64) 7 (Core)菜单项标识符menu item identifier菜单项对应的menuentryid标识符视 grub.cfg 中声明的 id 而定此外支持三个选项-h, --help打印帮助信息并退出-v, --version打印版本信息并退出--boot-directoryDIR指定从DIR/grub2目录而非默认的/boot/grub2读取 GRUB 镜像与配置。当系统引导文件不在标准路径下例如嵌入式环境、自定义引导分区、某些采用特殊布局的发行版时使用。前置条件GRUB_DEFAULTsaved 机制文档的 Usage 说明中明确写出了一句关键约束This requires settingGRUB_DEFAULTsavedin/etc/default/grub.这是使用grub2-set-default的前提条件原理如下GRUB 2 的默认启动项由/etc/default/grub中的GRUB_DEFAULT变量控制常见取值是具体的菜单序号如GRUB_DEFAULT0这种写法是写死的每次由grub2-mkconfig生成 grub.cfg 时把该值固化进配置当GRUB_DEFAULTsaved时grub.cfg 中的默认项不再指向某个固定序号而是引用一个可动态变更的已保存项即 GRUB 环境块 grubenv 中的saved_entry变量。grub2-set-default所做的正是把用户指定的 MENU_ENTRY 写入这个环境块实现运行时不改 grub.cfg、只改默认选择的效果。因此标准操作链路是在/etc/default/grub中确保存在GRUB_DEFAULTsaved使用grub2-set-default写入目标菜单项使用grub2-mkconfig -o /boot/grub2/grub.cfg重新生成配置文件如配置发生变化时重启系统使设置生效。其中第 3 步对应的命令在仓库文档 command/grub2-mkconfig.md 中有完整说明grub2-mkconfig -o /boot/grub2/grub.cfg # 或者 grub2-mkconfig /boot/grub2/grub.cfg值得注意的是如果/etc/default/grub中没有设置GRUB_DEFAULTsavedgrub2-set-default写入的默认项将不会生效因为 grub.cfg 中根本没有引用已保存项这一机制——这一点是排查命令执行成功但重启后没变问题的首要检查项。实战一列出系统可选内核设置默认内核之前必须先弄清楚当前机器上安装了几个内核、菜单项如何排列。文档给出的标准做法是用awk从/etc/grub2.cfg中抽取所有menuentry的标题# awk -F\ $1menuentry {print $2} /etc/grub2.cfg CentOS Linux (5.4.219-1.el7.elrepo.x86_64) 7 (Core) CentOS Linux (3.10.0-1160.76.1.el7.x86_64) 7 (Core) CentOS Linux (3.10.0-862.el7.x86_64) 7 (Core) CentOS Linux (0-rescue-3221d376917c458992a952d6327f2d6a) 7 (Core)这条命令的解析逻辑结合仓库 command/awk.md 中对 awk 的说明是-F\把字段分隔符设置为单引号。grub.cfg 中每个启动项形如menuentry 标题文本 --class ... { ... }标题被一对单引号包裹因此按单引号切分后第 2 个字段恰好就是标题$1menuentry 模式匹配只处理以menuentry注意末尾空格开头的行过滤掉submenu、menuentry多行续写等其他内容{print $2}打印第 2 个字段即标题本身。上面的输出示例展示了一个典型的 CentOS 7 多内核共存场景安装了 elrepo 的 5.4 内核、两个 3.10 内核以及一个 rescue 救援内核。菜单项在 grub.cfg 中的排列顺序即为序号顺序0、1、2、3。如果机器使用 UEFI 引导配置文件路径通常是/boot/efi/EFI/centos/grub.cfg可以把上述命令中的/etc/grub2.cfg替换为实际路径/etc/grub2.cfg通常是符号链接指向真实配置文件。实战二设置默认启动内核按数字序号指定文档明确指出grub2-set-default 后面的序号从 0 开始。结合上一步的输出菜单项与序号的对应关系为序号菜单项0CentOS Linux (5.4.219-1.el7.elrepo.x86_64) 7 (Core)1CentOS Linux (3.10.0-1160.76.1.el7.x86_64) 7 (Core)2CentOS Linux (3.10.0-862.el7.x86_64) 7 (Core)3CentOS Linux (0-rescue-3221d376917c458992a952d6327f2d6a) 7 (Core)如果想设置第一个选项5.4 内核为默认启动内核执行# grub2-set-default 0如果想使用CentOS Linux (3.10.0-862.el7.x86_64) 7 (Core)这个内核版本作为默认则把序号 0 改为 2# grub2-set-default 2提示序号对应的是 grub.cfg 中菜单项的显示顺序而不是内核版本号的大小。如果之后又安装了新内核并重新生成了 grub.cfg菜单顺序可能变化原先的序号 2 指向的内核可能不再是 3.10.0-862——因此在高风险场景如内核回滚中用完整标题指定更为稳妥。按菜单项标题或标识符指定除数字外MENU_ENTRY还支持直接使用菜单项标题例如# grub2-set-default CentOS Linux (3.10.0-862.el7.x86_64) 7 (Core)这种方式不依赖菜单顺序只要标题与awk列出的内容完全一致即可命中。第三种方式是使用菜单项标识符id这需要 grub.cfg 中对应menuentry声明了 id例如menuentry ... ... --id centos-310 { ... }此时可执行grub2-set-default centos-310。实战三重启系统并验证文档给出的重启方式是init 6~]# init 6init 6是 SysV 风格的运行级别切换指令等价于重启。在 systemd 系统上也可以使用systemctl reboot或直接执行reboot。重启后系统应进入所设置的内核可以通过以下命令验证实际运行的内核使用 uname 查看完整内核版本信息# uname -r 3.10.0-862.el7.x86_64使用 kernelversion 查看主版本号输出形如3.10该命令提取的是/proc/version或uname -r中内核版本信息的前两部分# kernelversion 3.10确认uname -r输出的版本与目标菜单项中的内核版本一致即代表设置成功。常见使用场景场景一内核升级后回滚。新内核出现兼容性问题驱动异常、服务起不来时最常见的应急操作就是把默认启动项切回旧内核。此时先awk列出全部内核确认旧内核所在菜单项然后grub2-set-default 序号或标题重启后即回到旧内核无需物理接触服务器配合 IPMI/控制台可从 grub 菜单手动选择见 grub 文档。场景二多内核共存时的固定默认内核。服务器上同时保留多个内核如 elrepo 内核 发行版默认内核时用数字序号或标题固定一个长期默认内核避免升级新内核后默认项漂移。场景三自定义引导目录环境。当引导镜像不在标准/boot/grub2目录时使用--boot-directoryDIR指定实际位置例如grub2-set-default --boot-directory/mnt/boot 0命令会从/mnt/boot/grub2目录读取环境块并写入默认项。注意事项与排错要点务必确认GRUB_DEFAULTsaved已设置。这是命令生效的硬性前提未设置时命令虽可执行但重启后默认项不会改变序号从 0 开始且与 grub.cfg 菜单显示顺序一致先awk列出再设置避免序号错位修改/etc/default/grub或安装新内核后记得执行grub2-mkconfig -o /boot/grub2/grub.cfg重新生成配置否则新增的内核不会出现在菜单中UEFI 与 BIOS 环境的配置文件路径不同UEFI 下实际配置文件通常在 EFI 系统分区内需要将awk和grub2-mkconfig的目标路径替换为实际路径本文示例基于 CentOS/RHEL 7 系文档输出中的el7内核即为该发行版特征在其他发行版上命令名可能是grub-set-default配置目录也可能不同需以实际发行版为准设置 rescue 救援内核为默认项通常没有必要除非在做系统故障排查。相关命令速查命令作用仓库文档grub2-set-default设置 GRUB 默认启动菜单项command/grub2-set-default.mdgrub2-mkconfig生成 grub.cfg 配置文件command/grub2-mkconfig.mdgrub多重引导程序 grub 的命令行 shell 工具可进入 grub 手工引导系统command/grub.mdawk文本和数据处理编程语言用于提取菜单项标题command/awk.mduname打印系统信息验证内核 releasecommand/uname.mdkernelversion打印当前内核主版本号command/kernelversion.md结合这些配套命令读者可以在本仓库 command 目录 中检索到完整的命令手册体系形成设置 → 生成 → 验证的完整工具链知识。赞分享文档教程【免费下载链接】linux-commandLinux命令大全搜索工具内容包含Linux命令手册、详解、学习、搜集。https://git.io/linux项目地址https://gitcode.com/GitHub_Trending/linux/linux-command点击查看免费下载相关推荐Linux chsh 命令详解更换登录 Shell 的完整实战指南linux-command 项目Linux chsh 命令详解更换登录 Shell 的完整实战指南linux command 项目 导读 chsh change shell是 Lin文档教程linux-command 项目实战Linux cat 命令完整详解与核心选项速查手册linux command 项目实战Linux cat 命令完整详解与核心选项速查手册 本文基于开源仓库 linux command README.md h文档教程linux-command 仓库 cp 命令详解Linux 文件复制的完整实战指南linux command 仓库 cp 命令详解Linux 文件复制的完整实战指南 本指南以 linux command 仓库中的 command/cp.md文档教程上一篇1.5B参数破局DeepSeek-R1-Distill-Qwen如何重塑轻量化模型市场下一篇Vim插件开发终极指南打造专属代码编辑环境创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑