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

如何用GRUB代码引导Linux启动?

GRUB是Linux系统常用的引导加载程序,负责在启动时初始化硬件、加载内核及initramfs,其配置文件(如grub.cfg)定义启动项,支持多系统选择,可通过编辑菜单调整内核参数或进入恢复模式,使用grub-mkconfig命令可生成配置。

GRUB的核心功能与作用
GRUB分为两个主要版本:GRUB Legacy(旧版)和GRUB 2(新版),目前大多数Linux发行版默认使用GRUB 2,其核心功能包括:

  1. 多系统引导:支持同时管理Linux、Windows、macOS等操作系统。
  2. 动态配置:通过修改/boot/grub/grub.cfg配置文件(需通过脚本生成)实现灵活调整。
  3. 救援模式:提供命令行工具修复损坏的启动环境。

GRUB 2的配置文件与结构
GRUB 2的配置分为三部分:

  1. 主配置文件生成

    • 核心配置文件位于/etc/default/grub,用于定义全局参数(如默认启动项、超时时间)。
    • 自定义脚本存放在/etc/grub.d/目录,按优先级执行(例如40_custom用于添加自定义启动项)。
    • 修改配置后需运行命令生成最终的grub.cfg
      sudo update-grub   # Debian/Ubuntu系
      sudo grub2-mkconfig -o /boot/grub2/grub.cfg  # RHEL/CentOS系
  2. 关键配置参数示例

    GRUB_DEFAULT=0                 # 默认启动第1个菜单项
    GRUB_TIMEOUT=5                 # 菜单显示5秒
    GRUB_CMDLINE_LINUX="quiet splash"  # 内核启动参数

添加自定义启动项
若要为其他内核或系统添加启动项,可在/etc/grub.d/40_custom中写入以下内容:

menuentry "My Custom Kernel" {
    set root=(hd0,1)
    linux /vmlinuz-custom root=/dev/sda1
    initrd /initramfs-custom.img
}

完成后重新生成配置文件即可生效。


修复GRUB引导的常用方法
场景1:系统无法进入GRUB菜单

  • 使用Live CD/USB启动
    1. 挂载原系统根分区:
      sudo mount /dev/sda1 /mnt
      sudo mount --bind /dev /mnt/dev
      sudo chroot /mnt
    2. 重新安装GRUB:
      grub-install /dev/sda
      update-grub

场景2:GRUB配置文件错误导致启动失败

  • 在GRUB命令行界面手动引导:
    ls                  # 查看磁盘分区
    set root=(hd0,msdos1)    # 设置根分区
    linux /boot/vmlinuz root=/dev/sda1
    initrd /boot/initrd.img
    boot

高级技巧与注意事项

  1. 主题美化:通过工具如grub-customizer修改GRUB界面主题。
  2. UEFI与Legacy模式
    • UEFI系统需确保GRUB安装在EFI分区(通常为/boot/efi)。
    • 使用efibootmgr命令管理UEFI启动项。
  3. 安全启动(Secure Boot):部分系统需禁用Secure Boot或使用签名后的GRUB版本。

常见问题解答

  • Q:如何设置Windows为默认启动项?
    A:在/etc/default/grub中设置GRUB_DEFAULT="Windows 10"(需与菜单标题完全一致)。

  • Q:GRUB提示“unknown filesystem”错误?
    A:可能是分区表损坏或文件系统错误,尝试使用fsck修复分区。


引用说明

  • GRUB官方手册:https://www.gnu.org/software/grub/manual/grub/
  • Linux内核启动参数文档:https://www.kernel.org/doc/html/latest/admin-guide/kernel-parameters.html
  • Ubuntu社区Wiki:https://help.ubuntu.com/community/Grub2
    经过多发行版测试,适用于主流的Debian、RHEL及衍生系统,操作前请备份数据。)
0