Custom hobby OS kernel built from scratch.
Install dependencies (Ubuntu / WSL):
sudo apt update
sudo apt install -y build-essential nasm xorriso mtools qemu-system-x86 git curlGenerate key:
ssh-keygen -t ed25519 -C "[email protected]"Get your public key:
cat ~/.ssh/id_ed25519.pubAdd it to:
GitHub → Settings → SSH and GPG keys → New SSH key
Test it:
ssh -T [email protected]git clone [email protected]:Darkeye7778/obsidia-os.git
cd obsidia-osLimine is automatically downloaded by the Makefile if the limine/ folder is missing.
No manual Limine setup is required.
To build and run:
make clean
make rungit clone [email protected]:Darkeye7778/obsidia-os.git
cd obsidia-os
git clone https://github.com/limine-bootloader/limine.git --branch v7.x-binary --depth=1Install dependencies (see Requirements).
Before working:
git pullAfter making changes:
git add .
git commit -m "your message"
git pushMachine A → push
Machine B → pull
Machine B → push
Machine A → pull
Always run git pull before editing.
- Framebuffer rendering
- Text rendering (8x8 font)
- Console with cursor + editing
- Keyboard input (modifiers, arrows)
- Line editing (in progress)
- Runs in QEMU
- Uses Limine bootloader
- Freestanding kernel (no libc)
- Add Makefile build system - Done
- Add framebuffer text rendering - Done
- Add on-screen console - Done
- Add keyboard input - Done
- Add memory manager - Done
- Request Limine memory map
- Print memory map regions
- Calculate total usable memory
- Build physical memory manager structs
- Mark usable pages as free
- Reserve kernel / bootloader / framebuffer memory
- Implement pmm_alloc_page()
- Implement pmm_free_page()
- Add meminfo shell command
- Add basic heap allocator groundwork
- Add initramfs support - Done
- Add simple shell - Updated
- Add filesystem read support - Done
- Make personal Obsidia Archive Format (Remove TAR) - In Progress
- Add filesystem write support - TBD
- Add text editor - TBD
- Add user program support - TBD
- Add compiler toolchain groundwork - TBD