Ubuntu 20.04启动时无法启用BPF LSM问题求助
看起来你已经按步骤配置了GRUB参数,而且/proc/cmdline也确实显示bpf已经在LSM列表里,但/sys/kernel/security/lsm里还是没出现它,我来帮你排查几个核心问题:
先确认当前内核是否支持BPF LSM
Ubuntu 5.8系列的内核虽然已经引入BPF LSM特性,但默认的linux-generic包可能没有开启这个编译选项。你可以用以下命令检查:grep CONFIG_LSM_BPF /boot/config-$(uname -r)如果输出是
# CONFIG_LSM_BPF is not set,那就说明你的内核压根没编译BPF LSM支持,这自然就没法启用了。这种情况下,你有两个选择:- 升级到Ubuntu 20.04的HWE(Hardware Enablement)内核,比如5.15系列,这类更新的内核默认开启了BPF LSM支持;
- 手动编译内核,在配置里把
CONFIG_LSM_BPF设为y,同时确保CONFIG_BPF=y和CONFIG_BPF_SYSCALL=y也已开启。
检查Lockdown模式的限制
你的LSM列表里包含lockdown,如果系统处于confidentiality级别的lockdown,可能会阻止BPF LSM加载。你可以查看当前lockdown级别:cat /sys/kernel/security/lockdown如果输出显示
[confidentiality],可以尝试降低lockdown级别(比如在GRUB参数里添加lockdown=integrity),不过这个情况的概率比内核不支持要低,先优先排查内核配置。排除GRUB配置生效问题
从/proc/cmdline的输出来看,你添加的lsm参数已经成功传递给内核了,所以GRUB配置这一步是没问题的,不用再纠结update-grub的操作了。
总结一下:最大概率是当前5.8.0-48-generic内核没有开启BPF LSM的编译支持,先通过grep CONFIG_LSM_BPF命令确认这一点,再根据情况升级内核或者手动编译内核来解决。
备注:内容来源于stack exchange,提问作者maplgebra

