龙空技术网

启动流程3-BootLoader与Grub2

我是老菜鸟 215

前言:

当前看官们对“centos7grub2win7”可能比较关注,同学们都需要知道一些“centos7grub2win7”的相关知识。那么小编也在网络上网罗了一些对于“centos7grub2win7””的相关知识,希望各位老铁们能喜欢,咱们快快来学习一下吧!

知识点

BootLoader的两个阶段

Grub与LILO

Grub2的优点

Grub2的配置文件

课程目标

能够了解BootLoader的两个阶段

能够说出Grub2的优点

能够知道Grub2有哪些配置文件

###

9.2 Boot Loader与GRUB2

前面的课程我们了解的CentOS8的启动流程,在这个流程中有一个叫启动加载器,也就是boot loader的工具,如果没有这个boot loader就无法加载内核。在CentOS8中使用的是启动加载器是Grub2,在了解Grub2之前,我们先聊一下boot loader

9.2.1 Boot Loader的两个阶段

我们知道在BIOS或者UEFI加载完成之后,会到MBR中读取boot loader,这个boot loader可以让用户选择加载的内核并且移交系统的控制权限等,而加载内核只能通过boot loader,但是boot loader在MBR中,这个MBR是硬盘的第一个扇区,一个扇区的大小是512字节,boot loader的大小只有446字节,即便是GPT磁盘也没有足够的空间存储boot loader所包含的内容,所以为了避免空间的限制,导致无法引导系统正常启动的问题,Linux将boot loader的工作过程分为了两步。

stage1 执行boot loader的主程序

主程序必须安装在MBR或者是启动扇区,由于空间限制,MBR或启动扇区仅存放最小化的boot loader,并不会存放相关的配置文件

stage2 通过主程序加载配置文件

通过boot loader的主程序加载所有相关的配置文件,这些配置文件中包括定义文件系统类型的和CentOS8中的grub.cfg文件,而这些文件通常都存放在/boot当中

[root@localhost ~]# ll -F /boot/grub2/总用量 32-rw-r--r--. 1 root root    64 12月 13 21:50 device.mapdrwxr-xr-x. 2 root root  4096 12月 13 21:50 fonts/-rw-r--r--. 1 root root  5032 12月 13 21:50 grub.cfg-rw-r--r--. 1 root root  1024 12月 13 21:50 grubenvdrwxr-xr-x. 2 root root 12288 12月 13 21:50 i386-pc/device.map      设备对应文件,用来帮助系统判断磁盘与设备文件的对应关系fonts                   开机过程中用到的字体文件grub.cfg            grub2的主配置文件grubenv             grub环境区块文件大小为1K,用来记录GRUB环境变量i386-PC             针对x86架构的电脑所需要的相关模块,包括电源管理支持,文件系统支持等模块

在这些文件中最重要的就是grub.cfg文件,以及文件系统支持的相关模块

9.2.2 GRUB2

GRUB与LILO

目前为止,linux下的启动加载器有两种,一种是LILO另外一种就是GRUB,由于GRUB的功能更强大,支持的文件系统较多,所以越来越多的操作系统使用GRUB做为boot loader,CentOS从7开始使用了功能更为强大的GRUB2

GRUB2的优点

支持更多的文件系统

开机时可以手动调整启动参数

动态更新配置文件,修改完配置文件后不需要重新安装

GRUB2与硬盘

由于grub2的主要任务是从硬盘当中加载内核,所以grub2必须要识别硬盘,但是grub2识别硬盘的方式与linux系统识别的方式还是有些区别的。在Linux系统中,硬盘一般会被识别为类似sda1这种形式,而在grub2中硬盘会统一被识别为hd的设备,排序方式全部是用数字进行排序,而不是用字母加数字的混合形式。这么做的目的是为了定义grub2的查找内核时的顺序。如:

hd0,1               搜索第一块硬盘的第一个分区hd0,msdos1  搜索第一块MBR硬盘的第一个分区hd0,gpt1        搜索第一块GPT磁盘的第一个分区简单来说,两个数字,第一个数字表示硬盘序号,第二个数字表示分区序号

grub2配置文件

了解了grub2中的硬盘识别方式,我们就可以了解一下grub2的配置文件了,这个文件建议各位不要随意更改

## DO NOT EDIT THIS FILE## It is automatically generated by grub2-mkconfig using templates# from /etc/grub.d and settings from /etc/default/grub#此部分内容提示我们不要编辑这个文件,此文件是由grub2-mkconfig命令自动建立的,相关模板与设置存放在/etc/grub.d/目录以及/etc/default/grub中,也就是说grub.cfg文件的内容会调用/etc/grub.d目录下的内容,如果需要修改的话需要调整/etc/default/grub文件

基本上grub2不希望用户去修改grub.cfg这个文件,如果需要调整的话需要通过修改其它文件并配合grub2-mkconfig命令来生成新的grub.cfg文件,但是各位还是要了解一下这个文件的大致格式

9.2.3 /etc/default/grub与/etc/grub.d/

在前面的课程中我们知道了grub2的配置文件是grub.cfg,但是此文件内容比较复杂,且官方不建议我们手动修改,如果需要修改的话需要通过/etc/default/grub文件以及/etc/grub.d/目录内的内容来实现,那我们一起来看一下

/etc/default/grub

[root@localhost ~]# vim /etc/default/grubGRUB_TIMEOUT=5  定义在启动菜单默认的等待时间,单位是秒GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"       定义获取操作系统名称的方式GRUB_DEFAULT=saved  定义开机时默认启动的项目,可以是数字,也可以是标题名称,(这个标题就是开机时看到的那个标题),还可以是saved(表示默认启动上次启动成功的操作系统) GRUB_DISABLE_SUBMENU=true   是否隐藏子菜单GRUB_TERMINAL_OUTPUT="console"  定义启动时的界面使用哪种终端输出,值包含console,serial,gfxterm,vga_text等GRUB_CMDLINE_LINUX="resume=/dev/mapper/cl-swap rd.lvm.lv=cl/root rd.lvm.lv=cl/swap rhgb quiet"  定义额外的启动参数GRUB_DISABLE_RECOVERY="true"    是否启用修复模式GRUB_ENABLE_BLSCFG=true 是否启用bootloader规范修改完成之后需要使用grub2-mkconfig -o /boot/grub2/grub.cfg,重新生成配置文件

/etc/grub.d/

00_header 设置默认参数

00_tuned 额外调整的值

01_menu_auto_hide 与菜单隐藏相关的设置

01_users 与用户相关的设置

10_linux 与内核相关的设置

20_ppc_terminfo 与终端相关的设置

20_linux_xen 与虚拟化相关的设置

30_os-prober 与操作系统检测相关

30_uefi-firmware 与UEFI启动设置相关,需要硬件支持

40_custom&41_custom 自定义设置

注:这些文件会按照数字的顺序由小到大加载

总结

BootLoader的作用

引导系统启动,stage1加载主程序,stage2通过主程序加载配置文件

GRUB2的优点

支持更多的文件系统,可以手动调整启动参数,动态更新配置文件

在GRUB2中如何识别硬盘,及相关的配置文件和命令

grub.cfg /etc/default/grub /etc/grub.d/

grub2-mkconfig

重点:BootLoader的作用及相关文件

难点:/etc/default/grub文件的设置,及设置后如何生成新的配置文件

标签: #centos7grub2win7