Table of Contents

Оптимизиированные ядра

Сборка оптимизированного ядра

берем исходники:

VER=v7.0
git clone --depth 1 --branch ${VER} https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git

копируем текущий конфиг:

cd linux
cp /boot/config-$(uname -r) .config
make olddefconfig

Включаем только те модули, которые используем. Эта команда сканирует вывод lsmod и выключает все ненужное:

make localmodconfig

Включаем оптимизацию под данный CPU. Запускаем

make menuconfig

и ставим галочку - Processor type and features –> Build and optimize for local/native CPU (X86_NATIVE_CPU [=n])
Затем можно проверить:

grep 'march=native' arch/x86/Makefile

Так как собираем ванильное ядро, то надо выключить сертификаты для Ubuntu/Debian:

sed -i \
-e 's|^CONFIG_SYSTEM_TRUSTED_KEYS=.*|CONFIG_SYSTEM_TRUSTED_KEYS=""|' \
-e 's|^CONFIG_SYSTEM_REVOCATION_KEYS=.*|CONFIG_SYSTEM_REVOCATION_KEYS=""|' \
.config

Собираем:

docker run -it -v .:/kernel ubuntu:24.04 /bin/bash
apt-get update
apt-get install -y build-essential libncurses-dev bison flex libssl-dev libelf-dev bc dwarves libdw-dev python3 kmod rsync debhelper-compat gawk zstd
cd /kernel
make -j$(nproc) bindeb-pkg LOCALVERSION=-custom

После сборки выходим из контейнера и ставим собранные пакетики ядра:

exit
sudo dpkg -i ../linux-image-*.deb ../linux-headers-*.deb