# 说明
bootloader 是计算机启动时运行的第一个软件程序,它负责加载并将控制权转移到操作系统内核,然后内核初始化操作系统的其余部分。
# 什么是 GRUB
GNU GRUB 是一个非常强大的 bootloader(引导加载程序),它可以加载各种各样的开源操作系统,以及链式加载专有操作系统(如:windows)
GRUB 旨在解决引导个人计算机的复杂性。GRUB 的重要特性之一是灵活性,GRUB 了解文件系统和内核可执行格式,因此可以按照自己喜欢的方式加载任意操作系统,而无需记录内核在磁盘上的物理位置; 只需指定内核的文件名以及内核所在的驱动器和分区即可加载内核。
使用 GRUB 引导时,可以使用命令行界面或菜单界面的方式:
- 使用命令行界面,可以手动键入内核的驱动器规格和文件名。
- 选择菜单界面,可以使用箭头键选择一个操作系统。
- 该菜单基于预先准备的配置文件。
- 在菜单中,可以切换到命令行模式,反之亦然。
# GRUB2 和 GRUB 的异同
GRUB2 是对 GRUB 的重写,它与以前的版本(现在称为 GRUB Legacy)的部分不同点如下:
GRUB2配置文件不同,使用grub.cfg而不是GRUB的menu.lst (grub.conf的软链接)或grub.confGRUB2设备名称中的分区号现在从1开始,而不是0。GRUB2增添了许多语法,更接近于脚本语言,支持变量、条件判断、循环等。GRUB2使用img文件,不再使用GRUB中的stage1、stage1.5和stage2。
更详细的内容可以查看:Differences from previous versions
# GRUB2 使用
# GRUB2 的命名约定
| |
更详细的内容可以查看:Naming convention
# 如何引导操作系统
GRUB 有两种不同的引导方法。 一个是直接加载操作系统,另一种是链式加载另一个引导加载程序,然后再加载操作系统。
一般使用第一种方式,因为不需要安装或维护其他引导加载程序,而且 GRUB 足够灵活,可以从任意磁盘/分区加载操作系统,能够满足绝大部分场景。
有时需要后者,因为 GRUB 本身并不支持所有现有的操作系统。
直接引导(direct-load):直接通过默认的grub2 boot loader来引导写在默认配置文件中的操作系统。链式引导(chain-load):使用默认grub2 boot loader链式引导另一个bootloader,该bootloader将引导对应的操作系统。
更详细的内容可以查看:How to boot operating systems
GRUB2 配置文件GRUB2 的配置文件(该文件包含菜单信息):
- 传统的基于
BIOS的机器:/boot/grub2/grub.cfg文件 UEFI机器:/boot/efi/EFI/redhat/grub.cfg文件
GRUB2 的配置文件 grub.cfg 是在系统安装期间,或通过调用 /usr/sbin/grub2-mkconfig 实用程序生成的,并且在每次安装新内核时由 grubby 自动更新。
grubby命令的使用可查看:grubby命令的使用
当使用 grub2-mkconfig 手动重新生成时,该文件是根据位于 /etc/grub.d/ 中的模板文件和 /etc/default/grub 文件中的自定义设置生成的。每次使用 grub2-mkconfig 重新生成文件时,对 grub.cfg 的编辑都将丢失,因此要特别注意管控对 /etc/default/grub 的任何更改。
GRUB2 配置文件的修改
对于 grub.cfg 的正常操作,例如删除和添加新内核,应该使用 grubby 工具完成,对于脚本,使用 new-kernel-pkg 工具。
# 其他
# 参考内容
本文内容参考自: