From: Tulio A M Mendes Date: Sat, 14 Mar 2026 14:11:44 +0000 (-0300) Subject: docs: mark Tier 6E (USTAR+LZ4 InitRD) as DONE — update all documentation X-Git-Url: https://projects.tadryanom.me/docs/static/gitweb.js?a=commitdiff_plain;h=a316aa824e9164f59b380ed11667bf40c8d95fff;p=AdrOS.git docs: mark Tier 6E (USTAR+LZ4 InitRD) as DONE — update all documentation - 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 --- diff --git a/README.md b/README.md index 081f0c4..cf20df5 100644 --- a/README.md +++ b/README.md @@ -204,7 +204,7 @@ QEMU debug helpers: 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. @@ -224,6 +224,6 @@ Rump Kernel integration is in progress — prerequisites (condition variables, T - `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) diff --git a/docs/POSIX_ROADMAP.md b/docs/POSIX_ROADMAP.md index b5dea81..f1520d9 100644 --- a/docs/POSIX_ROADMAP.md +++ b/docs/POSIX_ROADMAP.md @@ -274,6 +274,7 @@ Notes: |---------|--------|-------| | `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 @@ -345,7 +346,7 @@ Notes: ## 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~~ ✅ @@ -444,6 +445,7 @@ Notes: 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~~ ✅ --- @@ -460,4 +462,4 @@ Potential future enhancements: | **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 | diff --git a/docs/SUPPLEMENTARY_ANALYSIS.md b/docs/SUPPLEMENTARY_ANALYSIS.md index 453816f..b6aef01 100644 --- a/docs/SUPPLEMENTARY_ANALYSIS.md +++ b/docs/SUPPLEMENTARY_ANALYSIS.md @@ -216,7 +216,7 @@ Unix-like, POSIX-compatible operating system. 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) @@ -270,7 +270,7 @@ for the full list. All previously identified Tier 1/2/3 gaps have been resolved. | 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** | diff --git a/docs/TIER6_PLAN.md b/docs/TIER6_PLAN.md index 8978aa5..34d9f8e 100644 --- a/docs/TIER6_PLAN.md +++ b/docs/TIER6_PLAN.md @@ -113,10 +113,12 @@ for ATA and E1000). No audio support. --- -## 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 @@ -182,7 +184,7 @@ Binutils 2.42) and Newlib port are complete. | ~~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 | @@ -196,7 +198,7 @@ Binutils 2.42) and Newlib port are complete. | 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 |