引导程序 - Grub实践(一)

GRUB 认识

Grub的主要功能是提供选择菜单加载内核以及转移控制权,但是,mbr中仅有446字节的容量有限,是不能实现太多功能的,所以,grub在CentOS上主要分为三个步骤执行,stage1,stage1.5和stage2,突破了传统446字节的限制。

GRUB1

  1. Stage1的作用是启动安装在MBR中的bootloader主程序,其作用是指向stage2,引导stage2运行;
  2. Stage1.5作用为让grub程序能够识别grub2所在的分区。在/boot/grub目录下有诸多以stage1_5结尾的文件,表示各种文件系统所对应的stage1_5,和stage1文件一样,能够让grub识别stage2所在分区的文件,是在系统安装时,已确定的stage2所在目录的文件系统格式,并将与之对应的以stage1_5结尾的文件安装至MBR之后的62个扇区内。
  3. Stage2作用:a、提供菜单、并提供交互式接口;b、加载用户选择的内核或操作系统,并允许传递参数给内核;3、提供菜单保护机制,这三项功能在后续的实验中将得以体现

    GRUB2

    差异表现在:
  • 配置储存在不同的文件中。
  • 支持更多的文件系统(例如 Btrfs)。
  • 可以直接读取 LVM 或 RAID 设备上储存的文件。
  • 用户界面可翻译,并可以改变主题。
  • 包含一个用于装载模块的机制,以支持更多功能,例如文件系统等。
  • 自动搜索和生成其他内核与操作系统(例如 Windows)的引导项。
  • 包含一个类似于 Bash 的精简控制台

    配置文件结构

    GRUB 2 的配置基于以下文件:
  • /boot/grub2/grub.cfg
    此文件包含 GRUB 2 菜单项的配置。它替代了 GRUB Legacy 中的 menu.lstgrub.cfggrub2-mkconfig 命令自动生成,不应对其进行编辑。
  • /boot/grub2/custom.cfg
    此可选文件在引导时由 grub.cfg 直接检索,可用于向引导菜单添加自定义项。从 SUSE Linux Enterprise Server 开始,使用 grub-once 时也将分析这些项目。
  • /etc/default/grub
    此文件控制 GRUB 2 的用户设置,通常包含背景和主题等其他环境设置。
  • /etc/grub.d/ 下的脚本
    在执行 grub2-mkconfig 命令期间将读取此目录中的脚本。主配置文件 /boot/grub/grub.cfg 中集成了这些脚本的说明。
  • /etc/sysconfig/bootloader
    在使用 YaST 配置引导加载程序时以及每次安装新内核时会用到此配置文件。它将经过 perl 引导加载程序的评估,该程序会相应地修改引导加载程序配置文件(例如,GRUB 2 对应的配置文件 /boot/grub 2/grub.cfg)。/etc/sysconfig/bootloader 并不是特定于 GRUB 2 的配置文件,其值会应用于 SUSE Linux Enterprise Server 上安装的任何引导加载程序。
  • /boot/grub2/x86_64-efi/boot/grub2/power-ieee1275/boot/grub2/s390x
    这些配置文件包含特定于体系结构的选项。
    可以通过多种方式控制 GRUB 2。可以在图形菜单(启动屏幕)中选择现有配置的引导项。配置从文件 /boot/grub2/grub.cfg 装载,而该文件是基于其他配置文件编译的(参见下文)。所有 GRUB 2 配置文件都被视为系统文件,编辑这些配置文件需要拥有 root 特权。
    注意
    注意:激活配置更改
    手动编辑 GRUB 2 配置文件后,需要运行grub2-mkconfig 以激活更改。但使用 YaST 更改配置时就不需要如此,因为 YaST 会自动运行 grub2-mkconfig

    参考地址

  • https://documentation.suse.com/zh-cn/sles/15-GA/html/SLES-all/cha-grub2.html#vle-grub2-mkconfig