Linux如何配置GRUB引导菜单及启动参数?

Linux系统中,GRUB(Grand Unified Bootloader)是广泛使用的引导加载程序,负责在系统启动时加载内核和初始化内存盘(initrd),并允许用户选择启动的操作系统或启动模式,正确配置GRUB对于系统启动的稳定性和灵活性至关重要,以下将详细介绍Linux环境下GRUB的配置步骤和注意事项。

linux如何配置grub

GRUB配置基础

GRUB的配置主要涉及核心配置文件grub.cfg,该文件通常位于/boot/grub//boot/grub2/目录下(不同发行版路径可能略有差异),直接手动编辑grub.cfg虽然可行,但容易因语法错误导致启动失败,推荐通过grub-mkconfig工具自动生成配置文件,再手动调整特定参数。

配置步骤详解

备份原始配置文件

修改前务必备份原始grub.cfg,避免配置错误导致无法启动。

sudo cp /boot/grub/grub.cfg /boot/grub/grub.cfg.bak

生成基础配置文件

使用grub-mkconfig工具扫描系统中的内核和启动项,生成新的grub.cfg,不同发行版的命令略有不同:

  • Ubuntu/Debiansudo update-grub(内部调用grub-mkconfig -o /boot/grub/grub.cfg
  • CentOS/RHELsudo grub2-mkconfig -o /boot/grub2/grub.cfg
  • Arch Linuxsudo grub-mkconfig -o /boot/grub/grub.cfg

该命令会自动检测已安装的Linux内核、Windows等其他操作系统,并生成对应的启动菜单项。

手动调整核心参数

自动生成的配置可能需要个性化调整,可通过编辑/etc/default/grub文件实现(此文件是grub-mkconfig的配置源,修改后需重新运行grub-mkconfig生效),常见参数包括:

linux如何配置grub

  • GRUB_DEFAULT:设置默认启动项,可设为0(第一个菜单项)、saved(上次选择的项)或具体菜单项名称(如”Ubuntu, Linux 5.15.0-52-generic”)。
  • GRUB_TIMEOUT:菜单显示超时时间(秒),设为-1表示等待用户手动选择,0则直接启动默认项。
  • GRUB_CMDLINE_LINUX_DEFAULT:默认内核启动参数,如quiet splash(简化启动信息)、nomodeset(禁用显卡驱动,解决黑屏问题)等。
  • GRUB_DISABLE_OS_PROBER:是否禁用自动检测其他操作系统,设为true时仅显示Linux内核项。

示例:编辑/etc/default/grub,修改默认启动项和超时时间:

sudo nano /etc/default/grub
# 修改以下两行
GRUB_DEFAULT=saved
GRUB_TIMEOUT=10
GRUB_CMDLINE_LINUX_DEFAULT="quiet nomodeset"

保存后执行sudo update-grub(或对应发行版的命令)使配置生效。

添加自定义启动项

若需添加非自动检测的启动项(如救援模式、其他内核版本或操作系统),可直接在grub.cfg中添加menuentry块,添加一个救援模式启动项:

sudo nano /boot/grub/grub.cfg
# 在文件末尾添加以下内容
menuentry "Rescue Mode" {
    insmod ext2
    set root='(hd0,msdos1)'  # 根据实际分区调整,如/dev/sda1
    linux /boot/vmlinuz-5.15.0-52-generic rescue
    initrd /boot/initrd.img-5.15.0-52-generic
}

注意:root参数需指向/boot分区所在的设备(可通过lsblkfdisk -l查看分区信息),linuxinitrd路径需与实际文件一致。

安装GRUB到引导设备

配置完成后,需将GRUB安装到硬盘的引导记录(MBR或GPT分区表),确保下次启动时能正确加载,命令格式为grub-install [设备]

linux如何配置grub

# 安装到/dev/sda(第一块硬盘)
sudo grub-install /dev/sda

若使用UEFI启动,需指定ESP分区(如/dev/sda2),并添加--target=x86_64-efi参数:

sudo grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=GRUB

不同发行版GRUB配置差异

发行版 配置文件路径 生成配置命令 安装命令
Ubuntu/Debian /boot/grub/grub.cfg sudo update-grub sudo grub-install /dev/sda
CentOS/RHEL /boot/grub2/grub.cfg sudo grub2-mkconfig -o /boot/grub2/grub.cfg sudo grub2-install /dev/sda
Arch Linux /boot/grub/grub.cfg sudo grub-mkconfig -o /boot/grub/grub.cfg sudo grub-install /dev/sda

常见问题处理

若配置后无法启动,可通过Live CD/USB进入系统,挂载原分区后重新执行grub-installgrub-mkconfig修复,使用Ubuntu Live USB:

  1. 挂载根分区:sudo mount /dev/sda1 /mnt(假设在/dev/sda1)
  2. 挂载/boot分区(若独立):sudo mount /dev/sda2 /mnt/boot
  3. chroot到系统:sudo chroot /mnt
  4. 重新安装GRUB:grub-install /dev/sda
  5. 生成配置:update-grub

FAQs

Q1:修改GRUB配置后启动菜单未更新,怎么办?
A1:需手动运行grub-mkconfig(或对应发行版的命令,如update-grub)重新生成grub.cfg文件,若仅修改/etc/default/grub,未执行此步骤,配置不会生效。

Q2:如何恢复GRUB为默认配置?
A2:首先备份当前配置,然后删除/boot/grub/grub.cfg(或/boot/grub2/grub.cfg),重新运行grub-mkconfig生成默认配置;或直接恢复备份的grub.cfg.bak文件,再执行grub-install安装。

原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/34964.html

(0)
酷番叔酷番叔
上一篇 2025年10月3日 09:22
下一篇 2025年10月3日 09:51

相关推荐

  • Linux系统下如何连接WiFi网络?

    在Linux系统中连接WiFi根据使用场景和发行版的不同,有多种方式,包括图形界面操作、命令行工具(如nmcli)以及手动配置文件编辑等,下面将详细介绍这些方法,帮助不同用户选择适合自己的连接方式,图形界面连接(适合桌面用户)大多数Linux发行版(如Ubuntu、Mint、Fedora等)默认提供图形化网络管……

    2025年9月8日
    7600
  • 如何移出linux yonghu

    Linux 中,可使用 userdel yonghu(若需同时删除主目录等用 userdel -r yonghu)来移出

    2025年8月18日
    7800
  • Linux SVN如何使用?

    在Linux系统中使用SVN(Subversion)进行版本控制,需要从安装配置、仓库管理到客户端操作逐步掌握,以下将详细介绍SVN在Linux环境下的完整使用流程,包括安装、仓库创建、客户端基本操作、分支管理及高级功能等内容,安装SVN服务端和客户端SVN分为服务端(仓库管理)和客户端(用户操作),Linux……

    2025年8月25日
    7300
  • linux 如何生成so文件

    Linux中,使用gcc编译C/C++代码并生成共享库(.

    2025年8月16日
    7900
  • 在Linux操作系统中,如何查看已安装的GCC编译器的具体版本信息呢?

    在Linux系统中,GCC(GNU Compiler Collection)是广泛使用的编译器套件,用于将C、C++、Objective-C等源代码编译为可执行文件,查看GCC版本是开发过程中常见的需求,无论是确认编译器兼容性、调试代码还是满足项目依赖,都需要准确掌握当前系统安装的GCC版本,本文将详细介绍多种……

    2025年9月22日
    7300

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信