Skip to content


Switch branches/tags
This branch is 1 commit ahead, 130 commits behind bkw777:master.

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time

Ubuntu Mainline Kernel Installer

This is a tool for installing the latest mainline Linux kernel on Ubuntu-based distributions.

Main window screenshot


  • Fetches list of available kernels from Ubuntu Mainline PPA
  • Optionally watches and displays notifications when a new kernel update is available
  • Downloads and installs packages automatically
  • Display available and installed kernels conveniently
  • Install/remove kernels from gui
  • For each kernel, the related packages (headers & modules) are installed or removed at the same time

Downloads & Source Code

mainline is written using Vala and GTK3. Source code and binaries are available from the GitHub project page.

cappelikan maintains a PPA at:

	sudo add-apt-repository ppa:cappelikan/ppa
	sudo apt update
	sudo apt install mainline


	sudo apt install libgee-0.8-dev libjson-glib-dev libvte-2.91-dev valac aria2 lsb-release aptitude
	git clone
	cd mainline
	sudo make install


mainline is a fork of ukuu

The original author stopped maintaining the original GPL version of ukuu and switched to a paid license for future versions.

Enhancements / Deviations from the original author's final GPL version

  • (from stevenpowerd) Options controlling the internet connection check
  • (from cloyce) Option to include or hide pre-release kernels
  • Changed name from "ukuu" to "mainline"
  • Removed all GRUB options
  • Removed all donate buttons, links, dialogs
  • Remove source cruft

Development Plans / TODO

  • More efficient downloading & caching of info about available kernels
    Stop consuming over 5GB with kernel packages in ~/.cache/
    Until then, as a work-around, mainline --clean-cache deletes the cache
  • Better (more automatic) initial sizes for the window and the columns in the kernel list display so you don't have to manually expand them
    ...or at least, remember the sizes the user last set.
  • Clean up build warnings
  • Clean up run-time GTK warnings
  • Make http client configurable (curl/wget/other)
    Currently uses aria2c.
    Maybe just by moving the aria2c actions into an external script in ~/.config, where the user could do anything they want, rsync, bittorrent, dummy/fake.
  • Reduce dependencies,
    Do we really need aptitude?
    libsoup or other library instead of shell commands for downloads?
  • Customizable appearance, at least colors
  • Option to specify kernel variant (generic, lowlatency, snapdragon, etc...)
  • Improve the annoying pkexec behavior.
    It would be nicer to run pkexec (or lxqt-sudo, etc) one time for the whole session, and only have to enter a password once, instead of once per action.
    But currently, if you actually do that, it creates files in the users home directory that are owned by root, so don't do that.
    This might be addressed by getting the policy kit file working.
  • Write a man page
  • Make all the terminal & child processes more robust.
    It's always really been pretty 9/10ths-baked.
    Kernel downloads fail, but work if you just do it again.
    dpkg installs fail, but work if you just do it again.
    Populating the main window fails, but works if you just do it again.
    Determining what is currently installed & running fails, but works if you just do it again
    ...that is really kind of inexcusable crap and could all be a lot better.
  • More careful temp file / temp working dir management.
    It does avoidable dumb things like creating dirs/files as one user and then can't remove or use them later as another user.
    Maybe do clean_cache() after every action?
  • Maybe replace the entire thing with a bash script, maybe with zenity for an optional gui?


A continuation of the free version of ukuu.







No packages published


  • Vala 96.3%
  • Makefile 3.6%
  • Shell 0.1%