Возобновлена работа над ОС NextBSD, сочетающей технологии FreeBSD и macOS

Началась работа над возрождённым проектом NextBSD, нацеленным на создание операционной системы, использующей технологии macOS, такие как системный менеджер launchd, механизм межпроцессного взаимодействия Mach IPC и библиотека диспетчеризации параллельного выполнения задач libdispatch, поверх современной кодовой базы FreeBSD. Новая реализация создаётся заново, не используя кодовую базу старого проекта NextBSD, прекратившего существование 10 лет назад, но цели и реализуемые идеи у проектов совпадают.

Проект возродил Джо Мэлони (Joe Maloney), принимавший участие в разработке старого NextBSD и смежных проектов, таких как helloSystem, ravynOS, FreeNAS/TrueNAS, PCBSD/TrueOS и GNUstep, а также известный как создатель среды рабочего стола Gershwin, применяемой в GhostBSD. Код распространяется под лицензией BSD-2 и развивается с привлечением AI-ассистента Claude. Для загрузки доступны ежедневного формируемые экспериментальные сборки.

Проектом используется ядро FreeBSD, для которого поставляется патч с реализацией механизма межпроцессного взаимодействия на базе микроядра Mach и ряд надстроек. Специфичные для NextBSD изменения применяются поверх штатной кодовой базы ядра FreeBSD без создания форка. На уровне ABI ядро остаётся совместимо с FreeBSD. Вместо модулей ядра, загружаемых утилитой kldload, применяются расширения ядра (kext), для загрузки которых задействован инструментарий kextload и kextstat из Darwin kext_tools.

Для взаимодействия через Mach IPC в системное окружение включены библиотеки libsystem_kernel, libdispatch, libxpc, liblaunch и libCoreFoundation, используемые в окружении Darwin. Для обработки событий от аппаратных устройств вместо devd в ядро встроен механизм IORegistry (/dev/ioregistry), использующий для передачи сообщений шину Mach IPC, с обработкой уведомлений через библиотеку libIOKit и утилиту ioreg.

В качестве системы инициализации (PID 1) и системного менеджера задействован инструментарий launchd, основанный на последнем открытом выпуске launchd-842.92.1, который был портирован на использование интегрированных в ядро FreeBSD компонентов Mach и стека libxpc. Порт стека межпроцессного обмена сообщениями libxpc перенесён из проекта ravynOS.

Вместо rc-скриптов и настроек rc.conf задействованы plist-файлы с описаниями сервисов, размещаемые в каталоге /System/Library/LaunchDaemons/. Для настройки сетевого стека вместо dhclient применён фоновый процесс IPConfiguration (ipconfigd), а для хранения сетевых настроек — реестр configd (netconfigd), хранящий данные в формате ключ/значение.

Вместо syslogd для ведения логов задействована система ASL (Apple System Log), а для обработки событий и доставки уведомлений — фоновый процесс notifyd. Из окружения Darwin перенесены некоторые утилиты командной строки, такие как launchctl, ipconfig, ioreg и syslog, при сохранении базовых системных утилит FreeBSD, таких как top, ps и pkg. При этом помимо типовых для FreeBSD библиотек в систему интегрированы библиотеки GNUstep и swift-corelibs.

В планах отмечено задействование в NextBSD поставляемых в
Darwin наборов утилит bootstrap_cmds (для Mach RPC), network_cmds (ifconfig, route, netstat…), file_cmds (cp, mv, ls, chmod…), shell_cmds (echo, test, kill, su…), system_cmds (ps, sysctl, login…), text_cmds (sort, uniq, cut, cat…) и adv_cmds (last, finger, работа с локалью). Для переноса из Darwin также запланированы инструменты для управления энергопотреблением (pmset) и монтирования накопителей (DiskArbitration поверх libgeom и devctl). Намечено создание инсталлятора и системы upd для проверки и установки обновлений.

Источник: http://www.opennet.ru/opennews/art.shtml?num=65928