Мой блог
Операционная система Vinix: запуск Docker, QEMU и игр на Apple Silicon
Современные операционные системы часто критикуют за излишнюю громоздкость, поэтому разработчики продолжают предлагать альтернативные решения. Независимая операционная система Vinix создана специально для компьютеров Mac и позиционируется как быстрая и минималистичная среда на базе собственного ядра.
Интерес вызывает то, как проект справляется с запуском стороннего софта без использования привычного ядра Linux. За счет собственной реализации пространств имен (namespaces), контрольных групп (cgroups), а также механизмов overlayfs и seccomp разработчикам удалось запустить стандартный движок Docker для Alpine Linux на архитектуре ARM64. Кроме того, система поддерживает эмулятор QEMU 9.1.2, способный запускать вторую копию Vinix внутри окна, а также такие игры и приложения, как DOOM, демоверсию DOOM 3, Minecraft Java Edition и порт Gothic II через OpenGothic.
Правда, на данном этапе возможности ограничены: Docker пока обходится без мостовой сетевой маршрутизации и правил iptables, QEMU функционирует в режиме программной эмуляции, а Minecraft работает в интерпретируемом режиме на одном процессорном ядре.
Особенности проекта и архитектура
Проект нацелен на предоставление владельцам компьютеров Mac на процессорах Apple Silicon быстрой и открытой системы, избавленной от нарастающей со временем блочности коммерческих ОС. На текущий момент официально поддерживается только чип M1, хотя в перспективе разработчики планируют охчить всю линейку процессоров серии M.

Авторы стремятся обойтись без использования systemd, создав ядро, объем которого позволяет одному человеку изучить его код целиком. В фоновом режиме ничего не запускается само по себе, а система использует фиксированный набор компонентов: одну систему инициализации, графическую оболочку, пакетный менеджер и формат бинарных файлов. Управление памятью в ядре реализовано вручную, без применения сборщика мусора, что исключает неожиданные паузы во время выполнения системных вызовов или работы композитора.
В качестве основы выбран язык программирования V, привлекший авторов высокой скоростью компиляции и лаконичным читаемым синтаксисом. Модель безопасности вдохновлена решениями OpenBSD с поддержкой функций pledge и unveil, хотя приложения должны задействовать их самостоятельно, а память пользователя по умолчанию защищена от одновременной записи и выполнения.
Запуск приложений Linux
Ядро Vinix является монолитным и загружается через Limine, а драйверы встроены непосредственно в образ. Большая часть кода написана на V с добавлением компонентов на C и ассемблере. Графический интерфейс представлен нативной оболочкой на V UI2 через фреймворк вывода, а для ARM64 доступны сеансы X.org и Hyprland.
После загрузки система занимает около 50 МБ оперативной памяти, а для установки требуется примерно 1 ГБ на диске. Поскольку в основе совместимости лежат пакеты Alpine Linux (известной своей легковесностью, использованием musl и BusyBox), Vinix умеет выполнять родные бинарные файлы Linux. Системные вызовы, формат ELF и поведение библиотеки musl поддерживаются напрямую, без виртуальных машин и эмуляторов.
Для установки нового ПО применяется утилита командной строки pkg, загружающая компоненты из репозиториев Alpine для архитектуры aarch64. Работоспособность уже подтверждена для таких программ, как Chromium, GIMP, Sublime Text, Gnumeric и слоя совместимости Wine.
История разработки и доступность
Первые коммиты в репозитории GitHub датируются мартом 2021 года, а первоначальное ядро было разработано создателем загрузчика Limine под ником Mintsuki. После двухлетнего перерыва обязанности мейнтейнера взял на себя автор языка V Александр Медведников.
Официальный сайт предлагает для загрузки файл установщика .dmg владельцам Mac с процессором M1, а в репозитории проекта можно найти ISO-образы для ARM64 (для использования в QEMU и VirtualBox на компьютерах Apple) и для x86_64 (поддерживается на системах Intel и AMD). Для тестирования на виртуальной машине потребуется от 4 ГБ оперативной памяти и столько же дискового пространства.

