在 Linux 系统中,GRUB(GRand Unified Bootloader)是最常用的启动加载器之一。它负责在计算机启动时管理多个操作系统的引导过程。本文将详细介绍 GRUB 配置中的三个关键文件:/etc/default/grub
、grub2.cfg
,以及 /etc/grub.d/
目录,帮助大家理解它们的功能、如何互动,以及如何安全地进行修改。
1. /etc/default/grub
:GRUB 的默认配置文件
/etc/default/grub
文件是 GRUB 的主要配置文件,提供了一种简便的方式来管理启动参数。这个文件包含了一系列变量定义,这些变量会影响 GRUB 的行为,例如:
GRUB_DEFAULT
:设置默认的启动项,可以是具体的菜单项索引(从 0 开始计数),或者是“saved”(使用最后一次成功启动的菜单项)。GRUB_TIMEOUT
:设置菜单显示的等待时间(以秒为单位)。GRUB_CMDLINE_LINUX_DEFAULT
:在这里添加的参数将被传递到 Linux 内核,通常用于设定系统的静默启动和图形引导界面。GRUB_CMDLINE_LINUX
:这里的参数会在每次启动时传递给内核,通常用于需要永久生效的内核参数,如 intel_iommu=on
。 对此文件的更改需要运行 update-grub
(在基于 Debian 的系统上)或 grub2-mkconfig
(在基于 Red Hat 的系统上),以生成新的 GRUB 配置文件。
2. grub2.cfg
:GRUB 的配置脚本
位于 /boot/grub/
或 /boot/efi/EFI/{distro}/
(对于 EFI 系统)目录下的 grub2.cfg
是 GRUB 的核心配置文件,由 grub2-mkconfig
工具自动生成,不应手动编辑。这个文件包含了启动加载的菜单项、加载的模块等详细信息。grub2.cfg
通过读取 /etc/default/grub
和 /etc/grub.d/
中的脚本来生成,确保了启动配置的准确性和更新的简便性。
3. /etc/grub.d/
:GRUB 配置脚本目录
/etc/grub.d/
目录包含一系列脚本,这些脚本负责生成 grub2.cfg
文件中的具体菜单项和其他配置。这些脚本包括:
00_header
:生成 GRUB 菜单的头部信息,如默认启动项和计时设置。10_linux
:探测系统中安装的 Linux 内核,并为每个内核创建菜单项。30_os-prober
:探测系统中存在的其他操作系统(如 Windows),并为它们创建启动项。40_custom
和 41_custom
:这些脚本可以手动编辑,添加自定义的启动项。 对 /etc/grub.d/
中的脚本进行修改后,也需要重新生成 grub2.cfg
文件,以确保变更生效。
修改 GRUB 配置的建议
备份重要文件:在进行任何修改之前,备份/etc/default/grub
和 /etc/grub.d/
目录下的文件。使用官方工具:使用 update-grub
或 grub2-mkconfig
来更新 GRUB 配置,避免直接编辑 grub2.cfg
文件。测试新配置:在正式环境中应用更改前,可以在测试机或虚拟机中测试新的 GRUB 配置,以避免启动问题。通过了解这些文件及其相互作用,我们可以更有效地管理 Linux 系统的启动过程,确保系统的高可用性和安全性。