KERNEL_BOOT_HANG
Linux / DevOps
Траблшутинг загрузки Linux: параметры nomodeset, pci=noaer, noapic и isolcpus
- Черный экран или зависание IPMI видеоконсоли на этапе инициализации KMS DRM драйвера.
- Системный журнал переполнен миллионами сообщений
PCIe Bus Error: severity=Corrected. - Сервер зависает на этапе
Calibrating delay loop...из-за сбоев контроллера прерываний APIC. - Нестабильная задержка (Jitter) в high-load и low-latency приложениях.
1. Назначение базовых аварийных параметров
nomodeset: отключает раннюю загрузку видеодрайверов ядра (Intel/Nvidia/Radeon KMS).pci=noaer: отключает логирование PCIe Advanced Error Reporting (устраняет спам в dmesg).noapic acpi=noirq: обходит аппаратные ошибки маршутизации прерываний чипсета.isolcpus=2-7 nohz_full=2-7: изолирует ядра CPU от общего планировщика для Real-Time задач.
2. Постоянная настройка параметров в GRUB2
Отредактируйте /etc/default/grub:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash nomodeset pci=noaer isolcpus=2-3"3. Компиляция конфигурации загрузчика
# Debian / Ubuntu:
update-grub
# RHEL / CentOS / Rocky Linux:
grub2-mkconfig -o /boot/grub2/grub.cfg
# (Для UEFI: /boot/efi/EFI/rocky/grub.cfg)4. Проверка примененных параметров ядра после ребута
cat /proc/cmdline
Практический опыт инженера:
Параметр pci=noaer только скрывает спам сообщений в журнале, но не чинит поврежденный кабель или плохой контакт в PCIe слоте. Используйте его как временное решение до планового техобслуживания железа.
Частые вопросы (FAQ)
Как применить boot-параметр однократно без изменения файлов GRUB?
В меню выбора ядра GRUB нажмите клавишу 'e', допишите нужный параметр (например, nomodeset) в конец строки, начинающейся с 'linux', и нажмите Ctrl+X или F10 для старта.
Как запустить процесс на ядрах, изолированных через isolcpus?
Используйте утилиту taskset: taskset -c 2,3 /usr/local/bin/my_app.