Moxnox 1.0: вышла хобби-ОС по образцу Windows NT с POSIX и btrfs

Moxnox, хобби-операционная система, которую автор описывает как NT-подобную и POSIX-совместимую. Её дизайн, в частности набор системных вызовов, построен по образцу Windows NT, но при этом она должна запускать программы для Unix-подобных систем (если их пересобрать под Moxnox) и поставляется с полной базовой системой GNU. Система достаточно зрелая, чтобы собирать Moxnox внутри самой Moxnox, а в качестве файловой системы использует btrfs. Версия 1.0, около 130 000 строк на C++, работает на amd64 и aarch64.
Автор подчёркивает: с NT совпадают системные вызовы и низкоуровневые интерфейсы, но не демоны и не внутреннее устройство ядра. Этим Moxnox отличается от ReactOS, которая стремится к точному воспроизведению Windows. Исполняемые файлы здесь в формате PE, а не ELF, с расширениями .exe и .dll; исключения C++ реализованы через SEH, сигналы POSIX, через асинхронные вызовы процедур (APC), а всё «некернельное» ядерное поведение вынесено в ntdll.dll. Соглашение о вызовах (rcx, rdx, r8, r9) и особенности типов C, например размеры long и wchar_t, совпадают с Windows. Из возможностей NT пока нет токенов, реестра (Registry) и портов завершения ввода-вывода. Запутанную схему путей NT с устройствами автор не повторял: пути в стиле POSIX, с прямыми слэшами и корнем «/». Транзакции и страничную память ядра автор также сознательно не копировал. Из Linux взяты, по словам автора, лучшие идеи: кэш dentry, крупные фолио, отображение всей физической памяти, evdev.
По POSIX 2024 реализовано 642 функции из примерно 1200; автор считает, что это подавляющее большинство используемого на практике. В отличие от Windows, fork здесь есть. Для математических и криптографических функций использована musl, для printf и части остального, mingw, для регулярных выражений, tre. Среди портов, bash, binutils, coreutils, git, cmake, python, perl, openssh, vim, mesa, llvm и десятки других пакетов; gcc, rust, hexyl и ripgrep пока внутри самой Moxnox не собираются.
Попробовать можно в qemu (образы и EFI-ядро для amd64 и aarch64 лежат в релизе v1.0) или на реальном железе: нужен отдельный раздел (автор считает достаточным 32 ГБ), btrfs-progs свежей версии и запись загрузки через efibootmgr. Сборка идёт в Docker-контейнерах с кросс-компиляторами через CMake и Ninja (нужен именно Ninja из-за модулей C++). Поддерживаются NVMe, SATA, SD-карты, USB, сетевые карты virtio-net, RTL8168 и RTL8125, а на ARM, Raspberry Pi 5 (с дополнительной UEFI-прошивкой), но не более ранние модели.
Автор честно перечисляет, чего нет: графического интерфейса, часовых поясов, раскладок клавиатуры, локалей и кодировок кроме UTF-8, какой-либо безопасности, нескольких пользователей и групп. Среди проблем производительности, медленный аллокатор кучи в пользовательском пространстве (узкое место при самосборке), медленный TCP (не согласуется MSS, окно по умолчанию 64 КБ), отсутствие раннего сброса на диск и вытеснения страниц из кэша. Среди недоделок POSIX: AF_UNIX реализован наполовину, ввод-вывод в mkfifo не работает как положено, а APC (то есть сигналы) доставляются только при возврате потока из системного вызова, поэтому программа с бесконечным циклом while (true) { } сейчас неубиваема. Демоны надо запускать вручную, пароли не поддерживаются, для входа по ssh нужен authorized_keys.
Запускать программы Windows Moxnox не умеет: DLL Win32 намеренно не реализованы (кроме нескольких функций kernelbase для среды mingw). Возможное будущее улучшение, убрать и их и подключить версии из Wine.
Об ИИ автор пишет, что содержательный код ИИ не писал: помощь ИИ использована в механической части портирования (например, перевод autotools на CMake) и для части дымовых тестов. Зато Claude, по словам автора, особенно хорош в проверке собственных коммитов, находит забытые утечки памяти и взаимные блокировки. Мотивация: ради удовольствия и обучения, а ещё потому, что ядро NT, по мнению автора, недооценено и почти неизвестно любителям. Ядро и программы первой стороны под GPL, DLL первой стороны под LGPL, каталог modules, MIT.
Ключевые факты
- Moxnox 1.0, хобби-ОС: системные вызовы и низкоуровневые интерфейсы как в Windows NT, при этом POSIX-совместимость, файловая система btrfs и способность собирать саму себя.
- Около 130 000 строк на C++, работает на amd64 и aarch64; реализовано 642 из примерно 1200 функций POSIX 2024, fork в наличии.
- Бинарники в формате PE, сигналы POSIX через APC, исключения через SEH; Win32 DLL намеренно не реализованы, программы Windows не запускаются.
- В версии 1.0 нет графического интерфейса, безопасности, нескольких пользователей и групп; код btrfs автор советует проверять только на одноразовых файловых системах.
- Содержательный код написан без ИИ; Claude автор использовал для проверки собственных коммитов и части механического портирования.
Почему это важно
Это редкий пример цельной хобби-ОС, которая берёт интерфейс ядра у Windows NT, а прикладной мир, у Unix: PE-бинарники соседствуют с bash, git и cmake. Автор не пытается повторить Windows, как ReactOS, а делает то, что называет своим представлением о том, какой Windows стоило быть. Версия 1.0 уже собирает сама себя, что для проекта такого масштаба показатель зрелости. Для широкой публики это скорее технический курьёз, чем новый продукт.
Кому это важно
Разработчикам ядер и энтузиастам операционных систем, кому интересно сравнение архитектуры NT и Linux; тем, кто изучает формат PE, SEH, APC и порты POSIX поверх нестандартного ядра; участникам btrfs-сообщества. Тем, кому нужна рабочая система на каждый день, Moxnox пока не подойдёт.
Как это применить
Самый безопасный путь, запустить готовый образ в qemu (для самосборки память нужно увеличить сверх 1024 МБ из примера). На реальном железе потребуется отдельный раздел (автор считает достаточным 32 ГБ), свежие btrfs-progs и запись загрузки через efibootmgr; для amd64 нужен процессор уровня x86-64-v3 (примерно с 2015 года), для aarch64, ARMv8.1, из Raspberry Pi подходит только Pi 5. Собирать проект предлагается в Docker-контейнерах с CMake и Ninja. Лицензии: ядро и программы автора, GPL, DLL, LGPL, каталог modules, MIT.
Можно ли доверять
Всё изложенное взято из README проекта, который написан самим автором от первого лица; сторонних проверок в тексте нет. В README также нет замеров производительности относительно Linux или Windows, поэтому о скорости судить нельзя. Заявление о запуске программ Unix снабжено оговоркой «должна быть способна» и условием пересборки. Про отсутствие ИИ в основном коде, слова автора.
Риски и подводные камни
Автор сам предупреждает, что код btrfs проверен лишь для базовых задач, и просит монтировать только одноразовые файловые системы: на реальном разделе с данными его лучше не использовать. Безопасности и разграничения пользователей в версии 1.0 нет, пароли не поддерживаются, демоны запускаются вручную. Из-за доставки сигналов только при возврате из системного вызова программа с пустым бесконечным циклом не завершается. AF_UNIX работает не полностью, TCP медленный, а gcc, rust, hexyl и ripgrep внутри системы пока не собираются. Загрузку через GRUB без EFI автор не проверял.
«Так что это моё представление о том, какой Windows мне хотелось бы видеть.»
— автор Moxnox, README проекта