- TIER6_PLAN.md: 6E marked DONE (mkinitrd produces USTAR+LZ4, kernel parses both)
- POSIX_ROADMAP.md: USTAR initrd format added as feature 91, removed from remaining work
- SUPPLEMENTARY_ANALYSIS.md: boot flow updated to USTAR+LZ4, feature count 91
- README.md: feature count updated to 91, mkinitrd description updated
Tests: 103/103 smoke, 64/64 host, cppcheck clean
See [POSIX_ROADMAP.md](docs/POSIX_ROADMAP.md) for a detailed checklist.
-**All 31 planned POSIX tasks are complete**, plus 59 additional features (90 total). The kernel covers **~98%** of the core POSIX interfaces needed for a practical Unix-like system. All 102 smoke tests, 16 battery checks, and 115 host tests pass clean. ARM64, RISC-V 64, and MIPS32 boot on QEMU.
+**All 31 planned POSIX tasks are complete**, plus 60 additional features (91 total). The kernel covers **~98%** of the core POSIX interfaces needed for a practical Unix-like system. All 102 smoke tests, 16 battery checks, and 115 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.
- `user/doom/` — DOOM port (doomgeneric engine + AdrOS platform adapter)
- `user/ulibc/` — Minimal C library (`printf`, `malloc`, `string.h`, `errno.h`, `pthread.h`, `signal.h`, `stdio.h`, `stdlib.h`, `ctype.h`, `math.h`, `sys/mman.h`, `sys/ioctl.h`, `sys/uio.h`, `time.h`, `linux/futex.h`)
- `tests/` — Host unit tests, smoke tests, GDB scripted checks
-- `tools/` — Build tools (`mkinitrd`)
+- `tools/` — Build tools (`mkinitrd` — produces USTAR archives with LZ4 Frame compression)
- `docs/` — Documentation (POSIX roadmap, audit report, supplementary analysis, testing plan)
- `third_party/lwip/` — lwIP TCP/IP stack (vendored)
|---------|--------|-------|
| `pivot_root` | [x] | Swap root filesystem; mounts old root at specified path |
| LZ4 initrd decompression | [x] | LZ4 frame decompression for compressed initrd images (`src/kernel/lz4.c`) |
+| USTAR initrd format | [x] | `tools/mkinitrd.c` produces standard USTAR archives; kernel parses 512-byte USTAR headers |
## 12. Dynamic Linking
## Implementation Progress
-### All 31 planned tasks completed ✅ + 59 additional features (90 total)
+### All 31 planned tasks completed ✅ + 60 additional features (91 total)
**High Priority (8/8):**
1. ~~`raise()` em ulibc~~ ✅
88. ~~Host utility test harness (68 cross-platform tests)~~ ✅
89. ~~Native toolchain (GCC 13.2 + Binutils 2.42, Canadian cross for i686-adros)~~ ✅
90. ~~`mount` syscall — runtime filesystem mounting~~ ✅
+91. ~~USTAR InitRD format with LZ4 Frame compression~~ ✅
---
| **Full SMP scheduling** | Move processes to AP runqueues; per-CPU dispatching (infrastructure in place) |
| **ARM64/RISC-V/MIPS subsystems** | PMM, VMM, scheduler, syscalls for non-x86 |
| **Intel HDA audio** | DMA ring buffer audio driver |
-| **USTAR initrd format** | Alternative to custom binary format (LZ4 decompression already implemented) |
+| ~~**USTAR initrd format**~~ | ✅ Implemented — USTAR + LZ4 Frame format |
This score reflects that AdrOS has a **mature and feature-rich kernel** with virtually
all core POSIX subsystems implemented and working end-to-end. All 31 planned tasks
-have been completed, plus 44 additional features (75 total). See `POSIX_ROADMAP.md`
+have been completed, plus 60 additional features (91 total). See `POSIX_ROADMAP.md`
for the full list. All previously identified Tier 1/2/3 gaps have been resolved.
### What AdrOS Already Has (Strengths)
| Dimension | Supplementary Material | AdrOS Current | Verdict |
|-----------|----------------------|---------------|----------|
-| **Boot flow** | GRUB → Stub (LZ4) → Kernel → USTAR InitRD | GRUB → Kernel → Custom InitRD → OverlayFS | Both valid; AdrOS is simpler |
+| **Boot flow** | GRUB → Stub (LZ4) → Kernel → USTAR InitRD | GRUB → Kernel → USTAR+LZ4 InitRD → OverlayFS | **Comparable** |
| **Memory architecture** | PMM + Slab + CoW + Zero-Copy DMA | PMM (spinlock+refcount+contig) + Slab + CoW + Heap (64MB) + SMEP/SMAP + PAE/NX + ASLR + Guard pages + vDSO + Zero-copy DMA | **AdrOS is more advanced** |
| **Scheduler** | O(1) with bitmap + active/expired arrays | O(1) with bitmap + active/expired, 32 levels, decay-based priority, per-CPU infra | **Comparable** |
| **VFS** | USTAR + FAT (planned) | tmpfs + devfs + overlayfs + diskfs + persistfs + procfs + FAT12/16/32 + ext2 | **AdrOS is more advanced** |
---
-## 6E. USTAR InitRD Format (Priority: Low, Effort: Small — 2-3 days)
+## 6E. USTAR InitRD Format (Priority: Low, Effort: Small — 2-3 days) — ✅ DONE
-**Current state:** Custom binary initrd format with LZ4 decompression. Works well but
-non-standard.
+**Current state:** Fully implemented. `tools/mkinitrd.c` produces USTAR archives
+compressed with LZ4 Frame format. Kernel (`src/drivers/initrd.c`) detects LZ4 magic,
+decompresses via `lz4_decompress_frame()`, and parses standard USTAR 512-byte headers.
+Backward-compatible with legacy LZ4B format.
### Steps:
1. **USTAR parser** — Parse 512-byte USTAR headers in initrd blob
| ~~2~~ | ~~**6F** Minor POSIX gaps~~ | ✅ DONE |
| ~~3~~ | ~~**6A** Full SMP~~ | ✅ DONE (commit 1374a6f) |
| 4 | **6C** Rump Kernel | Unlocks USB, better drivers |
-| 5 | **6E** USTAR initrd | Small, improves developer experience |
+| ~~5~~ | ~~**6E** USTAR initrd~~ | ✅ DONE |
| 6 | **6D** HDA Audio | Nice-to-have |
| 7 | **6B** Multi-arch | Very large, low urgency |
| 6B | Multi-arch (ARM64/RV/MIPS) subsystems | 4-8 weeks | Medium |
| 6C | Rump Kernel integration | 4-6 weeks | Medium |
| 6D | Intel HDA audio driver | 1-2 weeks | Low |
-| 6E | USTAR initrd format | 2-3 days | Low |
+| 6E | USTAR initrd format | ✅ DONE | Low |
| 6F | Minor POSIX gaps (madvise, mntent, utmp) | ✅ DONE | Low |
| 6G | Bash & Busybox ports | ✅ DONE | High |