В ОС Fuchsia работают над поддержкой запуска немодифицированных Linux-программ

Автор Сообщение
news_bot ®

Стаж: 6 лет 3 месяца
Сообщений: 27286

Создавать темы news_bot ® написал(а)
12-Фев-2021 13:30

Разработчики из компании Google опубликовали план реализации в операционной системе Fuchsia механизма для запуска немодифицированных программ, собранных для Linux. Для выполнения Linux-программ в пространстве пользователя планируется предоставить прослойку "starnix", обеспечивающую совместимость с ABI Linux.
В развиваемой прослойке системные интерфейсы ядра Linux реализуются в обработчике, запускаемом в виде процесса для ОС Fuchsia, работающего в пространстве пользователя и транслирующего запросы Linux-программ в обращения к соответствующим подсистемам Fuchsia. Отмечается, что при разработке проекта многие подсистемы Fuchsia придётся доработать для реализации всех доступных в Linux системных интерфейсов. Архитектура starnix во многом повторяет подсистму Windows Subsystem for Linux, применяемую в Windows для трансляции системных вызовов Linux в системные вызовы Windows.
Код starnix планируется реализовать на языке Rust для минимизации возможных векторов для возникновения уязвимостей, которые потенциально могут использоваться для поднятия привилегий Linux-процесса до процесса starnix. Для обеспечения безопасности в starnix по возможности будут задействованы штатные механизмы защиты Fuchsia. Например, при обращении к системным сервисам, таким как файловая система, сетевой стек или графическая подсистема, starnix будет лишь транслировать запросы, преобразуя Linux ABI в Fuchsia
System ABI, что позволит использовать те же ограничения, которые применяются для обычных процессов Fuchsia. При этом будут реализованы и специфичные для Linux-процессов механизмы контроля полномочий, например, определяющие в каких ситуациях один Linux-процесс имеет право завершить другой.
Поддержку запуска приложений Linux разработчики Fuchsia развивали и ранее, но экспериментировали с реализацией, работающей по аналогии с тем, как организован запуск Linux-приложений в Chrome OS. Для совместимости с Linux в Fuchsia предлагалась библиотека Machina, которая позволяла запускать Linux-программы в специальной изолированной виртуальной машине, формируемой при помощи гипервизора на базе ядра Zircon и спецификаций Virtio.
Применение виртуализации не сбрасывается со счетов, так как полная реализация системного интерфейса Linux является нетривиальной задачей. В дополнение к прослойке starnix не исключается создание механизма для запуска исполняемых файлов Linux с использованием ядра Linux, работающего в отдельной виртуальной машине. Данные способ отмечается как самый простой в реализации, но и наиболее ресурсоёмкий. В своё время компания Microsoft начала развитие своей прослойки совместимости с Linux с транслятора, но в конечном счёте перешла на использование родного ядра Linux в Windows Subsystem for Linux 2.
Кроме того, в Fuchsia уже предоставляется уровень совместимости POSIX Lite, работающий поверх Fuchsia System ABI. POSIX Lite позволяет обеспечить запуск некоторых Linux-программ, но требует перекомпиляции кода приложения, а в ряде случаев и модификации исходных текстов. Одной из проблем POSIX Lite является неполная реализация всех возможностей POSIX, в том числе не поддерживаются вызовы для изменения глобального состояния процессов (например, функция kill), которые расходятся с концепциями обеспечения безопасности в Fuchsia, запрещающими изменение глобального состояния. Применение POSIX Lite оправдывает себя в процессе портирования открытых приложений, но не решает проблемы с запуском программ, для которых отсутствует доступ к коду (например, невозможно добиться совместимости с Android-приложениями, содержащими скомпилированные нативные вставки).
Напомним, что в рамках проекта Fuchsia компанией Google развивается универсальная операционная система, способная работать на любых типах устройств, от рабочих станций и смартфонов до встраиваемой и потребительской техники. Разработка ведётся с учётом опыта создания платформы Android и учитывает недостатки в области масштабирования и обеспечения безопасности.
Система базируется на микроядре Zircon, основанном на наработках проекта LK, расширенного для применения на различных классах устройств, включая смартфоны и персональные компьютеры. Zircon расширяет LK поддержкой процессов и разделяемых библиотек, уровнем пользователя, системой обработки объектов и моделью обеспечения безопасности на основе capability. Драйверы реализуются в виде работающих в пространстве пользователя динамических библиотек, загружаемых процессом devhost и управляемых менеджером устройств (devmg, Device Manager).
Для Fuchsia подготовлен собственный графический интерфейс, написанный на языке Dart с использованием фреймворка Flutter. Проектом также развиваются фреймворк для построения интерфейсов пользователя Peridot, пакетный менеджер Fargo, стандартная библиотека libc, система рендеринга Escher, Vulkan-драйвер Magma, композитный менеджер Scenic, файловые системы MinFS, MemFS, ThinFS (FAT на языке Go) и Blobfs, а также менеджер разделов FVM. Для разработки приложений предоставляется поддержка языков C/C++, Dart, в системных компонентах также допускается использование Rust, в сетевом стеке Go, а в системе сборки языка Python.

В процессе загрузки используется системный менеджер, включающий
appmgr для создания начального программного окружения, sysmgr для формирования загрузочного окружения и basemgr для настройки пользовательского окружения и организации входа в систему. Для обеспечения безопасности предлагается продвинутая система sandbox-изоляции, в которой новые процессы не имеют доступа к объектам ядра, не могут выделять память и не могут запускать код, а для доступа к ресурсам применяется система пространств имён, определяющая доступные полномочия. Платформа предоставляет фреймворк для создания компонентов, представляющих собой программы, запускаемые в своём sandbox, которые могут взаимодействовать с другими компонентами через IPC.
===========
Источник:
OpenNet.RU
===========

Похожие новости: Теги для поиска: #_fuchsia, #_linux
Профиль  ЛС 
Показать сообщения:     

Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы

Текущее время: 10-Май 22:41
Часовой пояс: UTC + 5