Концептуальная 32-битная bare-metal операционная система архитектуры x86 | Build 0001
RAND Elecorner 36 — это собственная операционная система с нуля. Проект эволюционировал из концептуального симулятора в полноценную ОС архитектуры x86, работающую на «голом железе» (или в эмуляторе вроде QEMU).
Текущая реализация включает:
- Свой двухстадийный загрузчик (Bootloader), умеющий читать FAT12/16.
- 32-битное ядро (Protected Mode), написанное на C++17.
- Менеджер физической (PMM) и виртуальной (VMM / Paging) памяти.
- Планировщик задач (Multitasking) и обработку аппаратных прерываний (PIC/IDT).
- Базовые драйверы ввода-вывода (Клавиатура, VGA, Таймер).
- Загрузчик ELF и развитая инфраструктура Ring 3.
- Поддержка файловой системы FAT16.
ОС написана на низкоуровневых технологиях без использования сторонних высокоуровневых библиотек (freestanding):
- Загрузчик (Bootloader): Ассемблер x86 (NASM).
- Ядро (Kernel) и Пользовательские программы (User Space): C++17 (g++).
- Сборка (Build System): Bash-скрипт (
build.sh),mtools,qemu.
Для взаимодействия программ с ОС и «железом» реализованы два основных интерфейса:
- AppAPI: Высокоуровневая C++ обертка над системными вызовами для пользовательских приложений (I/O, IPC, память).
- DriverAPI: Низкоуровневый интерфейс для драйверов, обеспечивающий доступ к портам ввода-вывода и MMIO.
Сборка полностью автоматизирована скриптом build.sh. Он компилирует загрузчик, ядро, пользовательские приложения и упаковывает всё это в образы дисков (disk.img и data.img).
# 1. Запустите скрипт сборки
./build.sh
# 2. Запустите ОС в эмуляторе QEMU
qemu-system-i386 -fda disk.img -hda data.img -boot aПо умолчанию скрипт:
- Собирает загрузчик (
bootloader.bin,STAGE2.BIN). - Собирает и линкует ядро (
KERNEL.BIN). - Создает образ загрузочной дискеты
disk.img(FAT12) и кладет туда ядро и Stage 2. - Создает образ жесткого диска
data.img(FAT16), куда записывает тестовые файлы (HELLO.TXT) и демо-программу пользовательского пространства (HELLO.ELF).
| Директория | Описание |
|---|---|
boot/ |
Исходники двухстадийного ассемблерного загрузчика. |
kernel/ |
Исходники 32-битного C++ ядра. |
user/ |
Исходники тестовых программ и API для Ring 3. |
docs/ |
Техническая документация и спецификации. |
Подробная информация о внутреннем устройстве и стандартах проекта:
- ARCHITECTURE.md — Разбор архитектуры ядра и подсистем.
- FUTURE_VISION.md — Дорожная карта развития (GUI, Сеть, Микроядро).
- USER_APP_GUIDE.md — Руководство по созданию и портированию приложений.
- LIBC_REQUIREMENTS.md — Спецификация стандартной библиотеки (безопасность и оптимизация).
- POSIX_PROCESS_REQUIREMENTS.md — Требования к реализации
fork()иexec().
- AHCI_DRIVER_REQUIREMENTS.md — Детальная спецификация драйвера AHCI/DMA.
TBD