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系统中根目录的名称是什么?如何理解它在系统中的作用?

    Linux系统中,根目录的名称是“/”,它是整个文件系统的起点和核心,所有文件、目录和设备都通过层级结构挂载或存储在根目录之下,作为Linux文件系统层级结构(FHS)的最顶层目录,根目录没有父目录,所有路径的绝对路径都以“/”开头,/home/user”表示从根目录依次进入home目录和user目录,“/”作……

    2025年8月24日
    5800
  • Linux启动服务后如何查看并管理对应进程号?

    在Linux系统中,服务通常指在后台持续运行、无需用户交互的程序,而进程号(PID,Process ID)是操作系统为每个进程分配的唯一标识符,用于管理进程的生命周期(如终止、监控等),启动服务并获取其PID是系统管理和运维的基础操作,本文将详细介绍通过不同方式启动服务及对应PID的获取方法,通过systemd……

    2025年9月22日
    3900
  • linux如何进入系统安装

    启动盘,重启电脑选择从启动盘启动,进入安装界面后按提示操作,如

    2025年8月18日
    6400
  • Linux打包文件如何备份传输?

    Linux打包整合文件/目录为单个归档,便于传输存储,常用tar工具配合压缩命令(如gzip/bzip2),需注意路径、权限及保留原始属性。

    2025年7月21日
    7600
  • 如何在linux部署代码

    Linux 部署代码可先配置好环境,如安装依赖软件等,再通过版本控制

    2025年8月13日
    4900

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信