Code Monkey home page Code Monkey logo

mainline's Introduction

Ubuntu Mainline Kernel Installer

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

Main window screenshot

Features

  • 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: https://code.launchpad.net/~cappelikan/+archive/ubuntu/ppa

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

Build

	sudo apt install libgee-0.8-dev libjson-glib-dev libvte-2.91-dev valac aria2 lsb-release aptitude
	git clone https://github.com/bkw777/mainline.git
	cd mainline
	make
	sudo make install

About

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?
    https://github.com/joshuadowding/ukuu/commit/ca03723a7a542cd591246a0f6d6a62bad4fac57c
  • Maybe replace the entire thing with a bash script, maybe with zenity for an optional gui?
    https://github.com/pimlie/ubuntu-mainline-kernel.sh

mainline's People

Contributors

bkw777 avatar cccaballero avatar diegoviola avatar eson57 avatar fitojb avatar goddard avatar hbina avatar huluti avatar kelebek333 avatar leowinterde avatar muzena avatar teejee2008 avatar totalcaesar659 avatar valdi74 avatar vistaus avatar

Stargazers

 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.