Google разработала достаточно гибкую ОС. Но чистый AOSP вендоров зачастую не устраивает, и они вынуждены допиливать его под себя; впрочем, речь не о них. «Корпорация добра» на удивление лояльно относится к форкам своего детища, поэтому неудивительно, что они растут как грибы после свежего дождя. Давай посмотрим на самые интересные.

 

Введение

Форков Android существует много. Большая их часть, конечно, не содержит кардинальных изменений, но некоторые довольно сильно отличаются от AOSP: один — усиленной безопасностью, другой — использованием исключительно открытых компонентов и так далее. В этой статье мы поговорим о следующих вариантах Android:

  • Amazon Fire OS — форк Android от Amazon. Отличительная особенность — отвязка от сервисов Google и ориентация на контент.
  • Android-x86 — форк для (устаревших) нетбуков на платформе x86.
  • Console OS — опять же форк для x86-платформы, заточенный под современные девайсы.
  • CopperheadOS — Android с повышенной безопасностью.
  • Replicant — полностью свободный клон Android. Столлман одобряет.

Такие форки, как CyanogenMod, AOKP или MIUI, смысла описывать не имеет — тема уже жевана-пережевана.

 

Amazon Fire OS

Как известно, у Amazon имеется планшет-читалка, одна из линеек моделей которой работает на клоне Android. На этом же клоне работает и провалившийся Fire Phone. Посмотрим, какие особенности имеются у этого варианта Android.

Прежде всего, Fire OS полностью отвязана от инфраструктуры Google. В принципе, это логично, но Amazon пошла еще дальше, создав замену если не всем, то многим сервисам Google. Так, вместо Play Store имеется Amazon Appstore (с премодерацией контента), вместо Google Maps — свой картографический сервис; даже рекламная платформа своя.

Второй момент, который стоит отметить, — собственный лаунчер. Он гораздо более ориентирован на контент, нежели стандартные лаунчеры, благодаря так называемому carousel view — режиму отображения приложений, представляющему собой крупные (на весь экран) значки приложений, которые нужно листать. Кроме того, интерфейс из-за такого «карусельного» дизайна кажется более заточенным под виджеты.

Интерфейс Fire OS
Интерфейс Fire OS

В-третьих, в Fire Phone имелась такая интересная вещь, как динамическая перспектива, позволяющая создать иллюзию 3D-интерфейса. Работает это таким образом: четыре инфракрасных датчика, которые находятся по углам передней стороны устройства, фиксируют наклон головы и угол зрения, и в зависимости от этого Fire OS изменяет интерфейс. Это выглядит довольно эффектно, но для практического применения, пожалуй, не годится — прежде всего из-за отсутствия приложений.

Еще одна интересная функция — Firefly, распознающая предметы (в самом широком смысле), которые попадают в объектив активированной камеры (и, соответственно, предлагающая их купить). Работает это, понятно, только с товарами западного рынка.

Стоит заметить, что Amazon не входит в OHA (Open Handset Alliance — союз разработчиков смартфонов на базе Android), так что при установке сторонних приложений есть риск, что они попросту не заработают. Несмотря на это, в остальном Fire OS — все тот же Android; его даже можно рутить (специфичным для Fire OS способом).

 

Android-x86

Android изначально разрабатывался для ARM-систем (что и понятно — тогда x86-процессоры по энергопотреблению никак не подходили для смартфонов). Однако примерно в это же время поднялась волна интереса к дешевым нетбукам, и сразу несколько групп энтузиастов начали портировать Android на x86-платформу. Из этих портов наиболее популярным стал Android-x86.

Фактически он представляет собой полноценный дистрибутив с текстовым инсталлятором (который, правда, служит всего лишь для разбивки на разделы и записи образа Android в выделенный раздел) и возможностью запуска в режиме Live CD. Однако поддержка устройства ограниченная и в основном покрывает legacy-устройства на базе Intel Atom:

  • Asus EEE PC;
  • Viewsonic Viewpad 10;
  • Viliv S5;
  • Dell Inspiron Mini Duo
    и некоторые другие.

Android-x86. Установка завершена
Android-x86. Установка завершена

Одна из особенностей Android-x86 — полноценное, не урезанное Linux-ядро со множеством драйверов и файловых систем. Кроме того, с версии 4.4-r2 данный форк поддерживает и EFI, а также имеется начальная поддержка 64-разрядных процессоров. Это позволяет ему работать и на современном железе.

Загрузочное меню Android-x86
Загрузочное меню Android-x86

Перейдем к приложениям. Как ни странно, в состав образов форка входят и приложения Google, в частности Play Market, — следовательно, при наличии аккаунта Google можно устанавливать практически те же самые приложения, которые доступны на планшетах/телефонах. Однако иногда всплывают проблемы совместимости:

  • Skype — устанавливается, запускается, выполняет логин пользователя, сообщения отправляются, но звонки не работают;
  • официальное приложение «ВКонтакте» — все в порядке;
  • Angry Birds — толком не работает;
  • Chrome — вываливается после попытки запуска;
  • Opera Mini — работает.

Скорее всего, неработоспособность некоторых приложений связана с кодом, написанным с использованием NDK, который в основном компилируется под ARM. Стоит отметить наличие root-доступа. Это позволяет производить операции, которые иначе никак не выполнить, например установку Xposed Framework. Также имеется поддержка NTFS-3G. Поскольку дистрибутив рассчитан в том числе на двойную загрузку, подобная возможность достаточно полезна.

Резюмируя впечатления: это AOSP, заточенный под ноутбуки и нетбуки. Некоторые приложения по определению работать не будут. Да и использование Android на устройствах без сенсорного экрана кажется нецелесообразным — его интерфейс на подобное не рассчитан (справедливости ради стоит сказать, что в Android имеется поддержка мыши, множества клавиатурных комбинаций и возможность навигации по интерфейсу приложений с помощью клавиатуры. — Прим. ред.).

Android-x86. Информация о версии
Android-x86. Информация о версии
 

Console OS

Console OS представляется как форк, заточенный под современные x86-устройства (планшеты наподобие Surface 3). Поддерживаются исключительно UEFI-устройства. Кроме того, заявлена полная совместимость с NDK, более удобный для десктопов графический интерфейс и полноценная поддержка OpenGL ES, что позволит запускать тяжелые современные игры. В платной версии, Console OS Pro, анонсируется также функция InstaSwitch — быстрое переключение с Windows на Android и обратно.

На практике же список поддерживаемых устройств крайне мал (только процессоры Intel). Система до сих пор находится в состоянии Development Release и толком не запускается в VirtualBox. Кроме того, InstaSwitch разработчик еще не реализовал, да и на доступных видео интерфейс пользователя не очень смахивает на десктоп-ориентированный.

Console OS сразу после запуска
Console OS сразу после запуска

В общем, задумка выглядит неплохо, но на практике в текущем состоянии это еще более урезанный форк, чем Android-x86. Более того, есть подозрение, что это мошенничество, — ибо единственный доступный разработчик все время «кормит завтраками». «Мы работаем, потерпите». Деньги же, собранные на Kickstarter, он не возвращает.

 

CopperheadOS

Это форк CyanogenMod с усиленной безопасностью. Он находится на ранней стадии разработки, но уже сейчас имеет довольно привлекательные возможности.

Самая, пожалуй, интересная из них — ядро, собранное с поддержкой PaX. PaX представляет собой подмножество патчсета GRSecurity, которое должно, во-первых, усилить защиту против исполнения кода в области данных, во-вторых, обеспечить рандомизацию адресного пространства и усилить защиту стека, в-третьих.

Настройки PaX в CopperheadOS
Настройки PaX в CopperheadOS

Также используется усиленный аллокатор памяти, портированный из OpenBSD. Этот аллокатор уменьшает риск эксплуатации уязвимостей use-after-free и double free. Можно настроить его так, чтобы в конце больших аллокаций памяти размещались сторожевые страницы, что позволяет обнаруживать и предотвращать переполнения. Аналогичную опцию разработчики CopperheadOS реализовали и для маленьких аллокаций. Правда, по умолчанию эти возможности отключены из-за большого потребления памяти.

Кроме того, вместо Android-модели порождения процессов с помощью одного только fork() используется стандартная UNIX-модель fork()/exec(). Это позволяет рандомизировать адресное пространство и некоторые другие сущности для каждого процесса. В Android-модели же они были одинаковыми для всех процессов, порожденных Zygote.

Также предусмотрена защита указателей функций. В частности, указатели на vDSO-функции после инициализации становятся доступными только для чтения, а в libc перезаписываемые указатели устранены вообще.

Другие усовершенствования включают в себя удаление некоторых контекстов безопасности SELinux, усиленные настройки безопасности (например, пароли по умолчанию не отображаются), компиляцию SQLite с опцией SECURE_DELETE, что заставляет эту мини-СУБД перезаписывать удаляемый контент нулями, и многое другое.

Разработчики позиционируют CopperheadOS как Android для бизнеса и планируют поставлять телефоны на его основе. Это выглядит достаточно интересной идеей — как, впрочем, и сам форк. В отличие от некоторых описываемых форков, к разработке данного можно присоединиться на Гитхабе, то есть он полностью открыт.

Проект, хоть он и на ранней стадии разработки, кажется очень перспективным — в этом направлении мало кто работал (вспоминается разве что SEAndroid, наработки которого были включены в Android 5, а сам проект после этого закрылся), так что, возможно, он займет свою нишу среди бесчисленных Android-форков.

 

Replicant

Название этого форка — отсылка к фильму «Бегущий по лезвию», в котором репликантами называли искусственных людей. Впрочем, к форку это название имеет лишь косвенное отношение (репликанты ищут свободы, а данный форк позиционируется как совершенно свободный).

Его разработка началась в 2010-м, с целью сделать полностью свободный вариант прошивки HTC Dream, первого Android-телефона. После была предпринята попытка создать клон Google Play, к сожалению малоуспешная, — на данном поприще более преуспел F-Droid (который и заюзали разработчики Replicant).

Сейчас Replicant позиционируется как самый свободный форк. Связано это с тем, что даже для работы AOSP на модельном ряде Nexus требуются некоторые проприетарные драйверы (камера, GPS, Wi-Fi). Replicant же использует их свободные аналоги, написанные с нуля. Однако, поскольку данный клон не настолько распространен, как, к примеру, CyanogenMod, и разработчиков у него значительно меньше, его текущая версия соответствует версии Android 4.2.

На данный момент поддерживаются двенадцать устройств, среди них, например, Nexus S, Galaxy S, Galaxy Note, Galaxy Tab 2 10.1.

Помимо того что Replicant отстает от основной ветки AOSP, он в некоторых случаях может еще и ощутимо тормозить — у разработчиков просто нет ресурсов для реализации открытых драйверов 3D-ускорителя, так что в игры на нем поиграть не удастся. Также могут быть проблемы с GPS — практически все чипы используют при обмене информацией с ПО гаджета закрытые и недокументированные протоколы.

Информация о сборке Replicant
Информация о сборке Replicant

Именно разработчики Replicant обнаружили бэкдор в коде, отвечающем за взаимодействие с модемом (напомним, что в современных мобильных устройствах модемом именуют, по сути, совершенно отдельный процессор, работающий под управлением проприетарного ПО). Суть бэкдора заключалась в том, что со стороны модема может прийти некая команда, которая заставит слой, отвечающий за взаимодействие, совершить операцию, связанную с файловой системой. Вероятно, как раз после этого случая разработчики стали выбирать модели, в которых модем не может контролировать процессор, исполняющий Android и приложения.

Надо сказать, сами разработчики подчеркивают, что они не стремятся сделать Replicant популярным — всего лишь хотят предоставить альтернативу для тех, кому это нужно.

Резюмируя — Replicant вряд ли понравится тем, кто покупает гаджеты исключительно для игр. Он также не подойдет тому, кто любит все современное и кому хочется ОС без тормозов. Данный форк скорее для людей, желающих получить гарантию отсутствия бэкдоров в системе, а также для романтически настроенных сторонников свободного ПО.

 

Заключение

Клоны ОС от Google очень многообразны. Есть среди них и коммерческие (такие как Fire OS), но открытых все же больше.

Fire OS при ближайшем рассмотрении оказался все тем же Android, отвязанным от Google, но таким же макаром привязанным к Amazon, с несколько иным интерфейсом.

Android-x86 — очень интересный проект, предназначенный для запуска Android на x86-железе. Он выгодно отличается еще и полноценным набором модулей ядра. Но вот сам интерфейс Android для устройств без сенсорного экрана очень неудобен, что резко снижает ценность данного форка.

Console OS представляется как задумка довести до ума Android-x86. И все бы ничего, но на данный момент то, что имеется в открытом доступе, вызывает изрядную долю скептицизма.

CopperheadOS тоже выглядит многообещающе. Разработчики основательно подошли к делу обеспечения безопасности и, помимо стандартных механизмов Android (которых, надо сказать, более чем достаточно), задействовали еще и другие, не всегда используемые даже на серверах.

Replicant предоставляет пользователям альтернативу AOSP, очищенную от блобов. Конечно, эта альтернатива несколько менее функциональна и быстра, нежели большинство стоковых прошивок, однако такова цена свободы.

Выбрать есть из чего.

Конструкторы для прошивок

Собрать собственный вариант Android, на самом деле, довольно легко. Для этого есть конструкторы, позволяющие заточить определенные прошивки под свои нужды. Упомяну о двух:

  • Android-Kitchen (разработчик — dsixda) позволяет производить некоторые базовые действия над прошивкой. Например, с его помощью можно включить в прошивку SuperSU, добавить Bash, изменить boot-анимацию, удалить или добавить приложения, заменить ядро, выполнить деодексирование и многое другое.
  • MIUI Patchrom предназначен для портирования MIUI на свой аппарат. У него довольно интересный принцип работы. По сути это набор инструментов, работающих в (полу)автоматическом режиме и позволяющих вытащить текущую прошивку прямо с телефона, дизассемблировать ее (точнее, компоненты фреймворка), внедрить в них специфичный для MIUI код, добавить приложения из того же MIUI и собрать прошивку. В итоге получается «прошивка Франкенштейна», выглядящая и работающая как MIUI, но по факту им не являющаяся.

Вообще же, для более тонкой кастомизации не существует конструктора, поэтому придется качать исходники AOSP, вооружаться знаниями C++ и Java и начинать править.

Оставить мнение