在Linux系统管理中,多内核共存是常见场景。欧拉25.09作为企业级操作系统,默认会保留多个内核版本以提供回滚能力。当我们需要:
欧拉25.09采用GRUB2作为引导加载程序,其配置文件位于:
/boot/grub2/grub.cfg(自动生成,禁止直接修改)/etc/default/grub(主配置文件)/etc/grub.d/(脚本目录)启动顺序由GRUB_DEFAULT参数控制,其赋值逻辑有:
0表示第一个菜单项"openEuler (5.10.0-60.18.0.50.oe2203.x86_64)"saved模式:配合grub2-set-default使用执行以下命令获取当前可用内核:
bash复制awk -F\' '/^menuentry / {print $2}' /boot/grub2/grub.cfg
典型输出示例:
code复制openEuler (5.10.0-60.18.0.50.oe2203.x86_64) 25.09
openEuler (5.10.0-60.18.0.49.oe2203.x86_64) 25.09
openEuler (0-rescue-xxxx) 25.09
| 方法 | 适用场景 | 持久性 | 复杂度 |
|---|---|---|---|
| 启动时手动选择 | 临时测试 | 否 | 低 |
| grub2-set-default | 生产环境 | 是 | 中 |
| 直接修改grub.cfg | 紧急调试 | 否 | 高 |
推荐使用grub2-set-default方案,具体步骤:
确认当前默认内核:
bash复制grub2-editenv list | grep saved_entry
查看所有内核索引:
bash复制grep -P "submenu|menuentry" /boot/grub2/grub.cfg | cat -n
输出示例:
code复制1 submenu 'Advanced options for openEuler 25.09' {
2 menuentry 'openEuler (5.10.0-60.18.0.50.oe2203.x86_64) 25.09' ...
3 menuentry 'openEuler (5.10.0-60.18.0.49.oe2203.x86_64) 25.09' ...
设置新默认内核(以选择第3项为例):
bash复制sudo grub2-set-default "1>2" # 1>表示进入子菜单,2表示第三行(从0计数)
生成新配置:
bash复制sudo grub2-mkconfig -o /boot/grub2/grub.cfg
验证设置:
bash复制grub2-editenv list
修改/etc/default/grub:
bash复制GRUB_TIMEOUT=5 # 单位:秒
GRUB_HIDDEN_TIMEOUT=0 # 直接显示菜单
更新配置:
bash复制sudo grub2-mkconfig -o /boot/grub2/grub.cfg
启用保存最后选择功能:
bash复制echo "GRUB_SAVEDEFAULT=true" | sudo tee -a /etc/default/grub
sudo grub2-mkconfig -o /boot/grub2/grub.cfg
grub.cfg生成时间:bash复制ls -lh /boot/grub2/grub.cfg
bash复制sudo grub2-editenv /boot/grub2/grubenv list
bash复制mount | grep efivars
bash复制sudo grub2-set-default 0
sudo grub2-mkconfig -o /boot/grub2/grub.cfg
bash复制rpm -q kernel | wc -l # 应≥2
bash复制sudo cp /boot/grub2/grub.cfg /boot/grub2/grub.cfg.bak
bash复制sudo yum remove --oldinstallonly --setopt=protected_packages= # 危险操作!
重要提示:修改启动参数后建议先在虚拟机测试,物理服务器操作需确保有带外管理权限