Archived
2.5 KiB
2.5 KiB
opencoreRS
Микроядерная операционная система, написанная на Rust.
Архитектура
Userspace │ init ── vfs ── driver-uart ── ...
│ ↕ IPC (message passing)
───────────┼──────────────────────────────────
Kernel │ PMM ── VMM ── Sched ── IPC ── Syscall
(Ring 0) │
───────────┼──────────────────────────────────
Hardware │ x86_64 / (aarch64, riscv64 — TODO)
Быстрый старт
# Установить зависимости (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
- Скелет проекта + workspace
- Загрузчик (Limine protocol)
- Serial logger (COM1)
- GDT + TSS
- 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