当前位置:首页 > 行业动态 > 正文

GRUB如何正确引导Linux系统启动

GRUB是Linux系统的常用引导程序,启动时自动加载/boot/grub/grub.cfg配置文件,用户可通过编辑该文件或/etc/default/grub设置启动参数,执行update-grub生成新配置,支持多系统引导,可在启动菜单选择内核版本或操作系统,故障时可通过LiveCD使用grub-install命令重装引导。

GRUB如何引导Linux系统

在Linux系统中,GRUB(GRand Unified Bootloader)是最常用的启动引导程序,负责在计算机启动时加载操作系统内核,它的工作原理和配置方式是Linux用户需要掌握的核心知识之一,以下内容将详细解释GRUB如何引导Linux系统,并提供实践指导与常见问题解答。


GRUB的作用与启动流程

  1. 硬件初始化
    计算机启动时,BIOS/UEFI首先进行硬件自检(POST),随后查找可启动设备(如硬盘、U盘)。
  2. 加载GRUB
    当BIOS/UEFI找到包含GRUB的存储设备时,会执行存储在MBR(主引导记录)UEFI分区中的GRUB引导程序。
  3. 显示引导菜单
    GRUB读取配置文件(/boot/grub/grub.cfg),显示可启动的操作系统列表,用户可选择进入不同内核版本或操作系统。
  4. 加载内核与初始化内存盘
    选定Linux系统后,GRUB会将内核(vmlinuz文件)和初始化内存盘(initramfs)加载到内存,并将控制权交给内核。
  5. 启动用户空间
    内核完成硬件初始化和根文件系统挂载后,启动systemdinit进程,进入用户登录界面。

GRUB配置文件解析

GRUB的核心配置文件是/boot/grub/grub.cfg,但此文件通常不直接编辑,而是通过修改模板文件/etc/default/grub/etc/grub.d/目录下的脚本生成。

关键配置项

  • GRUB_DEFAULT:默认启动项(从0开始计数)。
  • GRUB_TIMEOUT:引导菜单等待时间(秒)。
  • GRUB_CMDLINE_LINUX:传递给内核的启动参数(如设置quiet splash隐藏启动日志)。

生成新配置文件的命令

sudo update-grub  # Debian/Ubuntu系列  
sudo grub2-mkconfig -o /boot/grub2/grub.cfg  # RHEL/CentOS/Fedora 

修复GRUB引导的常见场景

系统重装Windows后丢失GRUB

  • 使用Live USB修复
    1. 启动Linux Live USB,打开终端。
    2. 挂载原系统的根分区和/boot分区(若独立)。
    3. 执行以下命令重新安装GRUB:
      sudo grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=GRUB  # UEFI系统  
      sudo grub-install /dev/sda  # BIOS系统(sda为硬盘设备名)  
      sudo update-grub 

GRUB Rescue模式

若提示grub rescue>,可能是分区表或引导文件损坏。

  1. 通过ls命令列出可用分区(如(hd0,msdos1))。
  2. 手动定位Linux根分区和/boot分区:
    set prefix=(hd0,msdos1)/boot/grub  
    set root=(hd0,msdos1)  
    insmod normal  
    normal 
  3. 进入系统后,重新生成GRUB配置并修复安装。

优化GRUB配置的实用技巧

  1. 美化引导菜单
    • 安装主题包(如grub2-themes),修改GRUB_THEME路径。
    • 调整分辨率:在/etc/default/grub中添加GRUB_GFXMODE=1920x1080
  2. 多系统引导
    • 安装os-prober工具,自动检测Windows、macOS等其他系统。
  3. 安全启动支持

    对于UEFI系统,需启用Shim和签名内核(部分发行版默认支持)。


常见问题解答

Q:如何设置默认启动旧内核?
A:修改/etc/default/grub中的GRUB_DEFAULT为对应菜单项序号(如GRUB_DEFAULT="1>"),然后更新配置。

Q:GRUB配置文件错误导致无法启动怎么办?
A:在GRUB菜单界面按e编辑启动项,临时修复参数后进入系统,修正配置文件。

Q:UEFI和Legacy BIOS下GRUB有何区别?
A:UEFI模式下,GRUB安装到ESP(EFI系统分区),路径为/boot/efi/EFI/;Legacy BIOS则写入MBR。


引用说明

  • GNU GRUB手册:https://www.gnu.org/software/grub/manual/grub/
  • Linux内核启动流程文档:https://www.kernel.org/doc/html/latest/
  • UEFI规范:https://uefi.org/specifications

通过本文,您可全面了解GRUB在Linux系统引导中的角色与操作方法,建议在修改关键配置前备份数据,避免操作失误导致系统无法启动。

0