Поиск по сайту:

Как собрать и установить собственное ядро в Ubuntu

Мысль о компиляции собственного ядра вселяет страх в сердца новых пользователей Linux. Звучит устрашающе — создавать самую важную часть вашей системы с нуля. Однако на самом деле собрать ядро Linux в Ubuntu очень просто.

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

Содержание

  • Получение зависимостей
  • Получение исходного кода ядра для Ubuntu
  • Настройка для вашей сборки
  • Настройка ядра Ubuntu
  • Сборка пакетов ядра для Ubuntu
  • Установка ядра
  • Установка пользовательских двоичных ядер
  • Установка основной линии в Ubuntu
  • Использование основной линии

Также читайте: Как понизить версию ядра в Linux

Получение зависимостей

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

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

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

Теперь вы можете получить исходный код, который хотите собрать. Все ядра доступны в официальных репозиториях Linux. Вы можете посмотреть последние выпуски в их репозитории cdn. На момент написания этой статьи последней версией является 5.16. Скачать можно с помощью команд:

cd /home/$USER/
mkdir kernelbuild
cd kernelbuild
wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.16.19.tar.xz

Загрузка ядра займет некоторое время, так что наберитесь терпения.

Настройка для вашей сборки

Начните настройку с распаковки tar-файла ядра. Затем скопируйте в него конфигурацию существующего ядра.

tar xavf linux-5.16.19.tar.xz && cd ./linux-5.16.19
cp /boot/config-`uname -r` .config

Теперь вам предстоит адаптировать старую конфигурацию к новому ядру.

make oldconfig

Этот скрипт спросит вас, что делать с каждой новой функцией. Если вы хотите использовать значения по умолчанию, используйте вместо этого make olddefconfig.

Также читайте: Как собрать новый компьютер для Linux

Настройка ядра Ubuntu

Вы можете оставить свою конфигурацию такой, какая она есть, и, вероятно, все будет в порядке. Однако нет смысла создавать собственное ядро, если вы не собираетесь его настраивать.

Чтобы настроить конфигурацию, запустите

make menuconfig

Откроется синее меню со списком категорий. Эти категории содержат функции, которые вы можете выбрать для включения в свое ядро.

Например, если вы действительно хотите встроить поддержку файловой системы BTRFS непосредственно в ядро и включить другие функции, вам следует перейти в «Файловые системы ->». Затем прокрутите вниз до пункта «Поддержка файловой системы Btrfs». Выберите нужный вариант и нажмите пробел. Пробел переключается между буквами «M», «*» и пустым.

  • «M» означает, что эта функция будет построена как модуль, который будет загружен при необходимости при запуске Ubuntu.
  • «*» означает, что эта функция будет встроена в ядро и всегда загружена.

Скрипт не включает пустые опции в конечный продукт. Когда вы закончите настройку, очистите каталог.

make clean

Теперь ваше ядро готово к сборке.

Сборка пакетов ядра для Ubuntu

В Ubuntu есть метод сборки своих ядер, но он заставляет вас использовать сценарии, написанные для более старых версий. Иногда это нормально; другие ужасно ломаются. Поэтому обычно лучше использовать более общий метод Linux с GNU make.

make -j `getconf _NPROCESSORS_ONLN` 
make deb-pkg LOCALVERSION=-custom

Все, что делает эта строка, — это компилирует ядро в пакеты .deb, используя количество ядер ЦП в вашей системе плюс одно. Он также добавляет слово «custom» в конец версии пакета, чтобы отличать ваше собственное ядро от других.

Примечание. Компиляция ядра может занять несколько часов. Потерпи.

Установка ядра

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

cd ./../
sudo dpkg -i linux-firmware-image-5.16.19-custom_5.16.19-custom-1_amd64.deb
sudo dpkg -i linux-libc-dev_5.16.19-custom-1_amd64.deb
sudo dpkg -i linux-headers-5.16.19-custom_5.16.19-custom-1_amd64.deb
sudo dpkg -i linux-image-5.16.19-custom-dbg_5.16.19-custom-1_amd64.deb
sudo dpkg -i linux-image-5.16.19-custom_5.16.19-custom-1_amd64.deb

Когда установка завершится, перезагрузите компьютер. Ubuntu автоматически загрузится с вашим новым ядром. Вы можете проверить это, запустив uname -r в терминале при его запуске.

Установка пользовательских двоичных ядер

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

Кроме того, пользовательские двоичные ядра также могут предоставить вам гибкость, позволяющую переключаться между версиями ядра для вашей установки Ubuntu. Это может быть особенно полезно, если вы используете машину с проблемами совместимости оборудования и не хотите заниматься компиляцией собственного ядра.

Зная это, самый популярный способ установки пользовательских бинарных ядер — через Mainline. Это программа с графическим интерфейсом, разработанная bkw777, цель которой — упростить процесс установки ядра Linux.

При этом эта программа объединяет все шаги, которые необходимо предпринять для правильной загрузки и настройки ядра. Например, Mainline позволяет вам легко выбрать двоичный файл ядра и заголовок, который вы хотите установить. Затем эта версия будет храниться в кеше, откуда вы сможете легко загрузить ее, когда вам это понадобится.

Также читайте: 5 инструментов для простого создания собственного дистрибутива Linux

Установка основной линии в Ubuntu

При этом установка Mainline относительно проста. Во-первых, вам нужно указать apt включить репозиторий пакетов Mainline. Для этого вы можете запустить следующую команду из вашего терминала:

sudo add-apt-repository ppa:cappelikan/ppa

Отсюда вам необходимо обновить каталог пакетов Ubuntu. Это позволит apt прочитать репозиторий, который вы только что добавили, и, в свою очередь, позволит вам загрузить через него Mainline:

sudo apt update

При этом остается только установить сам Mainline:

sudo apt install mainline

Использование основной линии

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

Оттуда вы сможете выбрать и установить версию ядра, которую хотите использовать в своей системе. Например, я могу выбрать «Linux 5.16.19» и нажать «Установить» на правой боковой панели, чтобы полностью загрузить эту версию ядра на свой компьютер.

С другой стороны, я также могу использовать Mainline для удаления ядер, которые больше не хочу использовать. Например, я могу выбрать «Linux 5.15» и нажать «Удалить» на той же правой боковой панели, чтобы удалить это ядро из моей системы.

Поступив таким образом, вы сможете без проблем добавлять или удалять любые файлы и двоичные файлы, связанные с этой версией ядра. Это связано с тем, что двоичный файл ядра также включает в себя библиотеки, заголовки и встроенное ПО, что, в свою очередь, позволяет ему функционировать должным образом.

Также читайте: Как исправить сбой проверки безопасности ядра в Windows 10

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

Какие проблемы возникают при использовании кастомного ядра?

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

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

Есть ли какие-либо недостатки в использовании двоичного файла ядра?

Да. Одним из основных недостатков использования двоичного файла ядра является отсутствие контроля над его встроенными функциями. Это означает, что, в отличие от ядра на основе исходного кода, двоичный файл ядра не будет содержать никаких аппаратных оптимизаций и поддержки.

Это означает, что если вы собираетесь использовать экзотическое оборудование с Ubuntu. Вам нужно будет скомпилировать ядро с нуля.

Что лучше — скомпилировать функцию ядра в виде модуля или встроенной?

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

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

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

Статьи по данной тематике