在 Ubuntu 上出现 SELinux 启动失败,通常不是“配置错了”,而是 Ubuntu 本身并不默认支持 SELinux,这是最常见原因。下面分情况说明。
所以你如果看到类似:
SELinux: Disabled at boot
SELinux: Failed to initialize
这往往是内核没带 SELinux 支持或启动参数不对。
Ubuntu 的 generic 内核默认不启用 SELinux
检查:
grep SELINUX /boot/config-$(uname -r)
如果看到:
# CONFIG_SECURITY_SELINUX is not set
说明内核根本不支持 SELinux,永远起不来。
✅ 解决:
selinux=1 启动参数即使内核支持,也需要:
selinux=1
security=selinux
修改:
sudo vim /etc/default/grub
添加:
GRUB_CMDLINE_LINUX="selinux=1 security=selinux"
然后:
sudo update-grub
reboot
Ubuntu 上需要手动装:
sudo apt install selinux selinux-utils selinux-basics
初始化策略:
sudo selinux-activate
sudo reboot
Ubuntu 默认启用 AppArmor,SELinux 和 AppArmor 不能同时作为主 LSM。
检查:
cat /sys/kernel/security/lsm
如果看到 apparmor 在前,SELinux 无法生效。
SELinux 需要:
security.selinux检查:
mount | grep ' / '
如果缺少 seclabel,SELinux 会失败。
如果你只是想“用 SELinux”,不要用 Ubuntu
✅ 推荐系统:
这些系统:
Ubuntu 上 SELinux 启动失败,90% 的原因是:Ubuntu 本身就不默认支持 SELinux,而是用 AppArmor。
如果你愿意,可以告诉我:
我可以帮你判断 是修还是换系统更合适。