Как без знаний Си собрать 64-битную операционную систему за 4 часа с помощью ИИ
Всем привет!
Принято считать, что разработка собственной операционной системы с нуля (bare-metal) — это прерогатива опытных low-level инженеров с годами опыта в Си, ассемблере и устройстве железа x86.
Сегодня я хочу поделиться нестандартным экспериментом и показать, что в эпоху LLM и развитого системного мышления порог входа в такие задачи кардинально изменился. Я не программирую на C вручную, но прекрасно понимаю системную логику. Поставив перед ИИ роль «исполнителя» и выступив в роли системного архитектора, я собрал полностью рабочую 64-битную ОС за 4 часа.
Проект получил название NYKLIMA OS. Рассказываю, как это устроено под капотом и с какими инженерными вызовами мы столкнулись.
Архитектура системы
Главной целью было не просто вывести строку «Hello World», а собрать жизнеспособное ядро с изоляцией процессов, графикой и собственной файловой системой.
Вот из чего состоит система:
Собственный UEFI-загрузчик (uefi/):
Собирается в EFI/BOOT/BOOTX64.EFI без сторонних bootloader-зависимостей.
Читает KERNEL.ELF с FAT16-диска.
Строит таблицы страниц: Identity + HHDM (Higher-Half Direct Map) + high-half для самого образа ядра.
Настраивает и передаёт ядру framebuffer, карту памяти, RSDP и передаёт управление в kmain.
Защита памяти и пользовательские процессы (Ring 3):
Настроен собственный GDT/TSS, реализация syscall/sysret.
Каждая программа работает в изолированном адресном пространстве. Падение процесса не валит ядро (реализован тест CRASH.ELF, вызывающий #PF — ядро безопасно убивает процесс и продолжает жить).
Память пользователя защищена по принципу W^X (запрет одновременно исполняемого и перезаписываемого кода) с установкой NX-бита на стек и кучу.
Указатели из Ring 3 строго валидируются ядром перед каждым чтением.
Ядро (kernel/):
Память: bitmap-PMM (физическая память) + растущая multi-arena куча на free-list (авторост через vm_alloc_region).
Прерывания и железо: IDT, PIC/IOAPIC, PIT (100 Гц), PS/2 клавиатура и мышь. Поддержка SMP (ACPI MADT, INIT/SIPI трамплин).
Потоки: кооперативное переключение с сохранением/восстановлением FPU/SSE-контекста (fxsave/fxrstor).
Файловая система: FAT16 с поддержкой LFN (длинных имён) поверх ATA PIO.
GUI: Оконный менеджер с поддержкой drag-and-drop, taskbar, z-order и backbuffer.
3D-рендерер: Собственный программный движок NGL (Z-буфер, текстурирование, туман, альфа-блендинг).
Загрузчик программ: ELF-PIE загрузчик с встроенной API-таблицей ядра.
Интеграция с VirtualBox VMMDev:
Мышь работает через родной PCI-интерфейс VirtualBox (80ee:cafe). Курсор хоста синхронизируется 1:1 без захвата.
Мост «CUDA → FAT16 → NGL»
Одной из самых интересных фич стал пайплайн подготовки ресурсов. В качестве пользовательской программы для Ring 3 мы запустили игру SNAKE.
При этом спрайты для игры рендерятся прямо на хост-видеокарте (RTX 3050) через CUDA-скрипт, упаковываются на FAT16-диск и затем нативно подтягиваются 3D-рендерером NGL внутри самой операционки.
Как это собирается и запускается
Вся сборка ядра, загрузчика и диска автоматизирована в PowerShell-скрипте:
PowerShell
Set-Location -LiteralPath "$HOME\Documents\операционка" & .\build.ps1 # Сборка ядра, BOOTX64.EFI и образа nyklima-uefi.img & .\build.ps1 -Run # Сборка + конвертация в VMDK + автоматический запуск VirtualBox
Управление в системе:
1 — запуск игры SNAKE в режиме Ring 3 (управление WASD, Esc — выход);
2 — запуск CRASH.ELF (демонстрация перехвата падения процесса ядром);
F — Файловый менеджер;
G — Интерактивный 3D-куб.
Главный вывод эксперимента
Этот проект доказал мне важную вещь: в 2026 году ключевым навыком инженера становится умение мыслить архитектурно.
Не зная синтезиса Си до мелочей, но понимая, как функционирует память, как устроены ring-уровни процессора, таблицы страниц и прерывания, можно выступать «дирижером» для ИИ и собирать сложные системные концепты (PoC) за считанные часы.
Код проекта открыт и доступен на GitHub: https://github.com/dimaxp4?tab=overview&from=2026-08-01&to=2026-08-31