RHEL8.4环境下单CPU机器/sys/fs/selinux/policy未加载问题排查
针对你遇到的RHEL8.4主服务器与IPXE启动附属机SELinux策略加载不一致的问题,核心差异出现在启动流程中SELinux初始化与资源挂载/软链生效的时机、环境配置细节上,以下是具体排查方向:
SELinux初始化与/data挂载顺序不匹配
主服务器本地启动时,/data分区的挂载早于SELinux初始化流程,因此/etc/selinux软链指向的持久化策略文件能被正常读取。而附属机通过IPXE启动时,可能在SELinux完成初始化后才挂载/data分区——此时SELinux初始化阶段读取的是尚未挂载的/data路径(空目录),自然无法加载策略,导致/sys/fs/selinux为空。内核启动参数差异
检查附属机的内核启动参数,是否存在selinux=0、enforcing=0或security=none这类禁用/弱化SELinux的配置。对比主服务器的参数:# 查看当前内核参数 cat /proc/cmdline若附属机参数中强制关闭了SELinux,会直接导致策略不加载。
/data分区挂载属性或文件系统问题
确认附属机挂载/data时的属性:mount | grep /data如果挂载时使用了
ro(只读)、nodev或其他限制属性,可能影响SELinux读取策略文件;另外,若/data分区使用的文件系统不支持SELinux上下文(如某些临时文件系统),也会导致策略加载失败。软链创建时机过晚
若附属机的/etc/selinux软链是在系统启动完成后才创建的,而非在IPXE镜像预配置阶段就存在,那么SELinux初始化时读取的仍是原始的/etc/selinux目录(可能为空),后续软链生效也无法补加载策略。策略文件的权限与SELinux上下文异常
检查/data下SELinux策略文件的权限和上下文:ls -Z /data/selinux主服务器上的文件应带有正确的SELinux上下文(如
system_u:object_r:selinux_config_t:s0),若附属机挂载/data后,文件上下文丢失或异常,SELinux会因权限限制无法读取策略。
内容的提问来源于stack exchange,提问作者Vinod

