Загрузка системы занимает лишние секунды, а модуль Wi-Fi-адаптера так и не подхватывается дистрибутивным ядром — типичные признаки того, что стандартное ядро собрано «подо всё сразу» и тащит с собой сотни ненужных драйверов. Сборка ядра Linux под свое железо решает обе проблемы: в образ попадают только те модули, которые реально нужны вашему процессору, чипсету и периферии.
Эта инструкция описывает процесс от получения исходников до установки готового ядра. Команды приведены в общем виде и работают в большинстве дистрибутивов, однако названия пакетов могут отличаться — сверяйтесь с документацией вашей системы. Перед началом убедитесь, что у вас есть права root и достаточно свободного места на диске: исходники и объектные файлы занимают несколько гигабайт.
Зачем собирать ядро самостоятельно
Дистрибутивное ядро — это компромисс. Оно должно запускаться на любом совместимом оборудовании, поэтому включает тысячи драйверов, файловых систем и подсистем, которые конкретно вам никогда не понадобятся. Собственная сборка позволяет убрать лишнее и добавить нужное.
- ⚡ Ускорение загрузки за счет отказа от подгрузки ненужных модулей
- 🔧 Поддержка нового железа, которого еще нет в ядре дистрибутива
- 🛡️ Включение дополнительных механизмов безопасности и отключение уязвимых подсистем
- 📦 Уменьшение размера ядра и потребления оперативной памяти
- 🧪 Возможность применять сторонние патчи и экспериментальные функции
Впрочем, самосборное ядро не обновляется автоматически через пакетный менеджер. За патчами безопасности вам придется следить самостоятельно, иначе система со временем станет уязвимой.
Подготовка системы и установка инструментов
Для компиляции потребуется набор инструментов разработки. В дистрибутивах на базе Debian и Ubuntu пакеты ставятся одной командой:
sudo apt install build-essential bc libncurses-dev flex bison libssl-dev libelf-dev dwarves
В Fedora и родственных системах набор аналогичен, но имена пакетов отличаются — используйте dnf groupinstall "Development Tools" и документацию вашего дистрибутива. Обратите внимание на пакет libssl-dev: без него сборка прервется с ошибкой при подписании модулей.
⚠️ Внимание: перед сборкой убедитесь, что на разделе, где будет происходить компиляция, свободно не менее 15–20 ГБ. Переполнение диска в середине процесса оставит дерево исходников в поврежденном состоянии, и начинать придется заново.
Дополнительно проверьте версию компилятора командой gcc --version. Слишком старый GCC может не поддерживать свежие версии ядра — требования указаны в файле Documentation/process/changes.rst в дереве исходников.
Получение исходников ядра
Официальные исходники публикуются на kernel.org в виде архивов и git-репозитория. Для разовой сборки проще скачать архив нужной версии:
wget https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-6.X.Y.tar.xz
tar -xf linux-6.X.Y.tar.xz
cd linux-6.X.Y
Выбирая версию, ориентируйтесь на ветки longterm (LTS) — они получают исправления дольше остальных. Самая свежая стабильная версия может содержать регрессии, которые еще не успели отловить. Подпись архива можно проверить через GPG, чтобы убедиться в подлинности исходников.
| Ветка ядра | Назначение | Кому подходит |
|---|---|---|
| mainline | Новейший код, активная разработка | Разработчики, тестировщики |
| stable | Стабильные релизы с исправлениями | Энтузиасты, новое железо |
| longterm (LTS) | Длительная поддержка, консервативные обновления | Серверы, рабочие машины |
| Ядро дистрибутива | Собрано мейнтейнерами, автообновления | Большинство пользователей |
Настройка конфигурации под свое железо
Конфигурация — самый ответственный этап. Ошибка здесь означает, что система не увидит диск, сетевую карту или не сможет смонтировать корневой раздел. Начинать с нуля не нужно: возьмите за основу конфиг текущего рабочего ядра.
cp /boot/config-$(uname -r) .config
make olddefconfig
Команда make olddefconfig подставит значения по умолчанию для опций, появившихся в новой версии. Далее запустите make menuconfig — текстовый интерфейс с деревом настроек, где можно искать опции клавишей «/».
Главный принцип тонкой настройки: драйверы вашего железа вкомпилируйте в ядро статически ([*]), а все сомнительное отключайте или оставляйте модулями ([M]). Узнать, какие модули реально используются, помогут команды lsmod и lspci -k. Последняя показывает, какой драйвер обслуживает каждое устройство PCI.
- 🖥️ Включите поддержку вашего процессора в разделе Processor type and features
- 💾 Проверьте драйверы контроллера дисков (AHCI, NVMe) и файловой системы корневого раздела
- 🌐 Убедитесь, что сетевой адаптер поддерживается — иначе первая загрузка останется без сети
- 🎮 Для дискретной видеокарты решите заранее: свободный драйвер в ядре или проприетарный модуль
☑️ Проверка конфигурации перед сборкой
⚠️ Внимание: если корневая файловая система или драйвер диска собраны модулем, а initramfs вы не используете, ядро упадет в панику с ошибкой unable to mount root fs. Либо вкомпилируйте эти компоненты статически, либо корректно сгенерируйте initramfs.
Что такое localmodconfig и когда его применять
Команда make localmodconfig анализирует модули, загруженные в системе прямо сейчас, и отключает все остальные. Это быстрый способ получить минимальную конфигурацию, но есть риск: устройства, не подключенные в момент анализа (например, USB-флешка или кардридер), потеряют поддержку. Перед запуском подключите всю периферию, которой пользуетесь.
Компиляция ядра
Сама сборка запускается одной командой, но занимает от десятков минут до нескольких часов в зависимости от процессора. Ключ -j задает число параллельных потоков — обычно ставят по количеству ядер CPU:
make -j$(nproc)
Если сборка прервалась с ошибкой, читайте первое сообщение об ошибке, а не последнее — именно оно указывает на причину. Чаще всего виноваты отсутствующие зависимости или конфликт включенных опций. После исправления повторный запуск make продолжит с места остановки, пересобирать всё не придется.
В дистрибутивах на базе Debian есть альтернативный путь — сборка через make bindeb-pkg. На выходе получится обычный .deb-пакет, который легко установить и так же легко удалить через dpkg. Это удобнее ручной установки и снижает риск захламления системы.
Установка ядра и настройка загрузчика
После успешной компиляции установите модули и само ядро:
sudo make modules_install
sudo make install
Команда make install копирует ядро в /boot и в большинстве случаев обновляет конфигурацию GRUB автоматически. Если пункт меню не появился, выполните sudo update-grub или эквивалентную команду вашего загрузчика. При использовании initramfs убедитесь, что он сгенерирован для новой версии — в Debian-подобных системах это делает update-initramfs.
⚠️ Внимание: не удаляйте старое рабочее ядро до тех пор, пока новое не пройдет проверку в реальной работе. Оставьте в меню загрузчика хотя бы одну заведомо исправную версию — это ваш путь отката при панике ядра или отсутствии сети.
Перезагрузитесь и выберите новое ядро в меню загрузки. После входа в систему проверьте версию командой uname -r, работоспособность сети, звука и графики. Журнал загрузки смотрите через dmesg — ошибки драйверов видны именно там.
Типичные ошибки и их решение
Чаще всего новички сталкиваются с паникой ядра на этапе монтирования корня. Причина почти всегда одна: драйвер диска или файловой системы собран модулем, а initramfs отсутствует или собран неправильно. Решение — вкомпилировать критичные компоненты статически или пересобрать initramfs.
Вторая частая ситуация — пропавшая сеть после загрузки. Проверьте вывод lspci -k: если рядом с сетевым адаптером нет строки Kernel driver in use, драйвер не включен в конфигурацию. Вернитесь в menuconfig, найдите нужную опцию через поиск и пересоберите ядро.
Третья группа проблем связана с Secure Boot: самосборное ядро без цифровой подписи может быть отклонено прошивкой UEFI. Варианты решения — отключить Secure Boot в настройках прошивки либо подписать ядро собственным ключом и зарегистрировать его через MOK. Конкретная процедура зависит от дистрибутива, поэтому сверяйтесь с его документацией.
Как ускорить повторные сборки
Установите ccache — кэш компилятора, который хранит результаты предыдущих сборок. При небольших изменениях конфигурации повторная компиляция ускоряется в разы, поскольку пересобираются только изменившиеся файлы. Достаточно добавить ccache в начало переменной PATH или собирать командой make CC="ccache gcc".
Часто задаваемые вопросы
Можно ли собрать ядро без прав root?
Компиляция возможна от обычного пользователя — это даже рекомендуется с точки зрения безопасности. Права root понадобятся только на этапе установки ядра и модулей в системные каталоги.
Что делать, если новое ядро не загружается?
Перезагрузитесь и выберите в меню загрузчика предыдущую рабочую версию. Затем изучите сообщения об ошибке: чаще всего причина в отсутствующем драйвере диска, файловой системы или некорректном initramfs. Исправьте конфигурацию и пересоберите ядро.
Как узнать, какие модули нужны моему железу?
Используйте связку команд: lspci -k покажет драйверы устройств PCI, lsusb — список USB-устройств, lsmod — загруженные модули. Сопоставив эти данные с опциями в menuconfig, вы включите только необходимое.
Нужно ли пересобирать ядро при каждом обновлении?
Да, самосборное ядро не обновляется автоматически. Следите за выходом исправлений безопасности в выбранной ветке и пересобирайте ядро при появлении критичных патчей. Процесс ускоряется за счет сохраненного .config и ccache.
Удалит ли make mrproper мои настройки?
Да, эта команда очищает дерево исходников полностью, включая файл .config. Перед очисткой скопируйте конфигурацию в безопасное место, например в домашний каталог, чтобы не настраивать всё заново.