Скачиваем отсюда: https://kernel.ubuntu.com/~kernel-ppa/mainline/?C=M;O=D
Например, я скачал версию 5.18.4. Устанавливаем ее:
VER=5.18.4 sudo dpkg -i `find ~/Downloads -name "linux*$VER*.deb"`
Ищем старые версии пакетов:
dpkg -l | grep linux-
Например, там обнаруживаются 5.17.7. Чистим их:
VER=5.17.7
dpkg -l | grep -e linux-.*$VER | awk '{print $2}' | sudo DEBIAN_FRONTEND=noninteractive xargs apt-get purge -y
И имеет смысл обновить все доступные firmwares:
cd ~/Documents && git clone --depth 1 https://kernel.googlesource.com/pub/scm/linux/kernel/git/firmware/linux-firmware.git sudo cp ~/Documents/linux-firmware/amdgpu/* /lib/firmware/amdgpu && sudo update-initramfs -k all -u
Иначе - могут быть всякие непонятные ошибки при работе и при сборке initramfs:
W: Possible missing firmware /lib/firmware/amdgpu/...
Иногда скрипты в пакетах новых ядер несовместимы с текущей версией dpkg/apt, что вызывает ошибки типа:
dpkg: error while cleaning up: new linux-image-unsigned-6.19.14-061914-generic package post-removal script subprocess returned error exit status 1
Тогда можно просто удалить эти пакеты так:
VER=6.19.14
dpkg -l | grep -e linux-.*$VER | awk '{print $2}' | sudo DEBIAN_FRONTEND=noninteractive xargs dpkg --purge --force-remove-reinstreq
Будем собирать в контейнере. На хосте выполняю:
VER=v7.1
git clone --depth 1 --branch ${VER} https://github.com/torvalds/linux.git
cp /boot/config-$(uname -r) ./linux/.config
docker run -it --rm -v `pwd`:/build ubuntu:24.04 /bin/bash
Если исходники уже есть:
git fetch --tags
git checkout tags/${VER} -b build-branch
apt update && \ DEBIAN_FRONTEND=noninteractive apt install -y build-essential libncurses-dev bison flex libssl-dev libelf-dev git bc rsync kmod python3 libdw-dev debhelper-compat gawk zstd cd /build/linux # make oldconfig make olddefconfig
Если надо, то можно включить только те модули, которые используем. Эта команда сканирует вывод lsmod и выключает все ненужное (но может выключить поддержку динамически загружаемых модулей типа ppp):
make localmodconfig
scripts/config --set-str SYSTEM_TRUSTED_KEYS "" scripts/config --set-str SYSTEM_REVOCATION_KEYS "" ./scripts/config --enable X86_NATIVE_CPU make -j$(nproc) bindeb-pkg LOCALVERSION=-custom
После сборки выходим из контейнера и ставим собранные пакетики ядра:
exit sudo dpkg -i ../linux-image-*.deb ../linux-headers-*.deb