[ **English** | [ะ ัััะบะธะน](README_RU.md) ]
[-007acc?style=for-the-badge&logo=cpu)]()
[]()
[]()
[]()
[]()
[]()
[]()
[]()
A state-of-the-art, capability-based microkernel operating system written in Rust and modern C++20.
Built from scratch for x86_64 long mode, featuring SMP multi-core affinity, an LVGL-powered desktop compositor, hardware ACPI power management, hardware random generation, and fault-tolerant process signal isolation.
```text
โญโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฎ
โ โ โ โ root@opencoreC: ~ (osh) โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ โ
โ ___ root@opencoreC โ
โ / \ ----------------- โ
โ | (o) | ___ OS: opencoreC Microkernel x86_64 โ
โ | | / \ Kernel: v0.1.0-release (Rust #![no_std]) โ
โ \ ___ / | (o) | Uptime: 42 mins, 12 secs โ
โ \___/ Shell: osh (opencore shell 1.0) โ
โ [=== opencoreC ===] Display: 1280x800 @ 60Hz 32bpp (Linear FB) โ
โ x86_64 SMP DE / WM: LVGL v8.3 Windows/KDE Compositor โ
โ Ring 3 Userspace CPU: QEMU Virtual CPU (4 Cores SMP) โ
โ Fast-Path IPC Cap Memory: 38 MiB / 509 MiB (7%) โ
โ Network: Realtek RTL8139 (10.0.2.15) โ
โ ACPI: S5 Poweroff, Reset, MADT 4 Cores โ
โ Security: Ring 3 Signal Fault Isolation (SIGSEGV) โ
โ Entropy: Hardware RNG (RDRAND / TSC) โ
โ โ
โ โโโ โโโ โโโ โโโ โโโ โโโ โโโ โโโ โ
โ โ
โ โโโ(root@opencoreC)-[~] โ
โ โโ# fastfetch โ
โฐโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฏ
```
---
## ๐ Key Highlights & Subsystems
### โก 1. SMP Multi-Core & Core Affinity Optimization
* **Application Processor Startup:** Secondary cores (Core 1, 2, 3) are booted via the Limine SMP protocol with dedicated TSS descriptors (`PER_CPU_TSS`), GDT, IDT, SSE/AVX registers, and fast-path syscall MSRs (`IA32_LSTAR`, `IA32_STAR`, `IA32_FMASK`).
* **Fast Non-Locking CPU ID:** Uses CPU MSR `0xC0000103` (`IA32_TSC_AUX`) to retrieve the current physical core index in a single assembly instruction (`rdmsr`).
* **Dedicated Core Affinity:**
- **Core 0:** Microkernel Core, Hardware Timer PIT (100 Hz), Hardware IRQs (Mouse, Keyboard, RTL8139 NIC).
- **Core 1:** Dedicated to **`gui_server`** โ 60 FPS graphics rendering without lag or priority inversions.
- **Core 2:** Dedicated to **`sh`** (Interactive shell and command execution).
- **Core 3:** Dedicated to background servers (`init_server`, `uart_driver`, `procmgr`).
### ๐ช 2. LVGL v8.3 Windows/KDE Desktop GUI
* **Hardware PS/2 Mouse Tracking:** Smooth double-buffered cursor rendering at 1280x800 resolution directly over Limine linear framebuffer (`0x80000000`).
* **Zero-Lag Window Dragging:** High-performance dirty-region raster bands (`BUF_HEIGHT = 80`) and optimized composition.
* **Windows 11 / KDE Plasma Aesthetic:**
- Glassmorphic Taskbar with Start Menu button, running task chips, and live CMOS digital clock.
- Interactive Start Menu with quick application launcher and system power controls.
- **Task Manager / Resource Monitor:** Real-time multi-core CPU utilization meters across all 4 cores and physical memory progress bar.
- **Linux-style Graphical Terminal:** Dark-mode terminal with blinking cursor and full command interpreter.
- **About System & Network Diagnostics Center:** Real-time RTL8139 MAC, IP, and packet counters.
### ๐ 3. Realtek RTL8139 PCI Fast Ethernet Network
* **PCI Bus Mastering:** Auto-probes PCI bus `0:2:0`, enables Bus Master DMA.
* **Zero-Copy Physical DMA:** Configured with physical transmit and receive ring buffers (`0x90000000`).
* **Network Stack:** Full ARP request/reply, IPv4 packet parsing, and ICMP Echo transmission (`ping 10.0.2.2`).
### ๐ก๏ธ 4. Process Signals & Fault Isolation (Ring 3)
* **Kernel Stability:** Ring 3 crashes no longer trigger Kernel Panics:
- Vector 14 (`#PF` Page Fault) $\rightarrow$ `SIGSEGV` (11)
- Vector 13 (`#GP` General Protection) $\rightarrow$ `SIGSEGV` (11)
- Vector 6 (`#UD` Invalid Opcode) $\rightarrow$ `SIGILL` (4)
- Vector 0 (`#DE` Divide by Zero) $\rightarrow$ `SIGFPE` (8)
* Faulting threads are cleanly isolated, logged with crash diagnostics (`RIP`, `ErrCode`, `CR2`), and terminated. The microkernel, GUI desktop, and sibling tasks remain fully active. Test with `crash_test`.
### ๐ 5. Hardware ACPI Subsystem
* **Table Discovery:** Scans BIOS memory (`0xE0000..0xFFFFF`) for `RSDP` with checksum verification.
* **Tables Parsed:** `RSDT`, `FADT` (`PM1a_CNT`), `MADT` (LAPIC CPU Core Discovery), `HPET`, `MCFG`.
* **Power Management:** Native hardware ACPI S5 Sleep/Poweroff and 8042/ACPI hardware reset.
### ๐ฒ 6. Hardware Random Number Generator (RNG)
* **Entropy Sources:** Checks CPUID for hardware `RDRAND` (Leaf 1, ECX 30) and `RDSEED` (Leaf 7, EBX 18).
* **PRNG Fallback:** Xorshift64* stirred with CPU cycle counter (`rdtsc`) and CMOS RTC.
* **Syscall & Tool:** Syscall 22 (`SYS_GETRANDOM`) and user command `random` / `rng` generating UUID v4 identifiers.
### ๐ป 7. Interactive Terminal Shell (`osh`)
* **Stylized Powerline Prompt:** `โโโ(root@opencoreC)-[~]\nโโ# `
* **Built-in `fastfetch`:** Integrated system information tool with custom ASCII logo and ANSI palette.
* **Log Isolation:** Daemon logs (`gui_server`, `procmgr`, `init_server`) are routed to `dmesg`, leaving the interactive terminal pristine.
---
## ๐๏ธ Architecture Overview
The system strictly enforces **Principle of Least Privilege (PoLP)**: only memory translation and fast-path IPC primitives reside in Ring 0, while everything else executes in isolated Ring 3 address spaces.
### ๐ Multi-Core Topology & Subsystem Isolation
```text
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ HARDWARE LAYER (x86_64 Long Mode) โ
โ โ
โ [CPU 0: Bootstrap] [CPU 1: AP 1] [CPU 2: AP 2] [CPU 3: AP 3] โ
โ โโโ PIT 8254 Timer โโโ Linear Framebuffer โโโ PS/2 Input Buffer โโโ PCI RTL8139 โ
โ โโโ Local APIC/IOAPIC (1280x800@32bpp) (Keyboard + Mouse) โโโ 16550 UART โ
โ โโโ ACPI PM / RNG โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
Interrupts & MSRs
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ RING 0: RUST MICROKERNEL (#![no_std]) โ
โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ Memory Subsystem โ โ Multi-Core Scheduler โ โ Fast-Path Rendezvous IPC โ โ
โ โ โโโ 4-Level PML4 VMMโ โ โโโ Core Affinity โ โ โโโ Register Fast-Path (32B) โ โ
โ โ โโโ Bitmap PFA โ โ โโโ Quantum Switch โ โ โโโ Capability Token Access โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ Signal Interceptor โ โ Hardware ACPI Driver โ โ Hardware Entropy Generator โ โ
โ โ โโโ SIGSEGV / SIGILLโ โ โโโ RSDP / MADT / S5โ โ โโโ RDRAND / RDSEED โ โ
โ โ โโโ Thread Recovery โ โ โโโ 8042 Power Resetโ โ โโโ High-Entropy PRNG Stirring โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
Isolated Page Tables (CR3)
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ RING 3: USERSPACE ECOSYSTEM โ
โ โ
โ [Core 1 Dedicated] [Core 2 Dedicated] [Core 3 Dedicated] [Core 3 Service] โ
โ gui_server sh init_server / procmgr uart_driver โ
โ โโโ LVGL Compositor โโโ osh Interactive โโโ System Lifecycle โโโ 16550 Serial โ
โ โโโ Windows/KDE Shell โโโ Fastfetch Engine โโโ Process Spawner Rendezvous โ
โ โโโ HW Mouse Cursor โโโ Command Suite โโโ Cap Table Registry Listen Loop โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
```
### โก Detailed Component Communication
```mermaid
sequenceDiagram
autonumber
actor User as PS/2 Mouse & Keyboard
participant IRQ as HW Interrupts (Core 0)
participant Kernel as Rust Microkernel (Ring 0)
participant GUI as gui_server (Core 1)
participant Shell as sh Terminal (Core 2)
participant Net as RTL8139 NIC (Core 3)
User->>IRQ: Mouse Move / Keypress Event
IRQ->>Kernel: Hardware Interrupt Vector 33 / 44
Kernel->>GUI: Syscall 21: SYS_MOUSE_GET (x, y, buttons)
GUI->>GUI: Direct Framebuffer Raster Blit (60 FPS)
User->>Shell: Keypress: "ping 10.0.2.2"
Shell->>Kernel: Syscall 1: SYS_IPC_CALL (RTL8139 Endpoint)
Kernel->>Net: Synchronous Rendezvous IPC (Op: TX_PACKET)
Net->>Kernel: Syscall 20: SYS_DMA_ALLOC (Physical Ring Buffer)
Net-->>User: ICMP Echo Reply Packet Received!
```
---
## ๐ Repository Structure
```text
opencoreC/
โโโ boot/
โ โโโ limine/ # Limine bootloader binaries & installer
โโโ build/ # Output directory for ELF binaries & disk image
โโโ config/
โ โโโ linker.ld # Higher-half kernel linker script (0xffffffff80000000)
โ โโโ user.ld # Userspace Ring 3 ELF linker script (0x400000)
โโโ hal/ # Hardware Abstraction Layer (PCI, 16550 UART)
โโโ include/
โ โโโ abi/
โ โโโ ipc.h # Fast-Path IPC register layout & protocols
โ โโโ syscalls.h # System call numbers, structures, and POSIX signals
โ โโโ types.h # ABI primitive types
โโโ kernel/ # Microkernel crate (Rust #![no_std])
โ โโโ Cargo.toml
โ โโโ asm/
โ โ โโโ context.S # Preemptive context switcher (switch_to)
โ โ โโโ syscall_entry.S # Fast syscall/sysretq entry trampoline
โ โโโ src/
โ โโโ main.rs # Kernel entry point & subsystem orchestrator
โ โโโ arch/ # GDT, TSS, IDT, SMP, ACPI, Syscalls
โ โ โโโ acpi.rs # RSDP, RSDT, FADT, MADT parser & poweroff
โ โ โโโ gdt.rs # Per-CPU GDT & TSS selectors
โ โ โโโ idt.rs # IDT vectors & Ring 3 signal fault handler
โ โ โโโ smp.rs # SMP multi-core AP boot & TSC_AUX per-CPU query
โ โ โโโ syscall.rs # Fast-path syscall dispatcher
โ โโโ drivers/ # Microkernel drivers
โ โ โโโ dmesg.rs # Circular kernel log ring buffer
โ โ โโโ keyboard.rs # PS/2 keyboard driver
โ โ โโโ mouse.rs # PS/2 mouse driver with screen clamping
โ โ โโโ rng.rs # Hardware RNG (RDRAND / RDSEED / PRNG)
โ โ โโโ serial.rs # 16550 UART serial logger
โ โ โโโ timer.rs # PIT 8254 timer (100 Hz preemptive ticks)
โ โโโ ipc/ # Capability-based synchronous rendezvous IPC
โ โโโ mm/ # Physical Frame Allocator & 4-Level Paging
โ โโโ sched/ # Preemptive Multi-Core Scheduler & Threads
โโโ lib/
โ โโโ libc/ # Minimal freestanding C library (string, stdlib, stdio)
โ โโโ libipc_cpp/ # C++20 RAII IPC endpoints & message wrappers
โ โโโ lvgl/ # LVGL v8.3 embedded graphics library
โโโ servers/ # Ring 3 User-space processes
โ โโโ gui_server/ # Windows/KDE Desktop Compositor (LVGL v8.3)
โ โโโ init_server/ # System root server
โ โโโ procmgr/ # Process & server manager daemon
โ โโโ sh/ # Interactive UNIX shell (Powerline prompt & fastfetch)
โ โโโ uart_driver/ # 16550 COM1 serial driver server
โโโ limine.conf # Limine bootloader configuration
โโโ Makefile # Unified build system
โโโ README.md # Documentation & project manual
```
---
## ๐ ๏ธ Build & Run Guide
### Prerequisites (Ubuntu/Debian)
```bash
sudo apt-get update
sudo apt-get install -y build-essential gcc g++ qemu-system-x86 nasm mtools xorriso
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
rustup target add x86_64-unknown-none
```
### Quick Commands
| Target | Description |
| :--- | :--- |
| `make all` | Compiles the Rust microkernel, freestanding libc, drivers, and Ring 3 servers. |
| `make image` | Builds a bootable 64 MiB hybrid FAT32 disk image (`build/opencoreC.img`) with Limine BIOS + UEFI. |
| `make gui` | **Launches QEMU in GUI mode** with the LVGL Desktop Compositor, hardware mouse, and terminal. |
| `make run` | **Launches QEMU in serial console mode** with `fastfetch` and the Powerline shell prompt. |
| `make clean` | Cleans all compiled binaries, intermediate objects, and disk images. |
---
## โจ๏ธ Shell Command Reference (`osh`)
Available in both the **Serial Console (`make run`)** and the **GUI Terminal Window (`make gui`)**:
| Command | Description |
| :--- | :--- |
| `fastfetch` / `neofetch` | Displays the system summary, ASCII logo, and ANSI color palette. |
| `smp` / `cpu` | Displays online physical cores, current executing CPU, and per-core scheduler ticks. |
| `acpi` | Displays ACPI RSDP status, MADT discovered cores, and FADT power management ports. |
| `random` / `rng` | Generates 16 bytes of entropy via hardware RNG and formats as a UUID v4. |
| `crash_test` | Triggers a Ring 3 null-pointer fault to verify kernel `SIGSEGV` signal handling. |
| `ps` | Lists active threads, states (`READY`, `RUNNING`, `BLOCKED`), RIP, and CPU ticks. |
| `top` | Dynamic multi-core process and CPU load monitor. |
| `mem` / `free` | Displays Physical Frame Allocator (PFA) RAM usage (Total, Used, Free). |
| `ifconfig` / `ip` | Displays Realtek RTL8139 PCI Fast Ethernet MAC, IP, and status. |
| `ping