# opencoreRS Микроядерная операционная система, написанная на Rust. ## Архитектура ``` Userspace │ init ── vfs ── driver-uart ── ... │ ↕ IPC (message passing) ───────────┼────────────────────────────────── Kernel │ PMM ── VMM ── Sched ── IPC ── Syscall (Ring 0) │ ───────────┼────────────────────────────────── Hardware │ x86_64 / (aarch64, riscv64 — TODO) ``` ## Быстрый старт ```bash # Установить зависимости (Arch Linux) sudo pacman -S qemu-system-x86 xorriso # Установить Rust nightly с нужными компонентами rustup toolchain install nightly rustup component add rust-src llvm-tools-preview # Собрать ядро make kernel # Запустить в QEMU make run # Собрать ISO (нужен xorriso) make iso make run-iso # GDB-отладка (в двух терминалах) make debug rust-gdb -ex 'target remote localhost:1234' target/x86_64-unknown-none/debug/kernel ``` ## Структура проекта | Путь | Описание | |---|---| | `kernel/` | Микроядро (no_std, x86_64-unknown-none) | | `kernel/src/arch/x86_64/` | GDT, IDT, paging, boot entry | | `kernel/src/mm/` | PMM, VMM, Kernel Heap | | `kernel/src/sched/` | Планировщик (MLFQ), Task | | `kernel/src/ipc/` | Capabilities, Channels | | `kernel/src/syscall/` | Syscall dispatcher | | `libs/syscall-abi/` | Общие типы (kernel + userspace) | | `libs/ipc-client/` | IPC-клиент для серверов | | `servers/init/` | PID 1, запуск серверов | | `servers/vfs/` | Virtual File System сервер | | `servers/driver-uart/` | UART-драйвер (userspace) | ## Roadmap - [x] Скелет проекта + workspace - [x] Загрузчик (Limine protocol) - [x] Serial logger (COM1) - [x] GDT + TSS - [x] IDT + exception handlers - [ ] PMM (bitmap allocator) - [ ] VMM (4-level paging, own PML4) - [ ] Kernel heap (map region через VMM) - [ ] APIC + timer interrupt - [ ] Context switch (asm) - [ ] SYSCALL/SYSRET - [ ] Первый userspace процесс - [ ] IPC: channel send/recv - [ ] VFS + tmpfs - [ ] Сетевой стек ## Лицензия MIT OR Apache-2.0