Home

Awesome

Huge stylish northport banner

All builds CI badge Latest Release Version

This repo contains the northport kernel, some support libraries and a collection of drivers for the kernel to use. The kernel is booted via the limine protocol on 64-bit platforms, and has support for generic x86_64 and riscv64 machines, as well as the qemu virt-m68k virtual machine.

Pre-built isos are available with each release, and instructions for building it from source yourself are available in docs/Building.md. Further documentation is available in the manual, which can generated by running make docs in the repository root. Please note that the documentation is currently quite outdated for the current source code.

Project Goals

  1. To build a usable, extensible and relatively complete kernel.
  2. Support for multiple architectures: initial targets were x86_64 and riscv64, but m68k has already been added. More to come!
  3. Be completely self hosting, including cross compiling the system.
  4. Legible code and useful documentation.
  5. Usable on both virtual machines and real hardware.

An extended goal (previously goal #5) is to add a comfortable user experience: a window manager, basic programs like a text editor and file explorer. This has been moved to a separate project.

Current Project Features

Kernel:

Glorious Screenshots

02/06/2024: General state of the kernel after incremental changes.

02/06/2024: Kernel panic, showing symbol lookup for kernel and loaded drivers.

<details> <summary>Older Screenshots</summary>

02/06/2024: Driver tree being shown after booting on my framework 13

14/02/2024: Status bar showing virtual memory and driver statistics

14/02/2024: Device node tree being printed shortly after adding the IO manager.

11/10/2023: Kernel panic while loading a malformed driver from the initdisk.

20/11/2022: x86 and riscv kernels running side by side in qemu.

</details>

Related Projects

This is a complete rewrite of the original. If you're looking for that, it's available on the archive-2022-version branch.