Linux GRUB 配置详解
Linux 系统的引导加载程序 GRUB(Grand Unified Bootloader)是启动过程中至关重要的组件,它负责在计算机加电后加载操作系统内核,GRUB 的配置文件决定了系统的启动选项、默认启动项、超时时间等关键参数,本文将详细介绍 GRUB 配置文件的位置、结构、常用参数以及修改后的生效方法,帮助用户理解并自定义系统的启动流程。

GRUB 配置文件的位置与类型
GRUB 的配置文件主要分为两种版本:GRUB Legacy(GRUB 0.97)和 GRUB 2(现代 Linux 发行版普遍采用),两者的配置文件位置和语法差异较大,需根据系统版本区分。
- GRUB 2:配置文件通常位于
/boot/grub/grub.cfg,该文件一般由/etc/default/grub和/etc/grub.d/目录下的脚本自动生成,不建议直接编辑grub.cfg,而是通过修改配置模板后运行update-grub命令更新。 - GRUB Legacy:配置文件为
/boot/grub/menu.lst,需手动编辑。
以 GRUB 2 为例,核心配置模板 /etc/default/grub 是用户最常修改的文件,它包含全局启动参数,如默认启动项、超时时间、背景图片等,而 /etc/grub.d/ 目录下的脚本(如 00_header、10_linux、30_os-prober)负责生成具体的启动菜单项。
核心配置文件解析:/etc/default/grub
/etc/default/grub 是一个文本文件,采用 KEY="VALUE" 的格式定义参数,以下为常用配置项及示例:
-
GRUB_DEFAULT
指定默认启动的菜单项,可以是菜单项的索引(从 0 开始)或菜单项的名称(如 “Advanced options for Ubuntu”)。GRUB_DEFAULT=0 # 启动菜单中的第一个选项 GRUB_DEFAULT="Ubuntu, with Linux 5.15.0-88-generic" # 指定具体内核版本
-
GRUB_TIMEOUT
设置启动菜单的显示超时时间(单位:秒),设为-1表示等待用户手动选择,设为0则直接启动默认项。GRUB_TIMEOUT=10 # 显示 10 秒后启动默认项
-
GRUB_HIDDEN_TIMEOUT
在不显示菜单的情况下等待用户按键的时间(单位:秒),适用于快速启动场景。GRUB_HIDDEN_TIMEOUT=3 # 隐藏菜单,3 秒内按住 Shift 键可显示菜单
-
GRUB_CMDLINE_LINUX
为 Linux 内核传递启动参数,例如启用quiet模式、指定root分区等。
GRUB_CMDLINE_LINUX="quiet splash nomodeset" # 静默启动,禁用模式设置
-
GRUB_BACKGROUND
设置启动菜单的背景图片,支持 JPG、PNG 等格式,建议分辨率与屏幕匹配。GRUB_BACKGROUND="/path/to/wallpaper.png"
-
GRUB_THEME
通过主题文件自定义菜单样式,主题文件需放置在/boot/grub/themes/目录下。GRUB_THEME="/boot/grub/themes/custom/theme.txt"
手动添加自定义启动项
若需添加非 Linux 系统的启动项(如 Windows、其他发行版),可通过以下方式实现:
-
编辑 /etc/grub.d/40_custom
该文件用于添加自定义启动项,语法与grub.cfg一致,例如添加 Windows 启动项:menuentry "Windows 10" { insmod ntfs # 加载 NTFS 文件系统驱动 set root=(hd0,1) # 指定 Windows 分区(hd0,1 表示第一块硬盘的第二个分区) chainloader +1 # 加载引导扇区 } -
使用 os-prober 自动检测
安装os-prober工具后,运行os-prober会自动扫描其他操作系统并生成启动项,结果保存在/etc/grub.d/30_os-prober中。sudo apt install os-prober # Debian/Ubuntu sudo os-prober # 扫描其他系统 sudo update-grub # 更新配置
GRUB 配置修改后的生效方法
修改 /etc/default/grub 或自定义脚本后,需运行以下命令生成新的 grub.cfg 文件:
-
基于 Debian/Ubuntu 的系统:

sudo update-grub
-
基于 RHEL/CentOS 的系统:
sudo grub2-mkconfig -o /boot/grub2/grub.cfg
-
手动生成(适用于其他发行版):
sudo grub-mkconfig -o /boot/grub/grub.cfg
常见问题与解决方案
-
GRUB 菜单不显示
- 检查
GRUB_TIMEOUT是否为 0 或负数; - 确认 BIOS/UEFI 中是否启用启动项;
- 尝试重置 GRUB 配置:
sudo grub-install /dev/sda(/dev/sda为硬盘设备名)。
- 检查
-
启动后报错 “error: no such partition”
- 硬盘分区表发生变化时,需重新安装 GRUB:
sudo grub-install --target=x86_64-efi --efi-directory=/boot/efi --boot-directory=/boot --removable
- 硬盘分区表发生变化时,需重新安装 GRUB:
-
忘记 GRUB 密码
若配置了 GRUB 密码保护,可通过进入 Live 环境挂载系统分区,编辑/etc/grub.d/00_header删除密码哈希值后更新配置。
GRUB 的配置是 Linux 系统管理的基础技能之一,通过合理调整 /etc/default/grub 和自定义启动项,用户可以灵活控制系统的启动行为,建议在修改配置前备份原有文件,并通过 update-grub 等工具确保配置正确生效,掌握 GRUB 配置不仅能提升系统启动效率,还能在多系统共存或系统故障时提供有效的解决方案。


















