- PVSM.RU - https://www.pvsm.ru -

С момента появления загадочного репозитория на GitHub с описанием «Pink + Purple = Fuchsia» прошло десять лет. За это время медиа-пространство успело пережить несколько циклов хайпа: от «Убийцы Android» до «Мертвого проекта Google».
На календаре январь 2026 года. В магазинах нет коробок с надписью «Fuchsia Phone». Однако, если у вас дома стоит Nest Hub второго поколения, вы уже пользуетесь этой ОС. Если вы разработчик под Android, вы, возможно, уже взаимодействуете с её компонентами через виртуализацию.
Fuchsia не умерла. Она совершила то, что в биологии называется метаморфозом. В этой статье мы отбросим маркетинговую шелуху и разберем архитектуру системы "под микроскопом". Поговорим о том, как Google решает фундаментальные проблемы ядра Linux, что такое Starnix на уровне системных вызовов, зачем нужен FIDL и почему 2024–2025 годы стали переломными для проекта, переведя его из стадии R&D в стадию инфраструктурного фундамента.
Чтобы понять Fuchsia, нужно понять Zircon. Это не форк Linux, не Unix-подобная система. Это микроядро, написанное на C++ (а не на C), архитектурно наследующее идеи Little Kernel (LK).
В ядре Linux, несмотря на модульность, все драйверы (GPU, Wi-Fi, File Systems) живут в Ring 0. Они делят одно адресное пространство.
Цена ошибки: Разыменование нулевого указателя в драйвере Bluetooth от вендора средней руки приводит к падению всей системы (Kernel Panic).
Вектор атаки: Уязвимость в драйвере видеоускорителя дает злоумышленнику права root на всё устройство.
Zircon отказывается от парадигмы Unix «Всё есть файл». В Zircon всё есть Handle (дескриптор) к объекту.
Ядро Zircon экстремально компактно. Оно занимается только:
Планированием потоков.
Управлением виртуальной памятью (VMO).
Доставкой сообщений между процессами (IPC через Channels).
Все драйверы — файловая система, сетевой стек, драйверы дисплея — вынесены в Userspace. Они работают как обычные процессы. Если драйвер Wi-Fi падает, driver_manager видит это и перезапускает процесс. Стек TCP/IP не вешает телефон при перегрузке.
Почему это не делали раньше?
Главный бич микроядер — накладные расходы на IPC (Inter-Process Communication). В Linux системный вызов (syscall) — это быстрая ассемблерная инструкция. В микроядре передача данных от драйвера к приложению требует копирования сообщений и переключения контекста.
Google потратила годы на оптимизацию механизма Channels и VMO (Virtual Memory Objects), чтобы свести этот оверхед к минимуму, сопоставимому с монолитными ядрами.
Одна из главных причин фрагментации Android — отсутствие стабильного ABI (Application Binary Interface) для драйверов в Linux.
Ситуация в Linux: Внутренние структуры ядра меняются от версии к версии. Драйвер, скомпилированный для Linux 5.4, не заработает на 5.10. Qualcomm вынуждена перекомпилировать (и часто переписывать) свои "блобы" под каждое обновление ядра. Это дорого. Поэтому ваш смартфон перестает получать обновления через 2-3 года.
Решение Fuchsia (FIDL):
Fuchsia вводит FIDL (Fuchsia Interface Definition Language). Это язык описания интерфейсов, через который общаются все компоненты системы.
Драйверы в Fuchsia не "дергают" функции ядра напрямую. Они обмениваются сообщениями по строго описанному протоколу. Это гарантирует ABI Stability. Вы можете обновить ядро Zircon, и старый драйвер пятилетней давности продолжит работать, потому что протокол общения (контракт) остался прежним.
Это открывает дорогу к обновлению ядра ОС независимо от производителей железа — то, что есть в Windows (вы ставите Windows 11 на старое железо), но чего никогда не было в Android.
Если бы Google ждала, пока разработчики перепишут Telegram, WhatsApp и Instagram под нативный Zircon, система не вышла бы никогда. Решением стал проект Starnix.
Важно понимать: Starnix — это НЕ виртуальная машина.
В классической ВМ (qemu/kvm) у вас запускается полное ядро Linux (Guest Kernel). Это требует выделения памяти, долгой загрузки и накладных расходов на виртуализацию.
Starnix работает иначе. Это процесс внутри Fuchsia, который реализует ABI ядра Linux.
Приложение Android (Linux-binary) делает системный вызов (например, clone() или epoll_wait()).
Вместо ядра Linux этот вызов перехватывает Starnix.
Starnix транслирует его в цепочку вызовов Zircon API.
Ответ возвращается приложению.
Приложение "думает", что оно в Linux. Оно видит файловую систему /proc, видит PID-ы, но всё это — иллюзия, созданная Starnix.
До 2024 года Starnix был экспериментальным. За последние два года произошли критические изменения:
Restricted Mode & Exception Handling:
Zircon научился запускать процессы в специальном "ограниченном режиме", где при попытке совершить syscall управление мгновенно передается Starnix-у без тяжелого переключения контекста. Это приблизило производительность к нативной (90-95% от нативного Linux).
"One Big VMO" (Управление памятью):
Linux и Zircon по-разному управляют страницами памяти. Раньше Starnix создавал тысячи мелких объектов VMO для эмуляции памяти Linux, что "убивало" производительность. В 2025 году внедрили архитектуру, где Starnix аллоцирует гигантский VMO и сам менеджит его внутри, эмулируя поведение Linux Memory Manager.
Поддержка 32-bit (arm32):
Колоссальная инженерная боль. Миллионы старых Android-приложений — 32-битные. Zircon — чисто 64-битная система. Starnix научился транслировать 32-битные вызовы в 64-битное пространство Zircon. Это позволило запустить "хвост" легаси-софта.
Как играть в PUBG или Call of Duty через Starnix? Эмуляция CPU быстрая, но графика требует прямого доступа к железу.
В Linux критически важная часть драйвера GPU (подсистема DRM) находится в ядре. В Fuchsia — в юзерспейсе.
Здесь на сцену выходит Magma — драйверная архитектура для GPU в Fuchsia.
В 2024 году была финализирована связка Starnix + Magma.
Android-приложение использует стандартный драйвер Vulkan.
Starnix распознает команды Vulkan и "пробрасывает" их (Pass-through) напрямую в системный сервис Magma.
Magma отдает их вендор-специфичному драйверу (ICD), который работает в userspace Fuchsia.
Результат: Android-игры работают с аппаратным ускорением. Потери FPS минимальны, так как тяжелые шейдеры исполняются на GPU, а не эмулируются.
В 2024 году в AOSP (Android Open Source Project) и репозиториях Fuchsia начали мелькать коммиты, связанные с Microfuchsia. Это и есть ответ на вопрос "Где релиз?".
Google изменила стратегию. Вместо того чтобы заменять Android, Fuchsia начинает встраиваться в него.
Современные Android-устройства (начиная с Pixel 9/10) поддерживают AVF (Android Virtualization Framework). Это позволяет запускать изолированные виртуальные машины (pKVM) рядом с основным Android.
Сценарий использования Microfuchsia:
Зачем запускать урезанный Linux внутри Linux для безопасности, если Linux сам по себе монолитен и уязвим?
Google предлагает запускать Microfuchsia в защищенном анклаве.
Обработка биометрии (FaceID/Fingerprint).
Хранение ключей шифрования (Keystore).
Защищенная обработка DRM-контента.
Микроядро Zircon идеально подходит для роли "доверенной ОС" (Trusted Execution Environment), так как оно верифицируемо и имеет минимальную поверхность атаки. Таким образом, Fuchsia уже проникает на телефоны, становясь невидимым "телохранителем" Android.
Если система так хороша, почему мы не можем "снести" Android и поставить Fuchsia на Pixel?
Проблема не в процессоре и не в экране. Проблема в RIL (Radio Interface Layer).
Современный LTE/5G модем — это черная коробка. Qualcomm и Samsung предоставляют драйверы для модемов только под ядро Linux. Это миллиарды строк закрытого кода, управляющего частотами, hand-over (переключением между вышками) и VoLTE.
Написать открытый драйвер 5G-модема невозможно (патентные ограничения и секретность вендоров).
Запустить Linux-драйвер модема через Starnix теоретически можно, но это требует доступа к низкоуровневым шинам, который Starnix пока эмулирует нестабильно.
Именно поэтому первыми устройствами на Fuchsia стали Nest Hub (устройства с Wi-Fi). Там нет сотового модема. Пока Qualcomm не напишет нативный драйвер модема под Zircon (или пока Starnix не станет идеальным), полноценный смартфон на Fuchsia невозможен.
Fuchsia не имеет "своего" лица. В отличие от Windows, где есть "Проводник", или Android с его SystemUI, Fuchsia — это холст.
Ранее Google экспериментировала с оболочками Armadillo и Ermine. Все они убиты.
Сейчас концепция такова: "Bring Your Own Shell".
Интерфейс Fuchsia полностью строится на Flutter.
Внедрение движка Impeller в Flutter (отказ от Skia) было во многом продиктовано нуждами Fuchsia. Impeller предкомпилирует шейдеры, исключая "jank" (фризы) при первом запуске анимаций. Для системы, где весь UI — это одно большое Flutter-приложение, это критично.
Интересный факт: на устройствах Nest Hub система отрисовывает UI, минуя тяжелые оконные менеджеры. Flutter пишет напрямую в буфер экрана через композитор Flatland (пришедший на смену устаревшему Scenic). Это дает невероятную плавность на слабом железе.
Будущее операционных систем Google — это не резкий скачок, а конвергенция.
Starnix достиг зрелости, позволяя запускать legacy-софт.
Zircon доказал свою эффективность на миллионах умных дисплеев.
Лицензия позволяет вендорам закрывать код, что потенциально выгоднее GPL.
Однако инерция индустрии огромна. В 2026 году мы видим сценарий "Тихой экспансии". Fuchsia не убивает Android, она его ассимилирует. Сначала как гипервизор для безопасности (Microfuchsia). Затем как основа для IoT. Возможно, через 5 лет ChromeOS переедет на ядро Zircon (эксперименты с Ferrochrome это подтверждают).
Мы ждали революцию с флагами на баррикадах, а получили эволюцию на уровне ABI и системных вызовов. И с инженерной точки зрения, это гораздо более впечатляющий результат.
Автор: lil_master
Источник [1]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/linux/440876
Ссылки в тексте:
[1] Источник: https://habr.com/ru/articles/982666/?utm_source=habrahabr&utm_medium=rss&utm_campaign=982666
Нажмите здесь для печати.