Loading... # 修改GRUB默认启动内核 # 一、概述 ## 1. 简介 ### A. 是什么 GRUB(Grand Unified Bootloader)是Linux系统中最常用的引导加载程序,负责在系统启动时加载内核。默认情况下,GRUB会启动最新安装的内核版本,但有时我们需要指定特定版本的内核作为默认启动项。 ### B. 为什么需要 某些情况下,最新内核可能存在兼容性问题、驱动不支持或性能问题,需要回退到旧版本内核。设置默认内核可以确保系统每次重启都使用稳定的内核版本。 ### C. 学完能做什么 - 查看当前系统的GRUB菜单配置 - 修改GRUB默认启动内核 - 验证配置并生效 ## 2. 前置知识 ### A. 必备技能 - 基本Linux命令操作 - sudo权限管理 ### B. 推荐知识 - 了解Linux内核版本号含义 - 了解GRUB引导流程 # 二、查看当前配置 ## 1. 查看已安装内核 使用以下命令查看系统中已安装的内核版本: ```bash ls /boot/vmlinuz* /boot/initrd* | sort -V ``` 输出示例: ``` /boot/initrd.img-6.17.0-14-generic /boot/initrd.img-6.17.0-20-generic /boot/vmlinuz-6.17.0-14-generic /boot/vmlinuz-6.17.0-20-generic ``` ## 2. 查看GRUB菜单结构 查看GRUB配置文件中的菜单项: ```bash sudo awk '/menuentry.*linux/ {print NR": "$0}' /boot/grub/grub.cfg ``` 输出示例: ``` 165: menuentry 'Kubuntu, with Linux 6.17.0-20-generic' ... 183: menuentry 'Kubuntu, with Linux 6.17.0-20-generic (recovery mode)' ... 220: menuentry 'Kubuntu, with Linux 6.17.0-14-generic' ... 239: menuentry 'Kubuntu, with Linux 6.17.0-14-generic (recovery mode)' ... ``` ## 3. 查看当前GRUB默认配置 ```bash cat /etc/default/grub ``` 默认配置通常为: ``` GRUB_DEFAULT=0 ``` # 三、GRUB菜单索引规则 ## 1. 菜单结构理解 ```mermaid graph TD A[GRUB菜单] --> B[条目0: Kubuntu<br/>默认最新内核] A --> C[条目1: Advanced Options<br/>子菜单] C --> D[1>0: 6.17.0-20-generic] C --> E[1>1: 6.17.0-20-generic recovery] C --> F[1>2: 6.17.0-14-generic] C --> G[1>3: 6.17.0-14-generic recovery] ```   ## 2. 索引规则说明 - 条目0:主菜单项,使用最新内核 - 条目1:Advanced Options子菜单 - 1>0:最新版本内核(如6.17.0-20-generic) - 1>1:最新版本内核恢复模式 - 1>2:次新版本内核(如6.17.0-14-generic) - 1>3:次新版本内核恢复模式 子菜单索引格式为:`submenu_index>menu_index`,索引从0开始计数。 # 四、修改默认内核 ## 1. 备份当前配置 修改前务必备份原始配置: ```bash sudo cp /etc/default/grub /etc/default/grub.bak ``` ## 2. 修改GRUB_DEFAULT参数 使用sed命令或编辑器修改配置: ```bash sudo sed -i 's/^GRUB_DEFAULT=0/GRUB_DEFAULT="1>2"/' /etc/default/grub ``` 或者使用文本编辑器: ```bash sudo nano /etc/default/grub ``` 将以下内容: ``` GRUB_DEFAULT=0 ``` 修改为(以6.17.0-14-generic为例): ``` GRUB_DEFAULT="1>2" ``` ## 3. 验证修改结果 ```bash cat /etc/default/grub ``` 确认输出包含正确的GRUB_DEFAULT值。 # 五、更新GRUB配置 ## 1. 更新GRUB 修改配置文件后,需要更新GRUB使配置生效: ```bash sudo update-grub ``` 输出示例: ``` Sourcing file `/etc/default/grub' Generating grub configuration file ... Found linux image: /boot/vmlinuz-6.17.0-20-generic Found initrd image: /boot/initrd.img-6.17.0-20-generic Found linux image: /boot/vmlinuz-6.17.0-14-generic Found initrd image: /boot/initrd.img-6.17.0-14-generic done ``` ## 2. 重启验证 重启系统后验证默认内核: ```bash uname -r ``` 输出应为目标内核版本,如: ``` 6.17.0-14-generic ``` # 六、恢复默认设置 如需恢复到使用最新内核,执行以下操作: ```bash sudo cp /etc/default/grub.bak /etc/default/grub sudo update-grub ``` # 七、常见问题 ## 1. 找不到目标内核 确保目标内核已正确安装: ```bash ls /boot/vmlinuz* | sort -V ``` 如需安装特定内核,使用: ```bash sudo apt install linux-image-版本号-generic ``` ## 2. update-grub命令不存在 Debian/Ubuntu系统使用update-grub,其他发行版可能使用: - RHEL/CentOS:`grub2-mkconfig -o /boot/grub2/grub.cfg` - Fedora:`grub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfg` ## 3. 子菜单索引计算错误 使用以下命令查看完整的菜单结构: ```bash sudo grep -E "^menuentry|^submenu" /boot/grub/grub.cfg ``` 仔细计数submenu和menuentry的位置,注意索引从0开始。 *** ## 参考资料 1. [GNU GRUB Manual](https://www.gnu.org/software/grub/manual/) 最后修改:2026 年 04 月 06 日 © 允许规范转载 赞 如果觉得我的文章对你有用,请随意赞赏