docs: readme and roadmap
This commit is contained in:
@@ -4,6 +4,39 @@
|
||||
<img src='assets/logo.png'>
|
||||
</p>
|
||||
|
||||
Just a hobby, won't be big and professional like Linux
|
||||
> "Just a hobby, won't be big and professional like Linux."
|
||||
> — *Linus Torvalds (and now me)*
|
||||
|
||||
Really WIP. And really just a hobby.
|
||||
**termOS** is a 64-bit, UNIX-hating, bespoke operating system written from scratch in C.
|
||||
|
||||
Current Kernel: **Dewar** (v0.5.x)
|
||||
|
||||
## Philosophy
|
||||
|
||||
- **Zero Bloat:** We don't port libraries; we write them.
|
||||
- **Custom Everything:** Why use ELF when you can invent **HOT!**? Why use GRUB when you can write your own bootloader (soon)?
|
||||
|
||||
## Features (v0.5.2)
|
||||
|
||||
- **Architecture:** x86_64 / UEFI.
|
||||
- **Memory Management:** PMM (Bitmap), VMM (PML4 + Higher Half Direct Map), Kernel Heap.
|
||||
- **Multitasking:** Preemptive scheduler with Round Robin.
|
||||
- **Isolation:** Ring 0 (Kernel) / Ring 3 (Userspace) protection.
|
||||
- **Binaries:** Custom **HOT!** executable format (parsed via custom `elf2hot` toolchain).
|
||||
- **Filesystem:** VFS abstraction with CPIO Initramfs support.
|
||||
- **Graphics:** `ShitGUI` (yes, really) linear framebuffer driver.
|
||||
- **Shell:** `ksh` (Kernel Shell) -> transitioning to userspace `ush`
|
||||
|
||||
## 🔥 The HOT! Format
|
||||
|
||||
termOS uses its own executable format called **HOT!**.
|
||||
Because parsing ELF headers is too mainstream. HOT! is a flat, segment-based format designed specifically for the Dewar kernel loader.
|
||||
Made only because ELF is *Not-invented-here*
|
||||
|
||||
## Roadmap
|
||||
|
||||
See [ROADMAP.md](ROADMAP.md) for the detailed plan of world domination (or at least self-hosting).
|
||||
|
||||
## License
|
||||
|
||||
**GPL-3.0-or-later**.
|
||||
+110
@@ -0,0 +1,110 @@
|
||||
# termOS Roadmap
|
||||
|
||||
## Legend
|
||||
- ✅ **Done**: Implemented and working.
|
||||
- 🚧 **WIP**: Currently under active development.
|
||||
- 📅 **Planned**: Scheduled for future releases.
|
||||
- 🤔 **Vision**: Long-term goals for v1.0.
|
||||
|
||||
---
|
||||
|
||||
## Current Status: v0.5.2 (Alpha)
|
||||
*Where we are now.*
|
||||
- **Core:** Ring 0 / Ring 3 isolation implemented.
|
||||
- **Mem:** PMM (bitmap), VMM (PML4, HHDM).
|
||||
- **Exec:** Custom **HOT!** executable format (static loader).
|
||||
- **FS:** VFS + Initramfs (CPIO, read-only).
|
||||
- **User:** Basic jump to userspace (hardcoded stack, no heap yet).
|
||||
|
||||
---
|
||||
|
||||
## 📅 Phase 1
|
||||
*Goal: Transform the decorative userspace into a functional mechanism.*
|
||||
|
||||
### v0.5.3 (Immediate Priority)
|
||||
*Focus: Lifecycle & Memory*
|
||||
- [ ] **Syscall: Memory Management**
|
||||
- Implement `sys_sbrk` or `sys_mem`.
|
||||
- Allow userspace to dynamically allocate pages (User Heap).
|
||||
- [ ] **Syscall: Process Lifecycle**
|
||||
- `sys_spawn(path)`: Load `.hot` files via VFS, create new process structures.
|
||||
- `sys_exit(code)`: Proper termination, ZOMBIE state, resource cleanup in scheduler.
|
||||
- [ ] **Userspace Lib (mini-libc)**
|
||||
- Wrappers: `malloc`, `free`, `exec`, `exit`.
|
||||
- `crt0.asm` for proper `main()` entry.
|
||||
|
||||
### v0.5.4 (The Shell Update)
|
||||
*Focus: Interactive Userspace*
|
||||
- [ ] **Userspace Shell (`ush`)**
|
||||
- Porting `ksh` logic into a standalone `.hot` binary.
|
||||
- Standard I/O abstraction (stdin/stdout) to pass keyboard input to active process.
|
||||
- [ ] **Basic Utils**
|
||||
- `ls`, `cat`, `echo`, `ver` as standalone programs.
|
||||
- Remove built-in commands from the kernel.
|
||||
|
||||
---
|
||||
|
||||
## 📅 Phase 2
|
||||
*Goal: Total independence from external libraries and architectural hygiene.*
|
||||
|
||||
### v0.6.0 (Architecture Overhaul)
|
||||
- [ ] **Bootloader Independence**
|
||||
- Remove `posix-uefi` library.
|
||||
- Write custom UEFI entry point (pure PE).
|
||||
- Kernel itself becomes a valid `.hot` executable (or loaded by custom bootloader).
|
||||
- [ ] **HOT! Format Hardening**
|
||||
- Fix segment alignment (Page Alignment) in `elf2hot` and kernel loader.
|
||||
- Add metadata headers (stack size, permissions).
|
||||
- [ ] **Concurrency Fixes**
|
||||
- Implement spinlocks (`spinlock`).
|
||||
- Protect allocator and process lists from interrupt race conditions.
|
||||
|
||||
---
|
||||
|
||||
## 📅 Phase 3
|
||||
*Goal: Prepare the environment for self-hosting. We cannot compile on a Read-Only FS.*
|
||||
|
||||
### v0.7.0 (Filesystem & Input)
|
||||
- [ ] **Write Support**
|
||||
- Storage driver (NVMe/AHCI or Writable RAMDisk).
|
||||
- Writable Filesystem (FAT32 or custom simple FS).
|
||||
- [ ] **Input Subsystem**
|
||||
- Input buffering, Pipe (`|`) support in shell.
|
||||
- Basic TTY/PTY abstraction.
|
||||
|
||||
### v0.8.0 (The Editor)
|
||||
- [ ] **Text Editor**
|
||||
- Write a simple editor (nano-like) in userspace.
|
||||
- Capabilities: Open, Edit, Save files.
|
||||
|
||||
---
|
||||
|
||||
## 📅 Phase 4
|
||||
*Goal: Self-Hosting.*
|
||||
|
||||
### v0.9.0 (The Toolchain)
|
||||
- [ ] **Linker (`hld`)**
|
||||
- Native linker capable of outputting `.hot` files (running inside termOS).
|
||||
- [ ] **Compiler Port**
|
||||
- Port **TCC (Tiny C Compiler)** to termOS.
|
||||
- Adapt libc headers for the OS environment.
|
||||
|
||||
### 🤔 v1.0.0 (Self-Hosting)
|
||||
- [ ] **Bootstrapping**
|
||||
- Compile the Dewar kernel *inside* termOS.
|
||||
- Boot from the newly compiled kernel.
|
||||
- Total victory.
|
||||
|
||||
---
|
||||
|
||||
## 📜 History
|
||||
|
||||
| Version | Date | Key Features |
|
||||
| :--- | :--- | :--- |
|
||||
| **v0.5.2** | 2026-01-30 | **HOT!** format, Ring 3 isolation, VFS, CPIO parsing. |
|
||||
| **v0.5.1** | 2026-01-29 | Initial userspace jumps, syscall mechanics. |
|
||||
| **v0.5.0** | 2026-01-29 | Kernel officially named "Dewar". Versioning standardized. |
|
||||
| **v0.4.x** | 2026-01-28 | Basic VFS, Shell improvements, basic multitasking. |
|
||||
| **v0.3.x** | 2025-12-30 | Scheduler, ~~Composer~~, Heap manager. |
|
||||
| **v0.2.x** | 2025-12-28 | `ksh`, Keyboard driver, HHDM, PMM/VMM. |
|
||||
| **v0.1.x** | 2025-12-21 | First boot, GDT/IDT, Serial/Console, Panic handler. |
|
||||
Reference in New Issue
Block a user