Подробный гайд: Как собрать и установить кастомное ядро Linux

Полный гайд по сборке ядра Linux с нуля: подготовка среды, конфигурация, компиляция, установка модулей и отладка.

2026.04.24                  


Подробный гайд: Как собрать и установить кастомное ядро LinuxПодробный гайд: Как собрать и установить кастомное ядро Linux

Важно:

  • Сборка собственного ядра требует осторожности. Всегда оставляйте рабочее старое ядро, тестируйте изменения в виртуальной машине или на резервном диске, и делайте бэкапы /boot и /etc/default/grub.

1. Подготовка окружения

Требования к системе

  • ОЗУ: минимум 4 ГБ (рекомендуется 8+ ГБ)
  • Диск: 15–25 ГБ свободного места
  • CPU: 2+ ядра (чем больше, тем быстрее сборка)
  • ОС: Любой современный дистрибутив (Debian/Ubuntu, Fedora, Arch, openSUSE и др.)

Установка зависимостей

# Debian / Ubuntu
sudo apt update
sudo apt install build-essential flex bison libncurses-dev libssl-dev bc kmod cpio xz-utils fakeroot libelf-dev

# Fedora / RHEL / AlmaLinux
sudo dnf install gcc make flex bison ncurses-devel openssl-devel bc elfutils-libelf-devel perl

# Arch Linux
sudo pacman -S base-devel ncurses openssl bc kmod cpio xz elfutils

Совет:

  • Установите ccache (sudo apt install ccache или аналог) и добавьте export CC="ccache gcc" в ~/.bashrc. Это ускорит повторные сборки в 3–5 раз.

2. Получение исходного кода ядра

Вариант А: Стабильный релиз с kernel.org

mkdir ~/kernel-build && cd ~/kernel-build
wget https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-6.x.x.tar.xz
tar -xf linux-6.x.x.tar.xz
cd linux-6.x.x

Вариант Б: Git (для отладочных/разработческих веток)

git clone --depth 1 https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
cd linux
git checkout v6.x.x  # нужная версия

Версии:

  • stable (6.x.x) – рекомендуется для продакшена
  • longterm (5.15, 6.1, 6.6) – поддержка 4–6 лет
  • mainline – новейшие фичи, может быть нестабильным

3. Настройка конфигурации ядра

Шаг 1: Базовый конфиг

Скопируйте конфигурацию текущего ядра (самый безопасный старт):

cp /boot/config-$(uname -r) .config
make olddefconfig   # автоматически разрешит новые опции по умолчанию

Альтернативы:

  • make localmodconfig – оставит только модули, загруженные в данный момент (идеально для десктопа/ноутбука)
  • make defconfig – стандартная конфигурация архитектуры
  • make tinyconfig – минимальное ядро для встраиваемых систем

Шаг 2: Интерактивная настройка

make menuconfig

Навигация: стрелки, Enter для входа в подменю, Space для выбора ([*] встроен, [M] модуль, [ ] отключено), Esc для выхода, Y/N для сохранения.

Что обычно меняют:

Раздел Что проверить
File systems Поддержка вашей ФС (ext4, btrfs, xfs, ntfs3, exfat)
Device DriversGraphics Драйверы GPU (amdgpu, nvidia, intel, nouveau)
Device DriversNetwork Сетевые адаптеры, Wi-Fi, Bluetooth
Kernel hacking Отключите Compile-time checks и Debug info для релиза
General setupLocal version Добавьте суффикс, например -custom
Processor type and features Включите Preemptible Kernel для десктопа, High Memory если >4 ГБ ОЗУ

После настройки:

  • EscSave → подтвердите имя .config.

4. Сборка ядра

Компиляция

make -j$(nproc)
  • -j$(nproc) использует все доступные ядра CPU
  • Процесс занимает 5–40 минут в зависимости от железа и выбранных модулей
  • В конце появятся arch/x86/boot/bzImage (x86_64) или аналог для вашей архитектуры

Сборка модулей (автоматически включена в make)

Если хотите собрать только модули:

make modules -j$(nproc)

Если сборка падает:

  • проверьте вывод на отсутствие строк error:. Чаще всего причина – нехватка ОЗУ, отсутствие libssl-dev/elfutils-libelf-devel или конфликт версий gcc.

5. Установка и подготовка к загрузке

Установка модулей и ядра

sudo make modules_install
sudo make install

make install автоматически:

  • Копирует vmlinuz, System.map, .config в /boot
  • Обновляет символические ссылки
  • В большинстве дистрибутивов не обновляет загрузчик автоматически

Создание initramfs (обязательно!)

# Debian / Ubuntu
sudo update-initramfs -c -k <версия-ядра>

# Fedora / RHEL / openSUSE
sudo dracut -H --force

# Arch Linux
sudo mkinitcpio -P

Узнать версию:

  • ls /boot/vmlinuz-*custom* или grep '^CONFIG_LOCALVERSION' .config

Обновление загрузчика

# GRUB (большинство дистрибутивов)
sudo update-grub          # Debian/Ubuntu
sudo grub2-mkconfig -o /boot/grub2/grub.cfg  # Fedora/RHEL
# или
sudo grub-mkconfig -o /boot/grub/grub.cfg    # Arch

# systemd-boot
sudo bootctl update

Проверьте, что новое ядро появилось в конфигурации:

grep -i "custom" /boot/grub/grub.cfg

6. Перезагрузка и проверка

  1. Перезагрузите систему: sudo reboot
  2. В меню GRUB выберите новое ядро (если не загружается по умолчанию)
3. После входа проверьте:
uname -r          # должно выдать версию с вашим суффиксом
lsmod | head      # загруженные модули
dmesg | tail -20  # последние сообщения ядра
journalctl -k --since "5 min ago"  # логи ядра

7. Типичные проблемы и решения

Проблема Причина Решение
make падает с error: linux/kconfig.h: No such file Не установлены заголовки или повреждена сборка make clean, убедитесь в наличии libncurses-dev, flex, bison
Система не загружается, kernel panic - not syncing: VFS Нет initramfs или не подтянуты модули ФС/диска Пересоздайте initramfs, проверьте CONFIG_BLK_DEV, CONFIG_EXT4_FS и т.д.
Не работает Wi-Fi/сеть Драйвер собран как модуль, но не загружен sudo modprobe <драйвер>, добавьте в /etc/modules или включите в ядро ([*])
Долгая загрузка Включены отладочные опции или printk в ядре Отключите Kernel hackingCompile-time checks and compiler options
Secure Boot блокирует ядро Ядро не подписано Либо отключите Secure Boot в BIOS, либо подпишите ядро: sudo make INSTALL_MOD_STRIP=1 modules_install && sudo /usr/lib/linux-image-*/scripts/sign-file

Откат:

  • В GRUB нажмите Shift/Esc при загрузке → выберите старое ядро → загрузитесь → удалите кастомное:
sudo rm -rf /lib/modules/<версия-custom>
sudo rm /boot/vmlinuz-<версия-custom> /boot/initrd.img-<версия-custom> /boot/config-<версия-custom> /boot/System.map-<версия-custom>
sudo update-grub

8. Лучшие практики

  1. Всегда используйте localmodconfig перед ручной настройкой – это убирает 60–80% ненужных модулей.
  2. Тестируйте в VM (QEMU/KVM, VirtualBox, GNOME Boxes) перед установкой на железо.
  3. Ведите журнал изменений: сохраняйте .config под разными именами (config-6.6-gaming, config-6.6-server).
  4. Подписывайте модули если используете Secure Boot: make modules_sign
  5. Используйте make deb-pkg или make rpm-pkg для создания установочных пакетов (удобно для шаринга или отката).
  6. Не отключайте CONFIG_BLOCK, CONFIG_BLK_DEV, CONFIG_EXT4_FS – без них система не загрузится.
  7. Обновляйте регулярно: ядро получает критические патчи безопасности ежемесячно. Следите за kernel.org.