Проект Minoca, в рамках которого развивается операционная система для потребительских интернет-устройств и встраиваемой техники, переведён в разряд свободных проектов. Код открыт под лицензией GPLv3. Сборки подготовлены для архитектур x86, ARMv6 и ARMv7, в том числе сформированы загрузочные образы для плат Raspberry Pi 2, Raspberry Pi, BeagleBone Black, Asus C201, PandaBoard и Galileo, а также эмулятор на основе QEMU.
Система модульная - подсистемы ядра отделены друг от друга, а взаимодействие с оборудованием абстрагировано, что позволяет поставлять для разных архитектур единое унифицированное ядро, расширяемое через систему надстроек. Драйверы устройств не привязаны к ядру и оформляются в виде универсальных исполняемых файлов, не зависящих от версии ядра (обновление ядра не требует обновления драйверов) и загружаемых по необходимости. Minoca имеет событийно-ориентированную архитектуру, поддерживает многопроцессорные конфигурации, вытесняющую многозадачность, сетевой, беспроводной и USB стеки, предоставляет подборку драйверов. В качестве файловой системы поддерживается FAT.
Операционная система примечательна низким потреблением ресурсов и способна работать на оборудовании с 5 Мб ОЗУ. Система также изначально нацелена на обеспечение минимального энергопотребления и использует встроенные средства для переключения режимов процессоров, влияющих на потребление энергии, а также может минимизировать число пробуждений фоновых процессов в условиях простоя, что позволяет дольше находиться в глубоких режимах экономии энергопотребления.
Для разработки приложений предлагается POSIX-подобный интерфейс, благодаря которому в Minoca уже удалось собрать множество существующих популярных пакетов. В настоящее время для установки из специального репозитория доступно более 100 приложений, среди которых GCC, Python 2.7, Perl, PHP, Ruby, Lua, zsh, bash, binutils, boost, cmake, vim, emacs, git, apache httpd, nginx, MySQL, PostgreSQL, Node.js, OpenLDAP, OpenSSH, unbound. Для установки и обновления программ задействован пакетный менеджер opkg, также применяемый в OpenEmbedded и OpenWrt. В качестве командной оболочки и для выполнения shell-скриптов проектом развивается интерактивный интерпретатор Chalk.
|