берем исходники:
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