GRUB2

GRUB2 是一种 Linux 引导器,并且目前是 LoongArch Slackware 的默认引导器。

UEFI (Unified Extensible Firmware Interface) 固件只支持 GPT (GUID Partition Table) 分区,所以在安装系统分区时需要把磁盘分区格式设置为 GPT 格式。

GRUB2 的grub.cfg

grub.cfg 的功能简单来讲可以分为两部分:启动界面的设置、启动项的配置。下面介绍下通过修改哪些配置文件,来进行定制 grub.cfg:

  • 启动界面的设置:/etc/default/grub 是 grub 全局配置文件,文件中定义了 grub 的全局宏,主要包含了启动界面的设置,比如默认启动项的设置、等待用户选择启动项时间设置、加载的字体等。

  • 启动项的配置:/etc/grub.d/ 目录下是 grub 的配置脚本,在定制系统启动时可以修改全局配置文件和配置脚本。

可以使用 grub-mkconfig 生成 grub2 配置文件 grub.cfg,执行:

    grub-mkconfig -o /boot/grub/grub.cfg

新生成的grub.cfg里启动项大致如下:

.... many more lines ommitted ....
### BEGIN /etc/grub.d/10_linux ###
menuentry 'Slackware-15.0+ GNU/Linux' --class slackware_15_0_ --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-555b5454-296c-499b-ac88-219d17c7e5b9' {
        load_video
        insmod gzio
        insmod part_gpt
        insmod ext2
        set root='hd0,gpt2'
        if [ x$feature_platform_search_hint = xy ]; then
          search --no-floppy --fs-uuid --set=root --hint-ieee1275='ieee1275//disk@0,gpt2' --hint-bios=hd0,gpt2 --hint-efi=hd0,gpt2 --hint-baremetal=ahci0,gpt2  c15c4ceb-7c1b-4ad5-a646-217e0b575d95
        else
          search --no-floppy --fs-uuid --set=root c15c4ceb-7c1b-4ad5-a646-217e0b575d95
        fi
        echo    'Loading Linux 6.3.0 ...'
        linux   /vmlinuz-generic-6.3.0 root=UUID=555b5454-296c-499b-ac88-219d17c7e5b9 ro  
        echo    'Loading initial ramdisk ...'
        initrd  /initrd-6.3.0.img
}
.... many more lines ommitted ....

在 Slackware 里的启动条目例子里,menuentry 是显示的启动条目,下面是 GRUB2 加载的 grub 模块,linux 后面跟要启动的内核是 vmlinuz-generic-6.3.0 ,根的 UUID是 555b5454-296c-499b-ac88-219d17c7e5b9, initrd 后面跟加载的 initrd 是 initrd-6.3.0.img ,因为加载了 initrd,所以系统可以解析 UUID ,若你的系统没有 initd,那就不能使用UUID,需要指定设备号。

GRUB2 的 EFI 程序

EFI 程序存放环境设置

  • 在 GPT 分区下,创建 EFI 系统分区(ESP分区,又叫 esp 分区),文件系统格式为 VFAT 分区。

生成更新 EFI 程序

最后更新于