尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
linux-command 项目实战:grub2-set-default 命令详解——设置 GRUB 默认启动内核的完整指南
文档教程【免费下载链接】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),仅供参考
RELATED

相关推荐

en.javascript.info 逻辑运算符实战:深入解析 `alert( alert(1)  alert(2) )` 的输出与短路求值

en.javascript.info 逻辑运算符实战:深入解析 `alert( alert(1) alert(2) )` 的输出与短路求值

文档/教程前端 【免费下载链接】en.javascript.info Modern JavaScript Tutorial 项目地址: https://gitcode.com/gh_mirrors/en/en.javascript.info 点击查看 免费下载 导读 本篇文章基于 en.javascript.info(Modern JavaScript Tutorial&#xff09…

📅 2026/10/1 8:07:48
Grok 4.7 API升级详解:稳定性优化与开发者适配指南

Grok 4.7 API升级详解:稳定性优化与开发者适配指南

1. Grok 4.7 不是“新模型”,而是API层的一次精准外科手术 Grok 4.7 这个名字一出来,很多开发者第一反应是:“又出新大模型了?”——其实不是。它既不是参数量翻倍的下一代,也不是架构重构的全新版本,而是…

📅 2026/10/1 8:07:48
Agent 开发实战:用 Laya 和 Jev 构建判断器,让智能体从能跑到靠谱

Agent 开发实战:用 Laya 和 Jev 构建判断器,让智能体从能跑到靠谱

1. 从“能跑”到“靠谱”:为什么你的 Agent 需要一个判断器做 Agent 开发的朋友大概率都经历过这个阶段:Demo 跑通了,工具调用也接上了,看着模型一步步执行任务,感觉一切都很美好。但一旦把它放到真实场景里&#xff0…

📅 2026/10/1 8:02:48
MORE NEWS

更多资讯

📰

AI生成法律文书选哪家国内推荐优质甄选服务覆盖全国

随着法律需求的普及和数字化工具的发展,AI生成法律文书已经成为很多律师、法务和普通用户提升办事效率的首选,不过市面上相关服务商质量参差不齐,很多用户不知道该怎么选到靠谱的服务。 行业普遍痛点与市场需求 当前法律AI文书服务行业普遍存…

📰

零代码搭建AI-Agent实战:从入门到进阶的完整指南

1. 为什么“零代码”是AI-Agent落地的第一站1.1 从“写代码”到“搭积木”的思维转变很多人第一次听到“AI-Agent”这个词,脑子里浮现的都是满屏的Python代码、复杂的API调用、各种向量数据库和模型部署。我刚开始接触的时候也是这个反应,觉得这东西门槛…

📰

阿里云CPFS全栈自研高性能存储:AI训练成本降低69%的工程实践

1. 从"存储吃掉一半预算"说起:CPFS到底在解决什么问题做过大模型训练的人都有一个共同体会:算力账单虽然贵,但真正让人肉疼的往往是存储。一个千亿参数级别的模型,训练数据集动辄几十TB到上百TB,checkpoint每…

📰

2026年亚太工业微生物培养基蛋白胨理化分析与选型指南

文章目录一、工业微生物培养基配制中蛋白胨的营养屏障二、107213颗粒型酪蛋白胨物理形态与理化常数三、高溶解度与低粉尘颗粒化加工的物理化学机制四、环境潮湿条件与加样称量中时间因子的控制五、品牌内酪蛋白胨与大豆蛋白胨物理规格段落对比六、苛养微生物发酵与食品药性检测…

📰

DeepSeek弹性计算精读:从vLLM部署到API接入的工程实践指南

拿到“DeepSeek Elastic Compute (DSec)精读”这个标题,我最开始以为又是哪个新出的模型命名,真正去翻了一圈资料才发现,它说的不是某个具体的模型,而是一整套把DeepSeek这类开源模型变成“可弹性伸缩的推理服务”的架构思路和工具…

📰

migrate 快速上手指南:用 CLI 与 Golang 库管理数据库迁移的全流程

数据库开发工具CLI 【免费下载链接】migrate Database migrations. CLI and Golang library. 项目地址: https://gitcode.com/gh_mirrors/mi/migrate 点击查看 免费下载 这篇指南以 GETTING_STARTED.md 为主体,系统讲解 golang-migrate(即 m…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬