Skip to content

dywoq/lumen

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

93 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Lumen

Lumen - is a micro-kernel, written in Rust with support of AArch64 architecture and POSIX.

Roadmap

Below, you can see the roadmap:

Stage Languages Progress Time spent
CLI tools/scripts Go/Lua Under work unknown
Bootloader Rust Done 4 days
Kernel Rust Under work unknown
Userland tools/SDK Rust Not ready unknown

Q&A

Why Rust?

Because C/C++ is painful for OS development right now.

Since mid-2025 (when I was 14), I was creating a lot of kernel prototypes, mostly, they were written in C/C++ and used ready boot loaders (like GRUB). However, I met several issues which were following me until I stopped writing C/C++ code for OS development:

  • GRUB. Using it just forces me to follow deprecated/old documentation. Another subtle detail is Multiboot2. You just need to know how much days I spent just to try to draw a simple rectangle to the framebuffer.

  • CMake or other build systems: Historically, C/C++ didn't really have unified standard build system, since WG21 focuses on other RAM-eating stuff. However, you may ask me: "Why do you even bother with it? Just go with CMake", but CMake is a hell for embedded systems. You would need a lot of tricks just to compile .EFI file, which usually needs objcopy. Doing this just makes my head spin.

    The only savior from CMake was Makefile, however, it can become messy too, especially if you want scalable, modular architecture of your OS.

Why AArch64?

The first architecture I was toying with is x86. Since I didn't know UEFI existed (that time), which solves a lot of problems, I tried to manually write bootloader in Assembly. This was the time where I was supposed to give up, but after 6-7 months I could actually get bootloader working and loading kernel normally.

But despite this, I still left from x86 to AArch64, because AArch64 feels much cleaner and has less legacy constraints. Choosing AArch64 finally stopped me from worrying about real/protected/long mode stuff.

Releases

No releases published

Contributors