Skip to content

sudw1n/os401b

Repository files navigation

OS401b

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.

screenshot

How to Run

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.

Roadmap

  • 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)

About

A lightweight and memory-safe kernel built with Zig.

Resources

License

Stars

Watchers

Forks

Languages