Failed to load SELinux policy, freezing — Сбой инициализации SELinux
Архитектура ошибки и симптомы сбоя
Критический сбой ранней загрузки «Failed to load SELinux policy, freezing» (или «systemd[1]: Failed to load SELinux policy») возникает на первом этапе инициализации системы диспетчером systemd. Ошибка означает, что systemd не смог прочитать, загрузить или скомпилировать бинарный файл политики безопасности (например, /etc/selinux/targeted/policy/policy.31) в ядро Linux. В соответствии со стандартом безопасности при повреждении политик система принудительно замораживает (freeze) выполнение любых дальнейших процессов.
Диагностическая таблица параметров сбоя
| Параметр | Значение | Инженерный смысл сбоя |
|---|---|---|
| SELinux Policy File | /etc/selinux/targeted/policy/ | Скомпилированная база правил мандатного контроля доступа (MAC). |
| Freezing Action | Kernel Freeze / Hang | Защитный механизм ядра: предотвращение запуска процессов в небезопасном режиме. |
| Root Cause | Corrupted Policy / Bad Update | Повреждение файлов политик после прерванного обновления selinux-policy-targeted. |
Пошаговое дерево решений и сценарии траблшутинга
Сценарий 1: Временное отключение SELinux через меню загрузчика GRUB
- Перезагрузите сервер и в меню GRUB нажмите клавишу
e. - В конце строки параметров ядра (начинается с
linux) добавьте параметры:selinux=0илиenforcing=0. - Нажмите
Ctrl+Xдля успешной загрузки операционной системы в обход блокировки SELinux.
Сценарий 2: Принудительная перемаркировка файловой системы (Autorelabel)
# Создайте флаг автоматической перемаркировки контекстов безопасности при старте:
sudo touch /.autorelabel
# Проверьте статус режима SELinux в конфигурационном файле:
cat /etc/selinux/config
# Убедитесь, что указано: SELINUX=permissive (на время восстановления)Сценарий 3: Переустановка поврежденного пакета политик SELinux
# Для RHEL / CentOS / Rocky Linux / AlmaLinux:
sudo dnf reinstall -y selinux-policy-targeted selinux-policy
# Принудительная пересборка модулей политик:
sudo semodule -B
# Возврат режима enforcing в /etc/selinux/config:
# SELINUX=enforcing
sudo rebootITSTM восстановит бинарные политики SELinux, настроит кастомные модули te/pp и обеспечит максимальный уровень защиты хоста.
Частые вопросы (FAQ)
В чем разница между selinux=0 и enforcing=0 в параметрах GRUB?
selinux=0 полностью выгружает подсистему SELinux из ядра. enforcing=0 (Permissive mode) загружает подсистему и политики, но переводит их в режим аудита: доступ не блокируется, а нарушения лишь записываются в /var/log/audit/audit.log.
Почему после добавления selinux=0 система загрузилась, но файлы не имеют меток?
В режиме selinux=0 ядро не назначает xattr-метки новым файлам. При обратном включении SELinux обязательно создайте файл /.autorelabel для восстановления меток всей файловой системы.
Как проверить текущий статус SELinux из командной строки?
Выполните команду sestatus или getenforce.
Где сохраняются отчеты об ошибках доступа SELinux?
В файле /var/log/audit/audit.log (ищите тип событий type=AVC) или через утилиту ausearch -m avc -ts recent.