Skip to main content

A safe terminal UI for managing Linux kernels on apt-based systems

Project description

kerntop

kerntop is a safe terminal user interface for managing Linux kernel packages on Debian- and Ubuntu-based systems. It is designed for servers and SSH sessions: no graphical desktop or graphical libraries are required.

It presents installed and repository-available kernels in an ncdu-style browser, marks and protects the running kernel, and keeps kernel meta packages out of package actions.

[!WARNING] kerntop can run real apt-get transactions when started as root. From a read-only session, press e to restart through sudo. Read the confirmation dialog and preview a transaction before applying it.

Install

Quick start

Run the latest release without installing it permanently:

$ uv tool run kerntop
$ uvenv run kerntop
$ pipx run kerntop

Install with pip

Install from PyPI with Python 3.11 or newer:

$ pip install kerntop

System prerequisite

kerntop uses Debian's python3-apt bindings to read package state. Install the distribution package if it is not already present:

$ sudo apt-get install python3-apt

On systems where pip installs into a virtual environment, kerntop locates supported system site-package directories so it can use the distribution's python-apt binding. If the binding cannot be loaded, kerntop reports the problem rather than falling back to parsing apt command output.

Usage

Start in read-only mode:

$ kerntop

Start with package-action controls enabled:

$ sudo kerntop

From an unprivileged session, press e to restart kerntop through sudo. The application closes before sudo prompts for your password, so the normal terminal authentication flow works over local terminals and SSH sessions.

Use the arrow keys and Enter to browse kernel series and builds. Press h in the application for the complete key reference. The primary actions are:

  • a toggles the recommended and all-variants views.
  • p previews the contextual install or removal with apt-get --simulate in root mode.
  • q queues a contextual install or removal for one combined transaction in root mode.
  • c reviews, simulates, applies, or clears queued package actions.
  • i installs an available kernel image after confirmation in root mode.
  • d removes an installed, non-running kernel image after confirmation in root mode.
  • u reviews unused versioned development headers and kernel-support packages from the main browser.
  • e restarts kerntop with sudo from a read-only session.
  • r refreshes repository indexes and reloads the cache in root mode; it only reloads the local cache in a read-only session.

Safety model

  • The currently running kernel cannot be selected for removal or purge.
  • The browser warns when no non-running fallback kernel is installed, and repeats that warning before removing the final fallback.
  • Kernel meta packages are protected and are never package-action targets.
  • Package changes require root; unprivileged sessions are read-only.
  • Queued changes can be simulated before their final confirmation.
  • Removal and purge actions require explicit confirmation.
  • Header and kernel-support cleanup lists explicit packages and never runs autoremove automatically.

Scope and current limitations

kerntop supports apt-based Debian- and Ubuntu-based systems. It deliberately has a narrow scope:

  • It requires the distribution-provided python3-apt binding.
  • The available-kernel view comes from the local apt cache. Refresh repository indexes with r in root mode when that cache is stale.
  • Kernel installation targets image packages. Headers and kernel-support packages are handled through their separate cleanup workflow.
  • Package previews, queues, and changes require root mode.
  • It never runs autoremove automatically.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

kerntop-0.1.0.tar.gz (17.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

kerntop-0.1.0-py3-none-any.whl (23.0 kB view details)

Uploaded Python 3

File details

Details for the file kerntop-0.1.0.tar.gz.

File metadata

  • Download URL: kerntop-0.1.0.tar.gz
  • Upload date:
  • Size: 17.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.7 {"installer":{"name":"uv","version":"0.10.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"PikaOS","version":"4","id":"nest","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for kerntop-0.1.0.tar.gz
Algorithm Hash digest
SHA256 d6074e6eb453eb0081bc178186bdfdda4ec03db84ae44f73fc4b7ec1ecf5e884
MD5 b9bf1a772806b5506430e63b46d90aee
BLAKE2b-256 0cfa8cb0b1a8a243aafee0ad7afb2e270701918eda9b328d12e569ca4fa5e822

See more details on using hashes here.

File details

Details for the file kerntop-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: kerntop-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 23.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.7 {"installer":{"name":"uv","version":"0.10.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"PikaOS","version":"4","id":"nest","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for kerntop-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 82baf2274a92f0b851541747b56acd9893c93b1a8286c9604856b64b4bb5301e
MD5 12ee64e3885cef25a00679a41732e735
BLAKE2b-256 200afb6da17c309480e343e886d77c64c2baf6da9b7961a178cf7c126d7ac02f

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page