问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

GRUB引导加载器:双系统启动管理神器

创作时间:
作者:
@小白创作中心

GRUB引导加载器:双系统启动管理神器

引用
CSDN
12
来源
1.
https://blog.csdn.net/weixin_48885322/article/details/139591817
2.
https://blog.csdn.net/yolo2016/article/details/123609829
3.
https://www.oryoy.com/news/ru-he-zai-ubuntu-xi-tong-zhong-shou-dong-an-zhuang-he-pei-zhi-grub2-yin-dao-jia-zai-qi.html
4.
https://www.cnblogs.com/rebrobot/p/18525360
5.
http://ba1100n.tech/iot_basic/%E6%B5%85%E6%9E%90linux%E7%B3%BB%E7%BB%9F%E5%8A%A0%E8%BD%BD%EF%BC%9A%E4%BB%8Ecpu%E5%8A%A0%E7%94%B5%E5%88%B0%E7%94%A8%E6%88%B7%E6%80%81%EF%BC%8C%E8%AE%B2%E8%AE%B2bios%E3%80%81uefi%E3%80%81mbr%E5%BC%95/
6.
https://www.oryoy.com/news/ubuntu-an-zhuang-grub-qing-song-yin-dao-shuang-xi-tong-yi-bu-dao-wei-jiao-cheng-jie-mi.html
7.
https://www.oryoy.com/news/centos-7-xia-qing-song-an-zhuang-grub2-tu-wen-bing-mao-de-wan-zheng-jiao-cheng-gong-lve.html
8.
http://www.360doc.com/content/24/0206/15/30314865_1113470435.shtml
9.
https://docs.oldtimes.me/c.biancheng.net/view/1032.html
10.
https://my.oschina.net/emacs_8812563/blog/17322211
11.
https://www.cnblogs.com/lh03061238/p/18461285
12.
https://www.cnblogs.com/worktile/articles/18486652

在计算机启动过程中,引导加载器(Bootloader)扮演着至关重要的角色。它负责在硬件加电后加载操作系统内核,并将控制权传递给内核,从而启动整个操作系统。在众多引导加载器中,GRUB(GRand Unified Bootloader)以其强大的功能和广泛的适用性,成为Linux系统中最常用的引导加载器之一。本文将详细介绍GRUB的基本概念、安装过程、配置文件结构及其高级功能,帮助读者更好地理解和使用这一强大的工具。

01

GRUB的基本概念

GRUB是GRand Unified Bootloader的缩写,最初由Erich Stefan Boleyn开发,后来成为GNU项目的一部分。它最早出现在1995年,最初是为了支持多操作系统引导而设计的。GRUB的设计目标是提供一个统一的引导解决方案,能够支持多种操作系统和文件系统。

GRUB的主要功能包括:

  • 提供启动菜单,允许用户选择要启动的操作系统或内核版本
  • 加载用户选定的内核到内存中,并解压展开
  • 将系统控制权移交给内核
  • 支持交互式命令行界面,方便系统维护和故障排除

GRUB的引导过程分为三个阶段:

  1. stage1:位于主引导记录(MBR)或EFI系统分区(ESP)中,负责加载stage1.5
  2. stage1.5:位于MBR后的扇区中,能够识别文件系统格式并加载stage2
  3. stage2:包含完整的GRUB功能,读取配置文件并实现引导功能的扩展
02

GRUB的安装过程

GRUB的安装过程相对复杂,但通过以下步骤可以顺利完成:

  1. 挂载根文件系统
    假设根分区是/dev/sda1,执行以下命令:

    sudo mount /dev/sda1 /mnt
    
  2. 挂载其他必要的文件系统
    如果使用独立的/boot分区或其他特殊分区,需要将它们挂载到相应的目录下:

    sudo mount /dev/sda2 /mnt/boot
    sudo mount --bind /dev /mnt/dev
    sudo mount --bind /proc /mnt/proc
    sudo mount --bind /sys /mnt/sys
    
  3. 切换到挂载的文件系统
    使用chroot命令切换到挂载的文件系统环境:

    sudo chroot /mnt
    
  4. 安装GRUB
    对于传统的BIOS系统:

    sudo grub-install /dev/sda
    

    对于EFI系统:

    sudo grub-install --efi-directory=/boot/efi /dev/sda
    
  5. 更新GRUB配置
    安装完成后,需要更新GRUB配置:

    sudo update-grub
    
03

GRUB的配置文件结构

GRUB的配置主要通过两个文件实现:

  • /etc/default/grub:用户可编辑的配置文件,包含全局设置和默认选项
  • /boot/grub/grub.cfg:实际的启动配置文件,由update-grub命令生成,不建议手动编辑

/etc/default/grub配置参数说明:

  • GRUB_DEFAULT:设置默认启动的菜单项,例如GRUB_DEFAULT=0表示默认启动第一个菜单项
  • GRUB_TIMEOUT:设置GRUB菜单显示的时间(秒),如果设为0,GRUB菜单不会显示
  • GRUB_TIMEOUT_STYLE:定义GRUB菜单显示的样式,可选值包括menucountdownhidden
  • GRUB_DISTRIBUTOR:定义GRUB菜单中显示的发行版名称
  • GRUB_CMDLINE_LINUX_DEFAULT:定义传递给Linux内核的默认命令行参数
  • GRUB_CMDLINE_LINUX:定义传递给Linux内核的额外命令行参数

/boot/grub/grub.cfg内容结构:

这个文件包含了具体的启动条目和启动指令,由update-grub命令根据/etc/default/grub和/etc/grub.d/目录中的脚本自动生成。通常情况下,用户不需要直接编辑这个文件。

04

GRUB的高级功能

GRUB提供了丰富的高级功能,使其在多系统环境中具有极大的灵活性:

  1. 多系统引导
    GRUB可以轻松管理多个操作系统的启动,通过配置文件设置默认启动系统和等待时间:

    GRUB_DEFAULT=saved
    GRUB_SAVEDEFAULT=true
    GRUB_TIMEOUT=5
    
  2. 交互式命令行
    GRUB提供了强大的命令行界面,用户可以在启动时输入命令进行系统维护或故障排除。常用的命令包括:

    • ls:列出设备和分区
    • cat:查看文件内容
    • set:设置变量
    • boot:启动系统
  3. 隐藏菜单和密码保护
    为了增强安全性,GRUB支持隐藏启动菜单和设置密码:

    GRUB_HIDDEN_TIMEOUT=5
    GRUB_PASSWORD="your_password"
    
05

GRUB与其他引导加载器的比较

与其他引导加载器相比,GRUB具有显著的优势:

  • 兼容性:支持多种操作系统和文件系统,包括Linux、Windows、BSD等
  • 可配置性:提供丰富的配置选项,满足不同用户需求
  • 交互性:内置命令行界面,便于系统维护
  • 扩展性:支持动态加载内核模块,适应不同硬件环境

与传统的LILO(Linux Loader)相比,GRUB提供了更友好的用户界面和更灵活的配置选项。与Windows的ntloader相比,GRUB具有更好的跨平台兼容性和可定制性。

06

总结

GRUB作为一款功能强大的引导加载器,不仅能够满足基本的系统启动需求,还提供了丰富的高级功能,使其在多系统环境中具有极大的灵活性。无论是Linux用户还是需要在多系统间切换的用户,掌握GRUB的使用都能极大地提升工作效率和系统管理能力。希望本文能帮助读者更好地理解和使用GRUB,轻松应对各种复杂的启动场景。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号