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

Изображение пользовательского ядра Ubuntu

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

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

Содержание

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

Также читайте: Как понизить версию ядра в 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

Загрузка ядра пользовательского ядра Ubuntu

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

Подготовка к сборке

Начните настройку, распаковав 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

Пример Makeconfig пользовательского ядра Ubuntu 1

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

Пример Btrfs пользовательского ядра Ubuntu

Например, если вы действительно хотите встроить поддержку файловой системы 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

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

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

Mainline пользовательского ядра Ubuntu

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

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

Установка Mainline в Ubuntu

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

sudo add-apt-repository ppa:cappelikan/ppa

Добавление нового репозитория пользовательского ядра Ubuntu

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

sudo apt update

С этим единственное, что осталось сделать, это установить сам Mainline:

sudo apt install mainline

Установка Mainline пользовательского ядра Ubuntu

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

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

Поиск Mainline пользовательского ядра Ubuntu

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

Установка нового ядра пользовательского ядра Ubuntu 1

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

Удаление старого ядра пользовательского ядра Ubuntu

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

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

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

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

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

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

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

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

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

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

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

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

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