|
Марк Хармстоун (Mark Harmstone), автор проекта WinBtrfs, опубликовал выпуск операционной системы Moxnox 1.0, разрабатываемой с 2022 года в качестве хобби. Moxnox преподносится как созданная с оглядкой на Windows NT операционная система, обеспечивающая совместимость с POSIX-стандартами, использующая файловую систему Btrfs и достигшая уровня самосборки (self-hosting). Проект насчитывает около 130 тысяч строк кода на языке С++ и распространяется под лицензиями GPL (ядро и базовые программы), LGPL (библиотеки) и MIT (модули). Поддерживается сборка для архитектур x86-64-v3 и ARMv8.1 (может работать на плате Raspberry Pi 5).
Системные вызовы и низкоуровневые интерфейсы в ядре реализованы по образу Windows NT, но структура ядра и сопутствующие компоненты отличаются от Windows NT. Предоставляется возможность для запуска компонентов окружения GNU и программ, написанных для Unix-подобных систем. В качестве формата исполняемых файлов применяется PE, библиотеки имеют расширение dll, а программы - exe.
Поддерживаемые аппаратные устройства:
- Блочные устройства: NVMe, SATA, SDHCI (SD-карты), virtio-block и USB-накопители.
- Сетевые карты: virtio-net, RTL8168, RTL8125.
- Устройства ввода: virtio-input, USB HID, клавиатуры и мыши с интерфейсом PS/2.
- Графика: virtio-gpu, GOP framebuffer, VBE, VGA-консоль.
- Консоль: virtio-console, последовательны порт x86, PL011 ARM.
- USB: XHCI.
В настоящее время в Moxnox реализовано 642 функции из примерно 1200, описанных в стандарте POSIX 2024, но этого достаточно для работы, таких проектов, как gcc, bash, mesa, openssh, openssl, perl, python и rust. Системная библиотека сформирована из функций gnulib, математических и криптографических функций из musl, функций для работы с регулярными выражениями из tre и функций типа printf из mingw. Поддерживается самосборка, позволяющая скомпилировать Moxnox из окружения на базе Moxnox. Запуск Windows-программ пока не поддерживается, но в будущем для их запуска намерены задействовать реализацию API Win32 из Wine.
Среди портированных для Moxnox программ:
- bash
- binutils
- bison
- bzip2
- cairo
- cmake
- coreutils
- curl
- diffutils
- expat
- file
- findutils
- flex
- freetype
- gawk
- gcc (только для amd64)
- git
- gmp
- gperf
- grep
- gzip
- harfbuzz
- hexyl
- jsoncpp
- less
- libarchive
- libiconv
- libpng
- librhash
- libuv
- llvm
- m4
- make
- mako
- markupsafe
- mesa
- mpc
- mpfr
- nano
- ncurses
- netcat
- ninja
- openssh
- openssl
- patch
- perl
- pixman
- python
- pyyaml
- readline
- ripgrep
- rust
- sed
- tar
- vim
- wget
- xz
- zlib
- zstd
На данном этапе разработки поддерживается только работа в консольном режиме, но в будущем планируют реализовать и графический интерфейс. Также пока отсутствует поддержка многопользовательского окружения, механизмов обеспечения безопасности, часовых поясов, раскладок клавиатуры, локалей и кодировок, отличных от UTF-8.
Утверждается, что проект не содержит значимого кода, сгенерированного через AI-инструменты, которые использовались только для выполнения рутинной работы, такой как перевод правил autotools в CMake, замена ioctl-вызовов на функцию tcgetwinsize при портировании программ, написание тестов и поиск ошибок в коде.
|