Скачиваем отсюда: 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
Для версии 7.3 мне понадобилось примерно 45Gb дискового пространства. Будем собирать в контейнере. На хосте выполняю:
VER=v7.3
git clone --depth 1 --branch ${VER} https://github.com/torvalds/linux.git
Если исходники уже есть:
git fetch --tags
git checkout tags/${VER} -b build-branch
Копируем текущий конфиг ядра и запускаем контейнер для сборки и ставим все что нужно:
cp /boot/config-$(uname -r) ./linux/.config docker run -it --rm -v `pwd`:/build ubuntu:26.04 /bin/bash 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 scripts/config --disable CONFIG_DEBUG_INFO && \ scripts/config --disable DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT && \ scripts/config --set-str SYSTEM_TRUSTED_KEYS "" && \ scripts/config --set-str SYSTEM_REVOCATION_KEYS "" && \ ./scripts/config --enable X86_NATIVE_CPU # interactive configuration options setup # make oldconfig # Fully automated configuration make olddefconfig
Если надо, то можно включить только те модули, которые используем. Эта команда сканирует вывод lsmod и выключает все ненужное (но может выключить поддержку динамически загружаемых модулей типа ppp):
make localmodconfig
Собираем:
make -j$(nproc) bindeb-pkg LOCALVERSION=-custom
После сборки выходим из контейнера и ставим собранные пакетики ядра:
exit sudo dpkg -i ../linux-image-*.deb ../linux-headers-*.deb