В ОС Fuchsia работают над поддержкой запуска немодифицированных Linux-программ
Автор
Сообщение
news_bot ®
Стаж: 7 лет 2 месяца
Сообщений: 27286
Разработчики из компании 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
===========
Похожие новости
- Главная ссылка к новости (https://news.ycombinator.com/i...)
- OpenNews: В ОС Fuchsia начат приём изменений от представителей сообщества
- OpenNews: Проект dahliaOS развивает дистрибутив на базе технологий Linux и Fuchsia
- OpenNews: ОС Fuchsia переходит на стадию тестирования на сотрудниках Google
- OpenNews: Google ввёл в строй сайт для разработчиков, посвящённый ОС Fuchsia
- OpenNews: В Google ведётся обсуждение возможной замены Android на ОС Fuchsia
Похожие новости:
- [Open source, *nix, Виртуализация, Карьера в IT-индустрии] Edge-сервера, терминальные сеансы с помощью Linux-команды script и 5 подходов к облачной автоматизации
- [Настройка Linux, Open source, Графические оболочки] Сражение Linux на поприще Windows
- [Open source, Go, Разработка под Linux, Звук] Go, локдаун и новый MPD-клиент — встречайте Ymuse
- Выпуск Linux-дистрибутива PCLinuxOS 2021.02
- [Open source, *nix] FOSS News №55 – дайджест материалов о свободном и открытом ПО за 1-7 февраля 2021 года
- [Настройка Linux, Серверное администрирование, Разработка под Linux] Почему линукс использует swap-файл, часть 2
- Уязвимости в ядре Linux, затрагивающие реализации VSOCK, Futex и io_uring
- [Настройка Linux, *nix, DevOps, Разработка на Raspberry Pi] Установка docker-контейнеров c Zabbix на Raspberry Pi
- [Системное администрирование, *nix, DevOps, Микросервисы, Kubernetes] Ломаем и чиним Kubernetes
- [Настройка Linux, Разработка веб-сайтов, CSS, JavaScript] Просто вертикальный монитор не значит, что я на телефоне (перевод)
Теги для поиска: #_fuchsia, #_linux
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 27-Апр 04:13
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 7 лет 2 месяца |
|
Разработчики из компании 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 =========== Похожие новости
|
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 27-Апр 04:13
Часовой пояс: UTC + 5