GRUB Error: error: out of memory during kernel allocation
Linux Bootloader
Ошибка GRUB: out of memory during kernel allocation — Исправление
Во время загрузки большого образа initramfs (например, со всеми модулями ядра или встроенными live-образами) GRUB завершает работу аварийно: error: out of memory / error: cannot allocate kernel buffer.
| Фактор сбоя | Типичный размер | Предел GRUB |
|---|---|---|
| Раздутый initramfs | > 150-300 МБ | Ограничение конвенциональной памяти BIOS/UEFI |
| Фреймбуфер / Initrd splash | Высокое разрешение 4K | Конфликт областей памяти видеопамяти и initrd |
| Устаревшая версия GRUB 2.04 | Баг распределителя памяти | Отказ при загрузке на платформах с большим объемом RAM |
- Уменьшите размер initramfs, отключив включение всех неиспользуемых драйверов.
В Debian/Ubuntu в файле/etc/initramfs-tools/initramfs.confизмените:MODULES=most # Замените на: MODULES=dep COMPRESS=zstd - В RHEL/Fedora перегенерируйте dracut в оптимизированном режиме:
sudo dracut -f --hostonly - Если проблема вызвана видеорежимом GRUB, отключите графический терминал в
/etc/default/grub:GRUB_TERMINAL=console GRUB_GFXPAYLOAD_LINUX=text - Обновите initramfs и GRUB:
sudo update-initramfs -u sudo update-grub
Архитектурная заметка: Данная проблема часто возникает в гипервизорах Proxmox/KVM и Hyper-V, если виртуальной машине выделено менее 512 МБ памяти при тяжелом ядре.
Практический опыт инженера:
В GRUB версии 2.04 был известный баг в менеджере памяти EFI mmap. Обязательно выполните обновление GRUB до последней стабильной сборки вашего дистрибутива.
Частые вопросы (FAQ)
Почему GRUB пишет Out of Memory, если на сервере 64 ГБ RAM?
На этапе работы загрузчика ядро еще не запущено, и GRUB ограничен памятью реального режима (Real Mode) или нижними адресами EFI-карты памяти.
Поможет ли сжатие initramfs через XZ?
Да, XZ или ZSTD со сжатием 19 уровня существенно уменьшают размер файла, предотвращая исчерпание пула GRUB.