Establish MetalOS foundation: minimal OS for QT6 Hello World on AMD64+RX6600
MetalOS
- Might use Linux kernel only as inspiration for driver code, can be git cloned.
- Some changes might be required to QT6 - We can git clone this.
- Mostly ignoring other peoples OS work.
- One OS launches this One Full Screen QT6 app. No command line, no cruft.
Key Design Decisions:
✅ No command line/shell - boots directly to QT6 app ✅ No file system - app embedded in boot image ✅ Single application only ✅ Static linking for simplicity ✅ Minimal implementation philosophy ✅ Creative freedom for OS components, precision for drivers
Phase 1: Project Foundation ✅ COMPLETE
Review project requirements
Create project structure and documentation
Define architecture (minimal, single-app boot)
Create UEFI bootloader skeleton
Set up build system (Makefiles)
Create basic kernel entry point with framebuffer console
Document development environment setup
Create QT6 Hello World application template
Clarify design: no shell, boot directly to app
Add comprehensive status documentation
Phase 2: UEFI Bootloader (Next)
Implement UEFI protocol interfaces
Graphics initialization (GOP)
Kernel loading from disk
Memory map retrieval
Exit boot services
Jump to kernel with boot info Phase 3: Core Kernel Components
GDT/IDT setup
Interrupt handling
Memory management (physical/virtual)
Simple scheduler (single process)
Basic framebuffer console improvements Phase 4: Hardware Support
PCI device enumeration
Radeon RX 6600 GPU driver (precise implementation)
Framebuffer management
USB input (keyboard/mouse) Phase 5: System Call Interface
Minimal syscall mechanism
Essential syscalls for QT6
User/kernel mode transitions Phase 6: User Space & Application
ELF loader (static only)
C++ runtime support
Load QT6 hello world directly (no init)
Static-linked application Phase 7: QT6 Port
Identify and port QT6 dependencies
Create MetalOS QPA (Platform Abstraction) plugin
Framebuffer graphics backend
Input event integration
Build QT6 for MetalOS Phase 8: Integration & Testing
Build complete bootable image
Full-screen rendering validation
Philosophy: If it doesn't help QT6 Hello World, it doesn't exist.
What We Cut (see docs/MINIMALISM.md):
❌ Scheduler (one app = always running) ❌ Process management (one process only) ❌ File system (app embedded) ❌ Networking (not needed) ❌ Shell/CLI (boot directly to app) ❌ Security (trust everything) ❌ Multi-core (one CPU) ❌ Dynamic linking (static only) ❌ Virtual memory complexity (identity map) ❌ ACPI (try without it) What We Keep (absolute minimum):
✅ Memory allocator (bump allocator) ✅ ~5 interrupt handlers (timer, keyboard, mouse, GPU) ✅ GPU driver (framebuffer only, ~50 KB) ✅ Input drivers (PS/2 first, USB fallback, ~20 KB) ✅ PCI scan (just find our GPU) ✅ ~5 syscalls (write, mmap, ioctl, poll, exit)
Input handling verification
Test on QEMU
Test on real hardware (AMD64 + RX 6600)