После обновления дистрибутива вы заметили, что новое оборудование не определяется стандартным ядром, а модуль для него есть только в свежей версии — это типичный повод собрать ядро Linux самостоятельно. Сборка из исходников позволяет включить поддержку нужных устройств, отключить лишние драйверы и получить систему, заточенную под конкретное железо.

Процесс не требует навыков программирования, но требует внимательности: ошибка в конфигурации может привести к тому, что система не загрузится. Поэтому в статье разберём каждый шаг — от установки зависимостей до безопасного отката на старое ядро. Все команды приведены для дистрибутивов на базе Debian/Ubuntu; для Fedora или Arch отличаются только пакетные менеджеры и названия пакетов.

Зачем собирать ядро самостоятельно

Стандартные ядра дистрибутивов собраны «на все случаи жизни»: в них включены тысячи модулей для оборудования, которого у вас никогда не будет. Самостоятельная сборка решает несколько конкретных задач.

  • 🚀 Поддержка нового железа — драйверы для свежих видеокарт, сетевых адаптеров и ноутбуков появляются в новых версиях ядра раньше, чем в репозиториях стабильных дистрибутивов.
  • ⚙️ Оптимизация под процессор — можно включить оптимизации под конкретную архитектуру CPU вместо универсального бинарника.
  • 🧩 Специфические патчи — например, патчи для низких задержек, realtime-задач или исправления, ещё не принятые в основную ветку.
  • 📦 Уменьшение размера — отключение ненужных подсистем сокращает время загрузки и объём занятой памяти.

Если же система работает стабильно и всё оборудование определяется, собирать ядро ради «свежей цифры» смысла мало — риски перевешивают выгоду. Сборка оправдана, когда есть конкретная задача: неработающее устройство, нужный модуль или требование к производительности.

Подготовка системы и установка зависимостей

Перед началом вам нужно установить компилятор и библиотеки, без которых сборка невозможна. В Debian/Ubuntu достаточно одной команды:

sudo apt update

sudo apt install build-essential libncurses-dev bison flex libssl-dev libelf-dev bc rsync

Набор пакетов в других дистрибутивах отличается по названиям — сверьтесь с документацией вашего дистрибутива. Также убедитесь, что на диске свободно достаточно места: распакованные исходники и объектные файлы при полной сборке занимают заметный объём, обычно счёт идёт на десятки гигабайт.

Далее скачайте исходники. Официальный источник — сайт kernel.org, откуда берут архив нужной версии, либо используют git-репозиторий:

wget https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-6.6.tar.xz

tar -xf linux-6.6.tar.xz

cd linux-6.6

⚠️ Внимание: скачивайте исходники только с официального kernel.org или из репозитория вашего дистрибутива. Архивы со сторонних сайтов могут содержать модификации, и проверить их происхождение невозможно.
💡

Проверьте подпись архива через gpg и файл .sign, опубликованный на kernel.org — это займёт минуту и гарантирует, что исходники не подменены.

Конфигурация ядра: самый ответственный этап

Конфигурационный файл .config определяет, какие драйверы и подсистемы попадут в ядро. Ошибка здесь — главная причина того, что свежее ядро не загружается или не видит диски и сеть. Самый безопасный путь — взять за основу конфигурацию текущего рабочего ядра:

cp /boot/config-$(uname -r) .config

make olddefconfig

Команда make olddefconfig подставит значения по умолчанию для новых опций, появившихся в свежей версии. После этого можно внести точечные изменения через текстовое меню:

make menuconfig

В menuconfig навигация ведётся стрелками, пробел переключает состояние опции: [*] — встроено в ядро, [M] — собрано модулем, [ ] — отключено. Драйверы, необходимые для загрузки (контроллер диска, файловая система корневого раздела), лучше встраивать в ядро напрямую, а не модулем — иначе система может не найти корневой раздел без корректно собранного initramfs.

☑️ Проверка конфигурации перед сборкой

Выполнено: 0 / 5
📊 Зачем вы собираете ядро самостоятельно?
Поддержка нового оборудования
Оптимизация производительности
Учебный интерес и изучение Linux
Нужны специальные патчи

Компиляция и установка

Компиляция — самый долгий, но самый простой этап. Запускается одной командой, где флаг -j задаёт число параллельных потоков (обычно равно числу ядер процессора):

make -j$(nproc)

В зависимости от мощности машины и объёма конфигурации процесс занимает от десятков минут до нескольких часов. На слабом железе разумно запускать сборку ночью. Ошибки компиляции на этом этапе обычно означают нехватку места на диске, неустановленную зависимость или повреждённый архив исходников — текст ошибки укажет на причину.

После успешной сборки устанавливаются модули и само ядро:

sudo make modules_install

sudo make install

Команда make install копирует ядро в /boot, создаёт initramfs и, как правило, обновляет конфигурацию загрузчика GRUB автоматически. Если запись в меню загрузки не появилась, обновите его вручную командой sudo update-grub (в дистрибутивах без этой утилиты — grub-mkconfig -o /boot/grub/grub.cfg).

💡

Старое ядро при установке нового не удаляется — оно остаётся в меню GRUB и служит страховкой на случай проблем. Не удаляйте его, пока не убедитесь, что новое ядро работает стабильно.

Сравнение способов получения нового ядра

Самостоятельная сборка — не единственный путь. В таблице ниже сравнены основные варианты, чтобы вы могли оценить, подходит ли именно ручная компиляция под вашу задачу.

СпособСложностьГибкость настройкиПоддержка дистрибутивом
Ядро из репозиторияМинимальнаяНетПолная, с обновлениями безопасности
Backports / mainline-репозиторииНизкаяНетЧастичная
Сборка с конфигом дистрибутиваСредняяТочечнаяНет, обновления вручную
Полностью своя конфигурацияВысокаяМаксимальнаяНет, полная ответственность на вас

Как видно, ручная сборка даёт максимум контроля, но лишает вас автоматических обновлений безопасности: за выходом новых версий и патчей придётся следить самостоятельно и пересобирать ядро при появлении критических исправлений.

Первая загрузка и проверка работоспособности

Перезагрузите машину и в меню GRUB выберите новое ядро — обычно оно становится пунктом по умолчанию, а старое доступно в подменю «Advanced options». После загрузки первым делом проверьте версию:

uname -r

Затем убедитесь, что работает ключевое оборудование: сеть (ip a), звук, видеоподсистема, монтирование всех разделов. Журнал ядра поможет найти ошибки:

dmesg | grep -i -E "error|fail|warn"

Не пугайтесь отдельных предупреждений в dmesg — часть из них присутствует и на штатном ядре. Тревожные признаки: не поднявшийся сетевой интерфейс, ошибки монтирования файловых систем, отсутствие устройств, которые раньше работали.

Что делать, если dmesg показывает ошибку загрузки модуля

Найдите имя модуля в сообщении об ошибке. Проверьте, собран ли он: зайдите в каталог исходников, выполните make menuconfig и найдите опцию через поиск (клавиша /). Если опция отключена — включите её как модуль или встроенную, пересоберите ядро и повторите установку.

Откат на старое ядро при проблемах

Если новое ядро не загружается — система зависает на чёрном экране или уходит в kernel panic — не спешите переустанавливать ОС. Перезагрузите машину, в меню GRUB откройте раздел с дополнительными вариантами загрузки и выберите предыдущее ядро. Именно поэтому его нельзя было удалять.

⚠️ Внимание: если GRUB настроен на мгновенную загрузку без показа меню, удерживайте клавишу Shift (для BIOS) или нажимайте Esc (для UEFI) сразу после включения — поведение зависит от конфигурации вашей системы, детали смотрите в документации дистрибутива.

После загрузки со старым ядром неработающее можно удалить вручную: убрать файлы ядра и initramfs из /boot, каталог модулей из /lib/modules/версия и обновить конфигурацию загрузчика. Либо оставьте его и вернитесь к правке конфигурации — чаще всего проблема решается включением одного пропущенного драйвера.

⚠️ Внимание: не экспериментируйте со сборкой ядра на единственной рабочей машине без резервной копии важных данных. Идеальная площадка для первых опытов — виртуальная машина, где ошибка ничего не стоит.

Типичные ошибки новичков

Большинство неудачных сборок сводится к нескольким повторяющимся промахам. Знание их заранее сэкономит часы на переустановку.

  • Сборка «с нуля» без базового конфига — конфигурация по умолчанию (make defconfig) не учитывает особенности вашего железа и дистрибутива.
  • Отключение «лишних» опций вслепую — если назначение параметра непонятно, оставьте его как есть.
  • Драйвер корневой ФС собран модулем при отсутствии корректного initramfs — классическая причина kernel panic.
  • Удаление старого ядра до проверки нового — лишает пути к откату.
  • Игнорирование обновлений безопасности — самосборное ядро не обновляется автоматически.
💡

Формула успешной первой сборки: конфиг от рабочего ядра + минимум изменений + старое ядро в резерве + проверка через dmesg после загрузки.

Часто задаваемые вопросы

Сколько времени занимает сборка ядра?

Зависит от процессора и объёма конфигурации. На современном многоядерном CPU полная сборка обычно занимает от десятков минут до часа, на старом железе — несколько часов. Число потоков регулируется флагом make -j.

Нужно ли пересобирать ядро при каждом обновлении?

Да, самосборное ядро не получает автоматических обновлений. Следите за выпусками на kernel.org и пересобирайте при выходе версий с исправлениями безопасности, критичных для вашей системы.

Что делать, если make выдаёт ошибку компиляции?

Прочитайте первое сообщение об ошибке — обычно это отсутствующая зависимость (установите нужный пакет), нехватка места на диске или повреждённые исходники (скачайте архив заново и проверьте подпись).

Можно ли собрать ядро на одном компьютере для другого?

Да, это называется кросс-компиляция и обычная практика, например, для слабых устройств. Потребуется соответствующий тулчейн и корректная конфигурация под целевую архитектуру — тема отдельного руководства.

Удалит ли сборка ядра мои данные?

Сама сборка и установка ядра не затрагивают пользовательские данные — меняются только файлы в /boot и /lib/modules. Риск связан исключительно с возможной незагружаемостью системы, которая решается откатом через меню GRUB.