LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 432|回复: 0

选单建立的脚本 /etc/grub.d/*

[复制链接]
发表于 2024-1-21 23:49:26 | 显示全部楼层 |阅读模式
执行 grub2-mkconfig -o /boot/grub2/grub.cfg 后,显示信息去抓取了 linux 核心等信息,这是因为 grub2-mkconfig 去分析 /etc/grub.d/* 中的文件,然后执行该文件来建立 grub.cfg 文件。该目录下一般或存储以下文件

00_header:

主要在建立初始的显示项目,包括需要加载的模块分析、屏幕终端机的格式、倒数描述、选单是否需要隐藏等,大部分在 /etc/default/grub 里所设置的变量,大概都会在该脚本中被利用来写入 grub.cfg 中

10_linux

根据分析 /boot 下的文件,尝试找到正确的 Linux 核心与读取该核心需要的文件系统模块与参数等信息,都在该脚本运行后找到并设置到 grub.cfg 中。

因为该脚本会将所有在 /boot 下的每一个核心文件都对应到一个选单上,因此核心文件数量越多,你的开机选单项目就越多

如果不需要旧的核心出现在选单上,可以通过移除旧核心来处理

30_os-prober

默认会到系统上找其他的 partition 里面可能含有的操作系统,然后将该操作系统做成选单来处理。

如果不想要让其他操作系统被检测到并制作开机选单,可以在 /etc/default/grub 中加上 GRUB_DISABLE_OS_PROBER=true 来取消该文件的运行

40_custom

如果还有其他自定义加上的选单项目,或则其他需求,可以在这里进行补充

一般来说,我们会修改 40_custom 文件。现在我们知道 menuentry 是一个选单,它的功能有如下:

直接指定核心开机

基本上如果是 Linux 的核心要直接被用来开机,直接通过 grub2-mkconfg 去抓取 10_linux 脚本来制作即可,但是如果你有额外比较特别的参数需要进行,可以这样做

先到 grub.cfg 取得你要制作的核心选单项目,让后将它复制到 40_custom 中
再到 40_custom 中根据你的需求修改即可
问题:如果你想要使用第一个原有的 menuentry 取出来后,增加一个选单,该选单可以强制 systemd 使用 graphical.target 来启动 linux 系统,让选单一定可以使用图形界面而不用理会 default.target 的连结。如何做?

在核心外带参数中,有个选项 systemd.unit=???,可以做到。因此先到 grub.cfg 中,复制一个 menuentry
[root@study default]# vim /etc/grub.d/40_custom
#在这里修改我们的选单名称
menuentry 'My graphical CentOS' --class centos --class gnu-linux --class gnu --class os --unrestricted --id 'mygraphical' {   # 这里再设置一个 --id
        load_video
        set gfxpayload=keep
        insmod gzio
        insmod part_gpt
        insmod xfs
        set root='hd0,gpt2'
        if [ x$feature_platform_search_hint = xy ]; then
          search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt2 --hint-efi=hd0,gpt2 --hint-baremetal=ahci0,gpt2  13d0663f-4cbd-412d-aa9f-975eb18da590
        else
          search --no-floppy --fs-uuid --set=root 13d0663f-4cbd-412d-aa9f-975eb18da590
        fi
        linux16 /vmlinuz-3.10.0-1062.el7.x86_64 root=/dev/mapper/centos-root ro crashkernel=auto spectre_v2=retpoline rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet elevator=deadline systemd.unit=graphical.target  # 这里再增加 systemd.unit=graphical.target 配置
        initrd16 /initramfs-3.10.0-1062.el7.x86_64.img
}

# 然后重建下
[root@study default]# grep linux16 /boot/grub2/grub.cfg
# 下次重新开机的时候就会出现该选单给你选择了

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表