Skip to content

Instantly share code, notes, and snippets.

@mmstick
Last active March 11, 2023 04:53
Asks the user whether they want to install the latest RC or stable, then downloads the correct kernel and installs it.
#!/bin/bash
cd /tmp
if ! which lynx > /dev/null; then sudo apt-get install lynx -y; fi
if [ "$(getconf LONG_BIT)" == "64" ]; then arch=amd64; else arch=i386; fi
function download() {
wget $(lynx -dump -listonly -dont-wrap-pre $kernelURL | grep "$1" | grep "$2" | grep "$arch" | cut -d ' ' -f 4)
}
# Kernel URL
read -p "Do you want the latest RC?" rc
case "$rc" in
y* | Y*) kernelURL=$(lynx -dump -nonumbers http://kernel.ubuntu.com/~kernel-ppa/mainline/ | tail -1) ;;
n* | N*) kernelURL=$(lynx -dump -nonumbers http://kernel.ubuntu.com/~kernel-ppa/mainline/ | grep -v rc | tail -1) ;;
*) exit ;;
esac
read -p "Do you want the lowlatency kernel?" lowlatency
case "$lowlatency" in
y* | Y*) lowlatency=1 ;;
n* | n*) lowlatency=0 ;;
*) exit ;;
esac
# Download Kernel
if [ "$lowlatency" == "0" ]; then
echo "Downloading the latest generic kernel."
download generic header
download generic image
elif [ "$lowlatency" == "1" ]; then
echo "Downloading the latest lowlatency kernel."
download lowlatency header
download lowlatency image
fi
# Shared Kernel Header
wget $(lynx -dump -listonly -dont-wrap-pre $kernelURL | grep all | cut -d ' ' -f 4)
# Install Kernel
echo "Installing Linux Kernel"
sudo dpkg -i linux*.deb
echo "Done. You may now reboot."
@alothings
Copy link

Hey! Awesome script. Curious though that trying to download latest generic non-rc, and it downloads 4.7.0-XX instead of 4.7..2, which according to kernel.ubuntu is the latest as of 7 days ago. (in the website I just realized that the files are not in date order, so 4.7 appears below 4.7.2 even tho the latter is the latest). Sadly I don't know enough bash to suggest how to improve it.

@harlock59300
Copy link

Hello, how can i get the latest daily ubuntu kernel ?

@ronnocnave
Copy link

Hello. Thanks for this useful script. Is there a reason why the latest stable kernel is not automatically downloaded? For example, latest stable kernel as of today in ~kernel-ppa/mainline/ is 4.9.6. However, on running the script, 4.9.0 is installed. I'm assuming that the script only looks at the 1st two digits of the kernel revision?

@nicman23
Copy link

nicman23 commented Jan 28, 2017

a quick fix is to add grep v[1-9].[1-9].[1-9] in the lynx dump command

edit: before the tail -n1

@CGarces
Copy link

CGarces commented Sep 12, 2017

@alothings @ronnocnave

See at http://kernel.ubuntu.com/~kernel-ppa/mainline/ the page render 4.7.x folder after v4.7.10 folder.

He problem is how the script detect the last valid folder

The solution provided by @nicman23 not looks valid, will ignore folders like 4.13 or 4.13.1

Also http://kernel.ubuntu.com/~kernel-ppa/mainline/?C=M;O=A not works for me

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment