Skip to content
/ HeliumOS Public

A small hobby operating system to spend my free time on.

License

Notifications You must be signed in to change notification settings

yarml/HeliumOS

Repository files navigation

██   ██ ███████ ██      ██ ██    ██ ███    ███  ██████  ███████
██   ██ ██      ██      ██ ██    ██ ████  ████ ██    ██ ██
███████ █████   ██      ██ ██    ██ ██ ████ ██ ██    ██ ███████
██   ██ ██      ██      ██ ██    ██ ██  ██  ██ ██    ██      ██
██   ██ ███████ ███████ ██  ██████  ██      ██  ██████  ███████

HeliumOS

HeliumOS, a hobby x86_64 operating system whose main goals are learning and testing random ideas from other operating systems.

HeliumOS Screenshot

Picture taken before Rust rewrite, the OS does not look like this yet again.

Index

Roadmap

  • Physical memory management
  • Virtual memory management
  • Interrupts
  • Kernel heap
  • APIC
  • User space processes
    • System calls basics
    • Scheduling
    • Build System
    • Proc macro for system calls
  • Basic device drivers
    • Framebuffer
    • Keyboard
    • Mouse
  • System Call API
  • Filesystems
  • Disk
  • Power Management

Getting HeliumOS

As HeliumOS is hosted in github you can clone the sources with git using:

git clone https://github.com/yarml/HeliumOS.git.

Otherwise you can download the sources in a zip file.

Building HeliumOS

The build system is completely containerized, meaning as long as you have Docker installed on your system, you will not need to manage further dependencies.

To build the kernel, run docker compose run build. Note however, that in the first run, it will download and compile binutils which can be resource heavy for some users. The container for the build machine is (currently) 2.17Gib.

The output of the above command are the files in the out/ directory, the most interesting of which is out/helium.img, which can be burned on a USB stick, or tossed into a VM.

To ease the debugging of the development, you can run a Qemu in container alongside gdb, and see all debug output of the operating system with docker compose run debug. Recommendation: Do this on a large enough terminal window.

Documentation

Documentation for the different sub-components of HeliumOS can be found in docs/, albeit it is not always up to date.

3rd Party tools

While the code for HeliumOS is completely original, transforming this source code into binaries that can boot on bare metal is a task which is handled by a number of 3rd party tools developped indepedently from HeliumOS:

  • Bootboot: Boot HeliumOS from UEFI environment.
  • Qemu: Emulate an x86-64 PC.
  • Edk2: Provide binaries for UEFI for Qemu.
  • GNU Binutils: ELF file manipulation programs.
  • Rust: Programming Language.
  • mkbootimg: Make bootable images from the initrd and kernel binary.

Resources

This project is only possible because of the following resources: