# 说明
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.conf
GRUB2
设备名称中的分区号现在从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
工具。
# 其他
# 参考内容
本文内容参考自: