██ ██ ███████ ██ ██ ██ ██ ███ ███ ██████ ███████
██ ██ ██ ██ ██ ██ ██ ████ ████ ██ ██ ██
███████ █████ ██ ██ ██ ██ ██ ████ ██ ██ ██ ███████
██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██
██ ██ ███████ ███████ ██ ██████ ██ ██ ██████ ███████
HeliumOS, a hobby x86_64 operating system whose main goals are learning and testing random ideas from other operating systems.
Picture taken before Rust rewrite, the OS does not look like this yet again.
- 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
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.
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 for the different sub-components of HeliumOS can be found in docs/, albeit it is not always up to date.
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.
This project is only possible because of the following resources: