Иногда появляется необходимость в установке непредусмотренной создателями версии ядра в Ubuntu. Например, поставить ядро версии 5.10 на Ubuntu 22.04 (по умолчанию там 5.15), т.е. сделать даунгрейд/апгрейд.
Это не сложно, но нужно учитывать что не каждое ядро у вас может заработать.
Качаем скрипт и делаем его исполняемым:
wget https://raw.githubusercontent.com/pimlie/ubuntu-mainline-kernel.sh/master/ubuntu-mainline-kernel.sh chmod +x ubuntu-mainline-kernel.sh
Ищем нужную нам версию ядра:
./ubuntu-mainline-kernel.sh -r | grep 5.10
Устанавливаем:
./ubuntu-mainline-kernel.sh -i v5.10.0
Проверяем что ядро появилось в списке доступных:
grep 'menuentry \|submenu ' /boot/grub/grub.cfg | cut -f2 -d "'"
Вносим изменения в /etc/default/grub, строку «GRUB_DEFAULT=0» приводим к виду:
GRUB_DEFAULT="Advanced options for Ubuntu>Ubuntu, with Linux 5.10.0-051000-generic"
Обновляем:
update-grub
Перезагружаем сервер:
reboot now
Проверяем:
uname -r
Для этого нужно строки
if [ $check_signature -eq 1 ]; then if ! gpg --list-keys ${ppa_key} >$debug_target 2>&1; then logn "Importing kernel-ppa gpg key " if gpg --keyserver hkp://keyserver.ubuntu.com:80 --recv ${ppa_key} >$debug_target 2>&1; then log "ok" else logn "failed" warn "Unable to check signature" check_signature=0 fi fi if [ $check_signature -eq 1 ]; then if gpg --verify CHECKSUMS.gpg CHECKSUMS >$debug_target 2>&1; then log "Signature of checksum file has been successfully verified" else err "Abort, signature of checksum file is NOT OK" exit 4 fi fi fi
заменить примерно так:
if [ $check_signature -eq 1 ]; then echo "PPA Key: ${ppa_key}" if ! gpg --keyserver-options http-proxy=http://127.0.0.1:3128 --list-keys ${ppa_key} >$debug_target 2>&1; then logn "Importing kernel-ppa gpg key " if gpg --keyserver-options http-proxy=http://127.0.0.1:3128 --keyserver hkp://keyserver.ubuntu.com:80 --recv ${ppa_key} >$debug_target 2>&1; then log "ok" else logn "failed" warn "Unable to check signature" check_signature=0 fi fi if [ $check_signature -eq 1 ]; then if gpg --keyserver-options http-proxy=http://127.0.0.1:3128 --verify CHECKSUMS.gpg CHECKSUMS >$debug_target 2>&1; then log "Signature of checksum file has been successfully verified" else err "Abort, signature of checksum file is NOT OK" exit 4 fi fi fi
Вместо http://127.0.0.1:3128 нужно прописать адрес вашего прокси-сервера.