Archived
79 lines
2.5 KiB
Markdown
79 lines
2.5 KiB
Markdown
# 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
|