Hi everyone,
I'd like to share NaoixOS, a bare-metal x86 hobby kernel I've been building in my free time. The twist: I don't own a computer. Everything is cross-compiled from an Android phone (itel A56, Android 9) using Termux, with Clang/LLD targeting i686-elf.
Repo: https://github.com/jackidevz/NaoixOS
Current state: v0.6.8-rc1
What's implemented so far:
- Dual boot path: Multiboot2 via GRUB, and a custom legacy bootloader (stage1 + stage2) for environments like the Limbo x86 PC emulator
- GDT setup
- IDT + ISRs for interrupt/exception handling
- PIC remapping
- VGA text-mode driver (80x25, color support)
- PS/2 keyboard driver (auto-detects Set 1 / Set 2 scancodes)
- Serial port driver (COM1, for debugging)
- An interactive shell called NaoSH, with a few built-in commands and a couple of easter eggs
- A minimal freestanding string library
What's missing
- No memory management (no paging, no real heap allocator)
- No filesystem support
- No multitasking/scheduler
- No real storage drivers
- A known CMOV failure on virtual 486/Pentium CPUs in QEMU, intentionally left unfixed since the kernel targets newer CPUs
- No Shutdown/reboot command to shut it down (the only way i shutdown ut by shutting down the entire VM
It's only ever been tested in QEMU across a range of CPU models. I have never tested it on real hardware, and I'm upfront about that risk in the README.
Screenshots:
I'm a high school student working on this between studying for my baccalaureate, so updates are irregular, but I'm sharing it here since I'd value any feedback, criticism, or pointers from people who've been down this road before. Happy to answer questions about the build setup too, since building a cross-compiler toolchain and doing all of this from a phone came with its own share of unusual problems.
Thanks for reading