Skip to content

Instantly share code, notes, and snippets.

@mmstick
Last active March 11, 2023 04:53
Show Gist options
  • Select an option

  • Save mmstick/8493727 to your computer and use it in GitHub Desktop.

Select an option

Save mmstick/8493727 to your computer and use it in GitHub Desktop.
Asks the user whether they want to install the latest RC or stable, then downloads the correct kernel and installs it.
#!/bin/bash
# Note: This script has been redesigned to support the new lowlatency+generic selection provided by Canonical.
# Therefore, this script only works with kernel 3.14+, unless Canonical decides to provide lowlatency kernels for 3.13.
# Dependency
sudo apt-get install lynx -y
cd /tmp
sudo rm *.deb
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*) kernelURL=$(lynx -dump http://kernel.ubuntu.com/~kernel-ppa/mainline/ | tail -1 | cut -d ' ' -f 3) ;;
n*) kernelURL=$(lynx -dump http://kernel.ubuntu.com/~kernel-ppa/mainline/ | grep -v rc | tail -1 | cut -d ' ' -f 3) ;;
esac
read -p "Do you want the lowlatency kernel?" lowlatency
case "$lowlatency" in
y*) lowlatency=1 ;;
n*) lowlatency=0 ;;
esac
echo "The latest kernel is $(echo $kernelURL | cut -d/ -f 6). The currently installed kernel is $(uname -r)."
sleep 3
# Download Kernel
if [ "$lowlatency" == "0" ]; then
echo "Downloading the latest 64-bit generic kernel."
download generic header
download all header
download generic image
elif [ "$lowlatency" == "1" ]; then
echo "Downloading the latest 64-bit lowlatency kernel."
download lowlatency header
download all header
download lowlatency generic
fi
# 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