为什么需要了解GRUB引导?
在Linux系统中,GRUB(Grand Unified Bootloader)是默认的启动加载程序,负责在开机时加载操作系统内核,无论是单系统还是多系统环境,GRUB的配置直接影响系统能否正常启动,本文将从基础原理到实践操作,系统性地讲解GRUB如何引导Linux系统,并提供常见问题的解决方案。
引导流程解析
/boot/grub/grub.cfg
),根据预设参数加载指定内核(Kernel)和初始化内存盘(initramfs)。 多系统兼容性
GRUB支持检测其他操作系统(如Windows、macOS),并在启动菜单中显示选项,用户可通过方向键切换。
场景1:新装Linux系统
大多数Linux发行版(如Ubuntu、CentOS)默认自动安装GRUB,手动安装命令如下(以UEFI为例):
sudo grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=GRUB sudo update-grub # 生成配置文件
场景2:修复丢失的GRUB
若因Windows安装覆盖引导或磁盘损坏导致GRUB丢失,可通过以下步骤修复:
sudo mount /dev/sda1 /mnt # 假设根分区为sda1 sudo grub-install --root-directory=/mnt /dev/sda sudo update-grub
自定义启动参数
编辑/etc/default/grub
文件调整默认行为,
GRUB_TIMEOUT=5 # 启动菜单等待时间(秒) GRUB_CMDLINE_LINUX="quiet splash" # 内核参数(如禁用显卡驱动nouveau.modeset=0)
修改后需运行sudo update-grub
生效。
手动编辑grub.cfg(慎用)
警告:直接修改/boot/grub/grub.cfg
可能被系统更新覆盖,建议通过/etc/grub.d/
目录下的脚本自定义菜单项。
ls # 查看磁盘分区(如(hd0,gpt2)为/boot分区) set root=(hd0,gpt2) linux /vmlinuz-5.15.0-xx-generic root=/dev/sda2 initrd /initrd.img-5.15.0-xx-generic boot
sudo update-grub
。sudo add-apt-repository ppa:yannubuntu/boot-repair sudo apt update && sudo apt install boot-repair sudo boot-repair # 选择“推荐修复”
编辑/etc/default/grub
中的GRUB_DEFAULT
参数:
GRUB_DEFAULT=0
(首个菜单项) GRUB_DEFAULT="Advanced options for Ubuntu>Ubuntu, with Linux 5.15.0-xx-generic"
进入救援模式
开机时按Shift
(BIOS)或Esc
(UEFI)显示GRUB菜单,按e
编辑启动项,在linux
行末尾添加:
systemd.unit=rescue.target # 或 init=/bin/bash
按Ctrl+X
启动,进入单用户模式修复系统。
启用GRUB调试日志
编辑/etc/default/grub
并添加:
GRUB_CMDLINE_LINUX_DEFAULT="debug" GRUB_TERMINAL=console
运行sudo update-grub
后重启,日志将输出到屏幕。