Akemi

grub-BLS

2025/10/13

BLS是linux内核社区推出的一套标准化引导加载器配置规范,旨在统一不同linux发行版本的启动配置管理方式

在之前各个发型版本的grub文件夹都不尽相同,并且由脚本生成,管理复杂;每次更新配置文件,需要手动执行grub-mkconfig;支持加密启动配置

配置文件位于/boot/loader/entries/,每个conf都是一个模式,在系统启动时进行加载

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
ls /boot/loader/entries/
87db439bcd174376b872d2e732b67d0c-0-rescue.conf
87db439bcd174376b872d2e732b67d0c-5.14.0-503.33.1.el9_5.x86_64.conf
87db439bcd174376b872d2e732b67d0c-5.14.0-503.35.1.el9_5.x86_64.conf
87db439bcd174376b872d2e732b67d0c-5.14.0-503.38.1.el9_5.x86_64+debug.conf
87db439bcd174376b872d2e732b67d0c-5.14.0-570.49.1.el9_6.x86_64+debug.conf
87db439bcd174376b872d2e732b67d0c-5.14.0-570.49.1.el9_6.x86_64.conf

# 基于文件名分析:
5.14.0-570.49.1.el9_6.x86_64.conf ← 最新稳定内核(默认启动)
5.14.0-570.49.1.el9_6.x86_64+debug.conf ← 调试版本(特殊用途)
5.14.0-503.38.1.el9_5.x86_64+debug.conf ← 旧调试版本(保留)
5.14.0-503.35.1.el9_5.x86_64.conf ← 旧稳定版本(保留)
5.14.0-503.33.1.el9_5.x86_64.conf ← 更旧版本(可能即将删除)
0-rescue.conf ← 救援内核(故障恢复)

系统会加载最新内核版本作为默认启动项
0-rescue.conf 是固定的救援模式配置

cat 87db439bcd174376b872d2e732b67d0c-5.14.0-570.49.1.el9_6.x86_64.conf
title AlmaLinux (5.14.0-570.49.1.el9_6.x86_64) 9.6 (Sage Margay)
version 5.14.0-570.49.1.el9_6.x86_64
linux /vmlinuz-5.14.0-570.49.1.el9_6.x86_64
initrd /initramfs-5.14.0-570.49.1.el9_6.x86_64.img $tuned_initrd
options root=/dev/mapper/almalinux_192-root ro crashkernel=1G-4G:192M,4G-64G:256M,64G-:512M resume=/dev/mapper/almalinux_192-swap rd.lvm.lv=almalinux_192/root rd.lvm.lv=almalinux_192/swap $tuned_params
grub_users $grub_users
grub_arg --unrestricted
grub_class almalinux

title:启动菜单显示的名称
version:内核版本号
linux:指定内核镜像,包含操作系统核心
initrd:临时根文件系统,提供硬件驱动和工具 初始ramdisk的路径
root:真正的根文件系统位置
ro:启动时只读挂载
console:内核输出目的地

可以通过修改配置文件的方式来添加参数,不赘述了

通过修改默认配置来添加参数的方式

1
2
3
4
5
6
7
8
# 查看当前默认配置
grubby --info=ALL

# 为所有内核添加大页参数
grubby --update-kernel=ALL --args="hugepagesz=2M hugepages=1024 default_hugepagesz=2M"

# 或者只为特定内核添加
grubby --update-kernel=/boot/vmlinuz-4.18.0-348.el8.x86_64 --args="hugepagesz=2M hugepages=1024"

临时修改

在grub菜单选择启动项时,按e编辑,添加或修改options行

可添加的参数

  • 硬件性能调优参数
  • 调试和故障排查参数
  • 安全相关参数
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
# CPU隔离和调度
isolcpus=1,3,5-7 # 隔离CPU核心,留给特定应用
nohz_full=1,3,5-7 # 在指定CPU上启用完全无滴答
rcu_nocbs=1,3,5-7 # 指定无RCU回调的CPU
processor.max_cstate=1 # 限制CPU最大C-state
intel_pstate=disable # 禁用Intel P-state驱动

# 在BLS配置中:
options isolcpus=2-4 nohz_full=2-4 rcu_nocbs=2-4

# 内存和虚拟内存
transparent_hugepage=never # 完全禁用透明大页
transparent_hugepage=madvise # 按建议使用透明大页
numa=on # 启用NUMA支持
numa_balancing=disable # 禁用NUMA平衡
mem=8G # 限制内存大小(调试用)
vm.swappiness=10 # 减少交换倾向

# 在BLS配置中:
options transparent_hugepage=never numa=on

# I/O调度器和设备参数
elevator=noop # 使用noop I/O调度器(SSD推荐)
elevator=deadline # 使用deadline调度器
elevator=cfq # 使用CFQ调度器(机械硬盘)
pci=assign-busses # PCI总线分配
pci=realloc # PCI资源重分配

# 在BLS配置中:
options elevator=noop pci=realloc

# 其他参数
selinux=0 # 禁用 SELinux
enforcing=0 # SELinux 宽容模式
audit=0 # 禁用审计
ipv6.disable=1 # 禁用 IPv6

debug # 启用调试输出
ignore_loglevel # 忽略日志级别,输出所有信息
earlyprintk=serial,ttyS0,115200 # 早期串口输出
systemd.log_level=debug # systemd 调试日志

quiet # 减少启动输出
splash # 显示启动画面
nomodeset # 禁用内核模式设置
acpi=off # 禁用 ACPI
noapic # 禁用 APIC

title Database Optimized Kernel # 名称
version 4.18.0-348.el8.x86_64 # 内核版本
linux /vmlinuz-4.18.0-348.el8.x86_64 # 内核使用的压缩镜像
initrd /initramfs-4.18.0-348.el8.x86_64.img #
options root=/dev/mapper/rhel-root ro
options hugepagesz=1G hugepages=16 # 16个1GB大页
options default_hugepagesz=1G
options transparent_hugepage=never
options isolcpus=2-7
options elevator=deadline

CATALOG
  1. 1. 可添加的参数