This is a hobby OS made to learn about OS development as well as experiment with Zig.
The goal is to make a simple kernel targetting the x86_64 architecture with a focus on memory safety.
You'll need the following packages installed (package names are according to nixpkgs):
If you're using Nix, there's a flake.nix setup with a development shell. You can just run nix develop to enter the shell and all your dependencies will be available. See
here for more info.
Once you have the dependencies in your $PATH, run the following:
make run
This should fetch, build the necessary files and run QEMU with the OS.
If you don't want to download and use the OVMF files for UEFI support, you can run:
make run-bios
This will run QEMU with the legacy BIOS.
- Limine bootloader setup
- Framebuffer and fonts
- IDT
- Serial logging
- GDT (remapping)
- Physical Memory Allocator
- Paging
- ACPI Tables
- APIC
- Timer
- Keyboard
- Virtual Memory Allocator
- Heap Allocator
- Scheduler
- Userspace (system calls)
- File system (VFS)
- ELF loader
- Testing (memory safety)
