22.03 SP3/SP4 升级至 24.03 后因 SELinux 策略版本不兼容导致系统无法启动
发表于 2026/06/27
0
#问题现象
升级过程中出现 SELinux 策略加载错误:“Regex version mismatch, expected: 10.39 2021-10-29 actual: 10.42 2022-12-11”;重启后系统卡在 boot 阶段或触发 kernel panic;若能进入登录界面,输入用户名密码后会立即返回登录界面;系统日志中存在大量 AVC 拒绝记录,如 denied { transition } 和 denied { dyntransition },涉及 kernel_t 向 unconfined_t、sshd_net_t 等域的进程转换被拒绝。
#问题根因
SELinux 策略文件与新内核或用户空间组件存在版本不兼容,导致策略加载失败,进而使关键系统进程(如 systemd、login、sshd)因缺少正确的 SELinux 上下文标签和类型强制规则而被拒绝执行,造成系统无法正常启动或登录。
#解决方案
1. 使用 Live CD 启动,挂载故障系统盘并 chroot 进入。
2. 重装 systemd 和 systemd-udev 包:`dnf reinstall systemd systemd-udev`。
3. 备份并移除原有 SELinux 配置与策略:
- `mv /etc/selinux/targeted /etc/selinux/targeted.bak`
- `mv /etc/selinux/config /etc/selinux/config.bakold`
4. 卸载并重新安装 SELinux 策略及相关工具:
- `dnf remove selinux-policy*`
- `dnf install selinux-policy-targeted`
- `dnf install selinux-policy-devel policycoreutils policycoreutils-devel`
5. 恢复原始 SELinux 配置文件(保留 enforcing 模式):
- `mv /etc/selinux/config /etc/selinux/config.bakrpmnew`
- `mv /etc/selinux/config.bakold /etc/selinux/config`
6. 触发 SELinux 文件系统标签重建:`touch /.autorelabel`
7. 重启系统,等待自动完成标签重建并再次重启后系统恢复正常。
8. 若安装了 DDE 桌面环境,还需额外执行:
- `dnf remove dde-* startdde`
- `dnf install dde`


