компиляция_ядра_linux

This is an old revision of the document!


Компиляция ядра Linux

Обычная компиляция

Скачать исходники ядра нужной версии

wget https://mirrors.edge.kernel.org/pub/linux/kernel/v5.x/linux-5.8.18.tar.xz

Установить необходимые для сборки пакеты (ALT Linux)

sudo apt-get install libssl-devel libelf-devel /usr/bin/x86_64-alt-linux-gcc ncurses-devel /usr/bin/flex /usr/bin/bison /usr/bin/pahole

Скопировать конфигурационный файл от текущего ядра в каталог с распакованными исходниками

sudo cp /boot/config-5.8.14-un-def-alt1 .config

Выполнить конфигурирование при необходимости

make menuconfig

На этом этапе можно выбрать, какие модули ядра будут компилироваться и как: в виде отдельного файла *.ko или внутри самого ядра. В данном случае выделенный драйвер сетевой карты будет внутри ядра.

Драйвер RAM-диска будет в виде модуля, приведены его параметры по умолчанию

Отключение отладочной информации

scripts/config --disable DEBUG_INFO

Компиляция

make -j`nproc`

Установка и проверка ее результатов

sudo make modules_install 
ls /lib/modules/5.8.18
sudo make install
sudo ls -l /boot/initrd.img /boot/vmlinuz

Оптимизированная компиляция

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

"-march=native -flto -O3"

При использовании последнего могут быть дефекты, лучше компилировать с O2.

Также можно избавиться от модулей, ненужных на вашем оборудовании, и вкомпилировать в само ядро те модули, которые точно нужны. Если встроить драйвер дисковой подсистемы в ядро, загрузка cможет осуществляться без использования initrd. Это позволит сократить время на загрузку системы, ведь в оперативную память не придётся загружать образ ram-диска, который обычно бывает больше ядра, и не надо будет выполнять инициализацию, предполагаемую initrd.

:?:Выключение подписи модулей

scripts/config --disable MODULE_SIG

https://lecorbeausvault.wordpress.com/2022/04/26/building-a-minimal-custom-linux-kernel-on-debian/

компиляция_ядра_linux.1708102091.txt.gz · Last modified: 2024/02/16 16:48 by uf4n