From 904c39a2cf265f1a29df93c8c5cce5645daa807f Mon Sep 17 00:00:00 2001 From: johndoe6345789 Date: Sun, 28 Dec 2025 17:42:57 +0000 Subject: [PATCH 1/6] Update README with OS purpose and features Clarify the OS description and its goals. --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 8f6eb52..9dea59b 100644 --- a/README.md +++ b/README.md @@ -3,3 +3,5 @@ A OS that is not linux, not bsd and not windows. Ground up OS with just enough b - Might use Linux kernel only as inspiration for driver code - Some changes might be required to QT6 - We can git clone this. +- Mostly ignoring other peoples OS work. +- One OS launches this One QT6 app. No command line, no cruft. From 49b31215b3f498616628d7b77bb6aef5c8429aea Mon Sep 17 00:00:00 2001 From: johndoe6345789 Date: Sun, 28 Dec 2025 17:43:22 +0000 Subject: [PATCH 2/6] Clarify OS functionality in README --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 9dea59b..896a9a6 100644 --- a/README.md +++ b/README.md @@ -4,4 +4,4 @@ A OS that is not linux, not bsd and not windows. Ground up OS with just enough b - Might use Linux kernel only as inspiration for driver code - Some changes might be required to QT6 - We can git clone this. - Mostly ignoring other peoples OS work. -- One OS launches this One QT6 app. No command line, no cruft. +- One OS launches this One Full Screen QT6 app. No command line, no cruft. From 3549c8736018ba6ad11dd2127a3db89e2464c73f Mon Sep 17 00:00:00 2001 From: johndoe6345789 Date: Sun, 28 Dec 2025 17:43:44 +0000 Subject: [PATCH 3/6] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 896a9a6..33feea8 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # MetalOS A OS that is not linux, not bsd and not windows. Ground up OS with just enough bespoke kernel to run a QT6 hello world full screen app on AMD64 with Radeon RX 6600 GPU., UEFI native -- Might use Linux kernel only as inspiration for driver code +- 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. From 39a595cc19d79b78d3a296489eaccddca498deb5 Mon Sep 17 00:00:00 2001 From: johndoe6345789 Date: Sun, 28 Dec 2025 17:47:42 +0000 Subject: [PATCH 4/6] Update README with project phases and design decisions Expanded project phases and key design decisions in README. --- README.md | 103 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 103 insertions(+) diff --git a/README.md b/README.md index 33feea8..3d41394 100644 --- a/README.md +++ b/README.md @@ -5,3 +5,106 @@ A OS that is not linux, not bsd and not windows. Ground up OS with just enough b - 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 + +Input handling verification + +Test on QEMU + +Test on real hardware (AMD64 + RX 6600) From c3d82ddecbf97a3ab363889f05be5eb6d0daa886 Mon Sep 17 00:00:00 2001 From: johndoe6345789 Date: Sun, 28 Dec 2025 17:49:31 +0000 Subject: [PATCH 5/6] Update README.md --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 3d41394..712d732 100644 --- a/README.md +++ b/README.md @@ -103,6 +103,8 @@ Build complete bootable image Full-screen rendering validation +Philosophy: If it doesn't help QT6 Hello World, it doesn't exist. + Input handling verification Test on QEMU From 23de02bb5241729551b45226e571d82d2b5c3f9a Mon Sep 17 00:00:00 2001 From: johndoe6345789 Date: Sun, 28 Dec 2025 17:50:23 +0000 Subject: [PATCH 6/6] Update README with minimalism details Added sections on what features were cut and kept for minimalism. --- README.md | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/README.md b/README.md index 712d732..a36942a 100644 --- a/README.md +++ b/README.md @@ -105,6 +105,28 @@ 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