IanOS is a small educational x86_64 operating system with a custom BIOS boot path, long-mode kernel, framebuffer terminal, VFS/initrd/rootfs support, ring-3 ELF userland, a tiny libc, scheduler tests, storage probing, PCI/e1000 networking, and QEMU smoke coverage.
IanOS currently boots in QEMU and reaches an interactive kernel shell.
Tested functionality includes:
- Custom two-stage BIOS boot image
- Native custom UEFI
BOOTX64.EFIloader - x86_64 long mode transition and kernel ELF loading
- Initrd loading and read-only IanFS root filesystem image
- Framebuffer terminal with serial logging and PS/2 keyboard input
- Physical page allocator, kernel heap, VMM, and demand-paged user memory
- IDT exceptions, APIC/IOAPIC routing, ACPI discovery, and SMP inventory
- Scheduler, kernel threads, process table, and ring-3 user process state
- Basic syscall layer, userland ELF loading, libc, init, shell, and utilities
- VFS paths under
/system, compatibility/bin, and device nodes - PCI enumeration, ATA storage probe, e1000 detection, and UDP send path
- Kernel/user self-tests and QEMU screenshot capture workflow
make imageUseful POSIX developer commands include make smoke, make smoke-full,
make smoke-matrix, make unit, make qemu, make qemu-gdb, make analyze,
make clang-analyze, make cppcheck, make check-format, and make clean.
The POSIX build defaults to x86_64-unknown-elf. Override it intentionally
with IANOS_TARGET, for example:
IANOS_TARGET=x86_64-unknown-elf make imageOn Windows with LLVM/Clang installed at C:\Program Files\LLVM:
scripts\windows\build.batmake runOn Windows with QEMU installed at C:\Program Files\qemu:
scripts\windows\run.batTo boot through the native UEFI loader on Windows:
scripts\windows\run.bat --uefiOn POSIX, the same mode is available with:
./scripts/linux/run.sh --uefiFor shorter local commands, activate the script helpers:
call scripts\init.bat. scripts/init.sh.
|-- src/
| |-- boot/ BIOS bootloader stages
| |-- kernel/ freestanding kernel, drivers, fs, mm, sched, net, syscalls
| `-- user/ init, shell, user programs, syscall headers, libc/libk
|-- images/
| |-- initramfs/ boot initrd input tree merged with built user ELFs
| `-- rootfs/ source files copied into the generated IanFS rootfs image
|-- scripts/
| |-- init.bat cmd.exe PATH helper for Windows script shortcuts
| |-- init.sh POSIX PATH helper for Linux script shortcuts
| |-- linux/ POSIX build, run, clean, smoke, and image scripts
| `-- windows/ batch entry points plus PowerShell tools under ps/
|-- docs/ technical documentation and current screenshots
|-- tests/ focused local test entry points
`-- .github/ issue templates, labels, CODEOWNERS, and CI workflows
images/ is intentionally kept outside src/: these trees are packaged as OS
filesystem data, not compiled code. images/initramfs/ feeds the boot initrd;
images/rootfs/ feeds the attached IanFS disk image.
See docs/status/feature-status.md for the current implementation status, and ROADMAP.md for the active implementation plan.
IanOS is open source under the MIT License. See LICENSE.






