ZBLOG

GRUB 是什么

GRUB 详解:Linux 系统的引导加载程序

GRUBGRand Unified Bootloader)是 Linux 和其他类 Unix 系统中最常用的 引导加载程序(Bootloader),负责在计算机启动时加载操作系统内核并将控制权交给内核。以下是其核心要点:


1. GRUB 的作用

  • 硬件初始化后:BIOS/UEFI 完成自检后,GRUB 作为第一个被执行的软件。
  • 多系统引导:支持选择不同操作系统(如 Linux、Windows)或同一系统的多个内核版本。
  • 内核加载:读取配置文件,加载指定的 Linux 内核和 initramfs(初始内存文件系统)。
  • 传递参数:向内核传递启动参数(如 root=, quiet 等)。

2. GRUB 的版本

版本 适用固件 特点
GRUB Legacy BIOS 旧版,功能有限,已停止维护。
GRUB2 BIOS/UEFI 当前主流版本,支持模块化、脚本化、主题和多架构(如 x86_64、ARM)。

📌 现代 Linux 发行版默认使用 GRUB2


3. GRUB2 的核心组件

  • grub-install:将 GRUB 安装到磁盘的引导扇区(如 /dev/sda)。
  • /boot/grub/grub.cfg:主配置文件(通常由 update-grub/grub-mkconfig生成)。
  • 模块化设计:按需加载文件系统、加密等模块(存储在 /boot/grub/<arch>/)。

4. GRUB2 启动流程

  1. Stage 1:BIOS/UEFI → MBR/GPT ESP → core.img(极小化的核心代码)。
  2. Stage 1.5*(仅 BIOS)*:加载文件系统驱动以识别 /boot
  3. Stage 2:读取 /boot/grub/grub.cfg,显示菜单并加载内核。
flowchart TB
    A[BIOS/UEFI] --> B[MBR: boot.img]
    B --> C[Core Image: core.img]
    C --> D[Stage2: /boot/grub/i386-pc/*]
    D --> E[Load Kernel vmlinuz & initramfs]

5. GRUB2 常见操作

(1)修改默认启动项

编辑 /etc/default/grub,然后更新配置:

# Ubuntu/Debian
sudo update-grub

# RHEL/CentOS
sudo grub2-mkconfig -o /boot/grub2/grub.cfg
(2)手动编辑启动参数

在 GRUB 菜单界面按 e,临时修改内核参数(如修复根文件系统错误):

linux /vmlinuz root=/dev/sda3 ro quiet splash
(3)救援模式

若系统无法启动,通过 Live CD/USB chroot后重装 GRUB:

# BIOS (MBR)
sudo grub-install --target=i386-pc /dev/sda

# UEFI (GPT)
sudo grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=ubuntu

6. UEFI vs BIOS下的区别

BIOS + MBR UEFI + GPT
GRUB安装位置 MBR + /boot/grub ESP分区 (/boot/efi)
配置文件路径 /boot/grub/grub.cfg /boot/efi/EFI/<distro>/grub.cfg
工具命令 grub-install --target=i386-pc grub-install --target=x86_64-efi

7.故障排查技巧

  • 日志查看:
    
    sudo cat /var/log/boot.log      # Systemd日志
    sudo journalctl -b              # UEFI相关日志
    
  • 重建GRUB:
    
    sudo grub-mkconfig -o /boot/grub/grub.cfg
    

✅总结

GRUB是Linux生态中不可或缺的引导工具,掌握其配置和修复方法对系统管理员至关重要。遇到启动问题时,优先检查:

  1. /etc/default/grub
  2. /boot分区是否正常挂载
  3. UEFI是否关闭Secure Boot


    内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=23923

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?