引导程序 - Grub实践(一)
GRUB 认识
Grub的主要功能是提供选择菜单,加载内核以及转移控制权,但是,mbr中仅有446字节的容量有限,是不能实现太多功能的,所以,grub在CentOS上主要分为三个步骤执行,stage1,stage1.5和stage2,突破了传统446字节的限制。
GRUB1
- Stage1的作用是启动安装在MBR中的bootloader主程序,其作用是指向stage2,引导stage2运行;
- Stage1.5作用为让grub程序能够识别grub2所在的分区。在/boot/grub目录下有诸多以stage1_5结尾的文件,表示各种文件系统所对应的stage1_5,和stage1文件一样,能够让grub识别stage2所在分区的文件,是在系统安装时,已确定的stage2所在目录的文件系统格式,并将与之对应的以stage1_5结尾的文件安装至MBR之后的62个扇区内。
- Stage2作用:a、提供菜单、并提供交互式接口;b、加载用户选择的内核或操作系统,并允许传递参数给内核;3、提供菜单保护机制,这三项功能在后续的实验中将得以体现
GRUB2
差异表现在:
- 配置储存在不同的文件中。
- 支持更多的文件系统(例如 Btrfs)。
- 可以直接读取 LVM 或 RAID 设备上储存的文件。
- 用户界面可翻译,并可以改变主题。
- 包含一个用于装载模块的机制,以支持更多功能,例如文件系统等。
- 自动搜索和生成其他内核与操作系统(例如 Windows)的引导项。
- 包含一个类似于 Bash 的精简控制台
配置文件结构
GRUB 2 的配置基于以下文件: /boot/grub2/grub.cfg
此文件包含 GRUB 2 菜单项的配置。它替代了 GRUB Legacy 中的menu.lst
。grub.cfg
由grub2-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