]> Projects (at) Tadryanom (dot) Me - AdrOS.git/summary
 
descriptionAdrOS - A Unix-like Operating System for hobby/academic study.
last changeWed, 3 Jun 2026 05:52:27 +0000 (02:52 -0300)
homepage URLhttps://adros-project.tadryanom.me/
content tags
shortlog
22 hours ago Tulio A M Mendesfix: add missing SYS_SETREUID/SYS_SETREGID to ulibc... master
22 hours ago Tulio A M Mendessecurity: document getlogin/who as placeholder (Fase 5)
22 hours ago Tulio A M Mendessecurity: return ENAMETOOLONG on path truncation (Fase 5)
22 hours ago Tulio A M Mendessecurity: add explicit field width support to scanf...
22 hours ago Tulio A M Mendessecurity: fix fcntl/openat varargs handling (Fase 3)
22 hours ago Tulio A M Mendessecurity: add retry loop to mkstemp for EEXIST collisio...
22 hours ago Tulio A M Mendessecurity: add refcount to overlayfs wrapper nodes ...
22 hours ago Tulio A M Mendessecurity: handle copy_to_user failures in socket syscal...
22 hours ago Tulio A M Mendessecurity: remove truncate fallback, return ENOSYS for...
22 hours ago Tulio A M Mendessecurity: implement O_NOFOLLOW -ELOOP return (Fase 3)
22 hours ago Tulio A M Mendessecurity: implement POSIX access() with vfs_check_permi...
22 hours ago Tulio A M Mendessecurity: fix VFS permissions and execve execute check...
22 hours ago Tulio A M Mendessecurity: fix rumpuser_free alignment handling with...
22 hours ago Tulio A M Mendessecurity: add SMP locking to tmpfs (Fase 2)
22 hours ago Tulio A M Mendessecurity: remove hardcoded fixed VAs, use hal_mm_kernel...
22 hours ago Tulio A M Mendessecurity: add user_range_ok validation for futex uaddr...
...
heads
22 hours ago master
readme

AdrOS

Overview

AdrOS is a Unix-like, POSIX-compatible, multi-architecture operating system developed for research and academic purposes. The goal is to build a secure, monolithic kernel from scratch, eventually serving as a platform for security testing and exploit development.

Architectures Targeted

Technical Stack

Features

Boot & Architecture

Memory Management

Process & Scheduling

Syscalls (x86, int 0x80 + SYSENTER)

TTY / PTY

Filesystems (8 types)

Networking

Drivers & Hardware

Boot & Kernel Infrastructure

Userland

Dynamic Linking

Threads & Synchronization

Security

Testing

Running

x86 (primary)

make ARCH=x86 iso
make ARCH=x86 run

ARM64 (QEMU virt)

make ARCH=arm
make run-arm

RISC-V 64 (QEMU virt)

make ARCH=riscv
make run-riscv

MIPS32 (QEMU Malta)

make ARCH=mips
make run-mips

QEMU debug helpers: - make ARCH=x86 run QEMU_DEBUG=1 - make ARCH=x86 run QEMU_DEBUG=1 QEMU_INT=1

Status

See POSIX_ROADMAP.md for a detailed checklist.

All 31 planned POSIX tasks are complete, plus 60 additional features (91 total). The kernel has 141 syscalls with 124 tested (87.9% coverage) by the 120 smoke tests. The kernel covers ~98% of the core POSIX interfaces needed for a practical Unix-like system. All 120 smoke tests, 152 battery checks, and 212 host tests pass clean. ARM64, RISC-V 64, and MIPS32 boot on QEMU.

Rump Kernel integration is in progress — prerequisites (condition variables, TSC nanosecond clock, IRQ chaining) are implemented and the rumpuser hypercall scaffold is in place.

Syscall Test Coverage

Metric Value
Syscalls implemented 141
Syscalls tested by fulltest 124 (87.9%)
Syscalls without test 17 (12.1%)
Smoke tests 120
Battery checks 152
Host tests 212

17 untested syscalls: shmctl, set_thread_area (indirect via clone), accept, connect, send, recv, sendto, recvfrom, fdatasync, getaddrinfo, sendmsg, recvmsg, aio_suspend, setsockopt, getsockopt, getpeername, wait4

Remaining POSIX Gaps

For 100% POSIX compliance, the following categories are still missing: - pthreads complete — mutex/cond/rwlock exist in ulibc but need kernel-level thread lifecycle, cancellation, per-thread errno via TLS - TCP loopback — connect()/accept() hang in QEMU; network I/O tests disabled - Filesystem POSIX — mkfifo/mknod, fchmod/fchown/lchown, fchdir, sync/syncfs, statfs/fstatfs, readlinkat/mkdirat/fchmodat - Process/credentials — chroot, getgroups/setgroups, saved setuid, ptrace, nice/getpriority/setpriority - POSIX timers — timer_create/timer_delete/timer_settime/timer_gettime, clock_settime/clock_getres/clock_nanosleep - IPC — shmctl IPC_RMID/IPC_STAT, unnamed semaphores (sem_init/sem_destroy), mq_notify/mq_getattr/mq_setattr - Memory — mremap, msync, mincore - Signals — sigwait/sigwaitinfo/sigtimedwait

Directory Structure