Skip to content

imattas/IanOS

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

68 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

IanOS

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 boot animation

IanOS shell ready

Current Status

IanOS currently boots in QEMU and reaches an interactive kernel shell.

Tested functionality includes:

  • Custom two-stage BIOS boot image
  • Native custom UEFI BOOTX64.EFI loader
  • 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

IanOS help command

Build

make image

Useful 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 image

On Windows with LLVM/Clang installed at C:\Program Files\LLVM:

scripts\windows\build.bat

Run

make run

On Windows with QEMU installed at C:\Program Files\qemu:

scripts\windows\run.bat

To boot through the native UEFI loader on Windows:

scripts\windows\run.bat --uefi

On POSIX, the same mode is available with:

./scripts/linux/run.sh --uefi

For shorter local commands, activate the script helpers:

call scripts\init.bat
. scripts/init.sh

Screenshots

Root ls command

Memory command

Run init command

Rootfs version files

Repository Layout

.
|-- 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.

License

IanOS is open source under the MIT License. See LICENSE.

About

Educational x86_64 operating system with custom BIOS and UEFI bootloaders, framebuffer terminal, VFS, userland, and QEMU smoke tests.

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

1 star

Watchers

0 watching

Forks

Packages

 
 
 

Contributors