0. 导读
在Linux操作系统中,grub.cfg是一个至关重要的配置文件,它负责控制系统的启动过程。这个文件位于/boot/grub/目录下,由GRUB2(GRand Unified Bootloader version 2)使用来引导操作系统。本文将详细讲解grub.cfg文件的作用、结构和配置方法。
1. grub.cfg文件的作用
grub.cfg是GRUB2的配置文件,它告诉GRUB2如何加载和引导不同的操作系统内核。当计算机启动时,BIOS或UEFI加载GRUB2,GRUB2再根据grub.cfg中的指令来引导内核,并将控制权交给内核,从而启动操作系统。
2. grub.cfg文件的结构
grub.cfg文件通常由多个部分组成,每个部分负责不同的功能。下面是一个典型的grub.cfg文件的结构:
# 设置默认启动项
set default=0
# 设置启动等待时间
set timeout=5
# 加载必要的模块,如支持JPEG图片的模块
insmod jpeg
# 设置终端字体
if loadfont /usr/share/grub/unicode.pf2 ; then
set gfxmode=auto
insmod gfxterm
fi
# 设置背景图片
background_image (hd0,7)/boot/images/1.jpg
# 菜单项配置
menuentry "Ubuntu, Linux 4.15.0-20-generic" {
insmod ext2
set root=(hd0,7)
search --no-floppy --fs-uuid --set=root 44c07536c0752f74
linux /boot/vmlinuz-4.15.0-20-generic root=UUID=44c07536c0752f74 ro quiet splash
initrd /boot/initrd.img-4.15.0-20-generic
}
3. 关键配置项详解
set default=0:设置默认启动的菜单项,0表示第一个菜单项。
set timeout=5:设置启动菜单的等待时间,单位为秒。如果在指定时间内没有操作,将自动启动默认菜单项。
insmod:加载模块。例如,insmod jpeg用于加载支持JPEG图片的模块。
set gfxmode=auto:设置图形终端模式,auto表示自动检测。
background_image:设置启动菜单的背景图片。
menuentry:定义一个启动菜单项,后面跟菜单项的标题。
insmod ext2:加载ext2文件系统模块。
set root=(hd0,7):设置根分区位置,(hd0,7)表示第一个硬盘的第七个分区。
search --no-floppy --fs-uuid --set=root 44c07536c0752f74:通过文件系统UUID来设置根分区。
linux /boot/vmlinuz-4.15.0-20-generic root=UUID=44c07536c0752f74 ro quiet splash:指定内核位置及启动参数。ro表示以只读方式挂载根文件系统,quiet和splash表示静默启动并显示启动画面。
initrd /boot/initrd.img-4.15.0-20-generic:指定初始化ramdisk的位置。
4. 修改和更新grub.cfg
直接修改grub.cfg文件并不是一个好主意,因为这个文件通常由update-grub命令自动生成,该命令会合并来自/etc/grub.d/目录下的多个脚本文件生成最终的grub.cfg。如果你想修改GRUB的配置,应该编辑/etc/default/grub文件,然后运行update-grub来生成新的grub.cfg文件。
例如,如果你想更改默认的启动菜单项,可以编辑/etc/default/grub文件,将GRUB_DEFAULT的值改为相应的菜单项编号,然后运行:
sudo update-grub
5. 总结
grub.cfg是Linux系统中非常重要的启动配置文件,它决定了系统如何启动以及启动哪些内核。理解并正确配置grub.cfg对于系统管理员来说是非常重要的。通过本文的介绍,你应该对grub.cfg文件有了更深入的理解,并能更好地管理和配置你的Linux系统。




