服务器测评网
我们一直在努力

Linux GRUB配置如何修改启动项和修复引导故障?

Linux GRUB 配置详解

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

Linux 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_header10_linux30_os-prober)负责生成具体的启动菜单项。

核心配置文件解析:/etc/default/grub

/etc/default/grub 是一个文本文件,采用 KEY="VALUE" 的格式定义参数,以下为常用配置项及示例:

  1. GRUB_DEFAULT
    指定默认启动的菜单项,可以是菜单项的索引(从 0 开始)或菜单项的名称(如 “Advanced options for Ubuntu”)。

    GRUB_DEFAULT=0          # 启动菜单中的第一个选项  
    GRUB_DEFAULT="Ubuntu, with Linux 5.15.0-88-generic"  # 指定具体内核版本  
  2. GRUB_TIMEOUT
    设置启动菜单的显示超时时间(单位:秒),设为 -1 表示等待用户手动选择,设为 0 则直接启动默认项。

    GRUB_TIMEOUT=10         # 显示 10 秒后启动默认项  
  3. GRUB_HIDDEN_TIMEOUT
    在不显示菜单的情况下等待用户按键的时间(单位:秒),适用于快速启动场景。

    GRUB_HIDDEN_TIMEOUT=3   # 隐藏菜单,3 秒内按住 Shift 键可显示菜单  
  4. GRUB_CMDLINE_LINUX
    为 Linux 内核传递启动参数,例如启用 quiet 模式、指定 root 分区等。

    Linux GRUB配置如何修改启动项和修复引导故障?

    GRUB_CMDLINE_LINUX="quiet splash nomodeset"  # 静默启动,禁用模式设置  
  5. GRUB_BACKGROUND
    设置启动菜单的背景图片,支持 JPG、PNG 等格式,建议分辨率与屏幕匹配。

    GRUB_BACKGROUND="/path/to/wallpaper.png"  
  6. GRUB_THEME
    通过主题文件自定义菜单样式,主题文件需放置在 /boot/grub/themes/ 目录下。

    GRUB_THEME="/boot/grub/themes/custom/theme.txt"  

手动添加自定义启动项

若需添加非 Linux 系统的启动项(如 Windows、其他发行版),可通过以下方式实现:

  1. 编辑 /etc/grub.d/40_custom
    该文件用于添加自定义启动项,语法与 grub.cfg 一致,例如添加 Windows 启动项:

    menuentry "Windows 10" {  
        insmod ntfs           # 加载 NTFS 文件系统驱动  
        set root=(hd0,1)      # 指定 Windows 分区(hd0,1 表示第一块硬盘的第二个分区)  
        chainloader +1        # 加载引导扇区  
    }  
  2. 使用 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 的系统

    Linux GRUB配置如何修改启动项和修复引导故障?

    sudo update-grub  
  • 基于 RHEL/CentOS 的系统

    sudo grub2-mkconfig -o /boot/grub2/grub.cfg  
  • 手动生成(适用于其他发行版)

    sudo grub-mkconfig -o /boot/grub/grub.cfg  

常见问题与解决方案

  1. GRUB 菜单不显示

    • 检查 GRUB_TIMEOUT 是否为 0 或负数;
    • 确认 BIOS/UEFI 中是否启用启动项;
    • 尝试重置 GRUB 配置:sudo grub-install /dev/sda/dev/sda 为硬盘设备名)。
  2. 启动后报错 “error: no such partition”

    • 硬盘分区表发生变化时,需重新安装 GRUB:
      sudo grub-install --target=x86_64-efi --efi-directory=/boot/efi --boot-directory=/boot --removable  
  3. 忘记 GRUB 密码
    若配置了 GRUB 密码保护,可通过进入 Live 环境挂载系统分区,编辑 /etc/grub.d/00_header 删除密码哈希值后更新配置。

GRUB 的配置是 Linux 系统管理的基础技能之一,通过合理调整 /etc/default/grub 和自定义启动项,用户可以灵活控制系统的启动行为,建议在修改配置前备份原有文件,并通过 update-grub 等工具确保配置正确生效,掌握 GRUB 配置不仅能提升系统启动效率,还能在多系统共存或系统故障时提供有效的解决方案。

赞(0)
未经允许不得转载:好主机测评网 » Linux GRUB配置如何修改启动项和修复引导故障?