Google развивает новую ARC Virtual Machine для запуска Android-приложений в Chrome OS
В рамках проекта ARCVM (ARC Virtual Machine) компания Google развивает для Chrome OS новый вариант прослойки для запуска Android-приложений. Ключевым отличием от предлагаемой ныне прослойки ARC++ (Android Runtime for Chrome) является использование полноценной виртуальной машины вместо контейнера. Заложенные в ARCVM технологии уже применяются в подсистеме Crostini, предназначенной для запуска Linux-приложений в Chrome OS.
Вместо контейнера, изолируемого при помощи пространств имён, seccomp, alt syscall, SELinux и cgroups, для выполнения Android-окружения в ARCVM применяется монитор виртуальных машин CrosVM на базе гипервизора KVM и модифицированный на уровне настроек системный образ Termina, включающий урезанное ядро и минимальное системное окружение. Ввод и вывод на экран организован через запуск внутри виртуальной машины промежуточного композитного сервера, пробрасывающего вывод, события ввода и операции с буфером обмена между виртуальным и основным окружением (в ARC++ применялось прямое обращение к слою DRM через Render Node).
В ближайшее время Google не планирует заменять текущую подсистему ARC++ на ARCVM, но в долгосрочной перспективе ARCVM представляет интерес с точки зрения унификации с подсистемой для запуска Linux-приложений и обеспечения более строгой изоляции Android-окружения (в контейнере используется общее с основной системой ядро и остаётся прямой доступ к системным вызовам и интерфейсам ядра, уязвимость в которых может использоваться для компрометации из контейнера всей системы).
Применение ARCVM также даст возможность разрешить пользователям установку произвольных Android-приложений, не ограничиваясь привязкой к каталогу Google Play и не требуя перевода устройства в режим для разработчика (в штатном режиме разрешена установка только выборочных приложений из Google Play). Подобная возможность необходима для организации разработки Android-приложений в Chrome OS. В настоящее время уже имеется возможность установить в Chrome OS среду Android Studio, но для того чтобы тестировать разрабатываемые приложения требуется включение режима для разработчика (Developer Mode).