android aosp overlay что это

Все прошивки в одном посте

android aosp overlay что это

В данном посте я разберу все(Ну может многие) виды и подвиды прошивок на android.

Тут будут как официальные, так и сделанные Васей из соседнего двора.

Для всех тестов я использовал один из самых популярных для прошивки телефон Xiaomi Redmi Note 7. Начнём!

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

1. Pixel Experience

Стоковая прошивка. Имеет крутой дизайн. Не стабильная. Батарейку держит очень хорошо. Кучу багов и ограничений. Рекомендую бежать от нее подальше.

3. Oxygen OS GSI/nun GSI

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

Голый Android. Если вы умеете сами кастомизировать прошивки(Тут нет нечего сложного) тогда для вас она отлично подойдёт.

6. Ubuntu Touch GSI

Моя любимая прошивка. Сразу скажу это не андроид, а полноценный линукс на вашей трубе. Пользовался около 2х месяцев и очень понравилась. Из багов:

•В случае некоторых юзеров, не работал Bluetooth. Вам может повезти.

•Подтормажиает список недавних приложений.

Так как почти все по портировано под Arm то соответственно они пашут на убунту тач.

Удалось поставить gimp, blender, wine(arm) и какой-то эмулятор апк. Почему ушёл? Выпала кнопка на телефоне из-за чего пришлось уйти на зелёного робота. А на убунте были проблемы с включением телефона. Также на данный момент разрабы работают уже на нативном запуске андроид программ. Ну и в таком случае уже можно будет мне как некрофилу вернуться к своему трупу.

Очень интересный проект с огромным количеством функций. К примеру можно поставить графический пароль 8*8.

Для ознакомления. Ознакомился. Говно говном. Дальше

Ну что сказать, прикольно. Но для полноценного использования не стоит.

Прошивок куча, но все работают как говно. Рана ещё.

Источник

[Советы] «Липосакция» Android + MIUI 10 или отключаем ненужное

[index]Содержание
[#1]Общее…
[#2]Список замороженного с пояснениями
[#3]Скрипт для отключения замороженного
[/index]

Рад всех приветствовать!
Хотел рассказать о своём опыте облегчения жизни устройству, заключающееся в отключении мне не нужных приложений, сервисов и т. п.
Возможно, кому–либо это поможет.

Пост постараюсь поддерживать в актуальном состоянии. С задержкой от «нововведения» минимум на сутки, так как надо сначала самому оценить влияние любого, вновь отключаемого приложения, а уж потом писать.

Правда, приходится не забывать запускать его каждый раз при перезапуске аппарата, так как с редактированием init.qcom.rc и (или) default.prop у меня лёгкая проблема в виде бутлупа 🙂

А дальше итерационно…
В Titanium Backup приложение морозится, удаляются его данные. Перезагрузка в TWRP, Очистка → Выборочная очистка → Dalvik/ART cache + cache → перезагрузка в ОС, ожидание, Titanium Backup, …

На следующей странице (оглавление вверху) что было заморожено с пояснениями по поводу приложений (что знал и удалось найти в сети). Удалил без сожаления facebook, MGRSVendorApp, PartnerNetflix…

Установщик пакетов из GApps’ов ( com.google.android.packageinstaller ) удалять нельзя! Морозить тоже. Будет лёгкий кирпичик. Скорее всего, возврат /data/system/packages.xml проблему решит, но не факт.

На текущий момент мой R5A жив-здоров и за весь день (05:00 ÷ 21:00) съедает 20 ÷ 25 процентов заряда (по данным BetterBatteryStats до 1,6%/час), и это за рабочий день, когда звонки, СМС и почта + нет WiFi, LTE не работает и сидишь на 3G. Сейчас суббота, за 16 часов при подключенном WiFi расход 10 (десять) процентов батареи. Как по мне вполне хороший результат. Некоторые приложения ругаются на то, что им нужны google play services (штатный ассистент, музыка, Авито, Вайбер), но при этом вполне себе работают и не докучают вылетами. На четвёртой странице скриншоты… Они местами длинные очень И на экране компа смотрятся непривычно.

Чтобы на 10.1.1.0.NCKMIFI нормально работал TitaniumBackup до первого использования стоит поставить busybox. До этого я голову себе сломал, пытаясь понять почему же не все версии запускаются (особенно новые).

NB! После проведённых манипуляций аппарат до заводских настроек не возвращается. Только полная перепрошивка. Связано это с ГАппсами, насколько я смог понять.

«The Compatibility Test Suite (CTS) is a free, commercial-grade test suite, available for download. The CTS represents the «mechanism» of compatibility.

The CTS runs on a desktop machine and executes test cases directly on attached devices or an emulator. The CTS is a set of unit tests designed to be integrated into the daily workflow (such as via a continuous build system) of the engineers building a device. Its intent is to reveal incompatibilities early on, and ensure that the software remains compatible throughout the development process.»

«CTS uses these apps to test privileges and permissions. To pass the tests, you must preload the apps into the appropriate directories on the system image without re-signing them.»

Источник

Android aosp overlay что это

Начнем с общих вопросов:
Q: Ну и кто все это придумал? Проклятые производители простым гикам жизнь усложняют?
A: Новая структура «A/B разделов» разработана непосредственно Google-ом как часть глобальных изменений в архитектуре Android. Она успешно используется в смартфонах Google Pixel, Essential Phone и различных других устройствах. В дальнейшем все больше устройств от сторонних производителей будут ее использовать. Ничего плохого и страшного в этом нет, наоборот, открывается много новых возможностей.

Таблица разделов на примере Google Pixel:
Дабы наглядно отобразить, изложенную выше, теорию и увидеть отличия по сравнению с другими устройствами — познакомимся с таблицей разделов Google Pixel.
Если вы вообще не знакомы со структурой разделов в Linux-подобных системах, и Android в частности, — советую поискать информацию об этом в Google, благо ее полно.

Нас интересуют конкретные разделы, существующие в двух копиях для наглядности и демонстрации.
Итак (раскрываем код полностью):

/dev/block/bootdevice/by-name/aboot_a # Разделы первого загрузчика (Слот «a»)
/dev/block/bootdevice/by-name/apdp_a # Разделы первого загрузчика (Слот «a»)
/dev/block/bootdevice/by-name/bootlocker_a # Разделы первого загрузчика (Слот «a»)
/dev/block/bootdevice/by-name/cmnlib32_a # Разделы первого загрузчика (Слот «a»)
/dev/block/bootdevice/by-name/cmnlib64_a # Разделы первого загрузчика (Слот «a»)
/dev/block/bootdevice/by-name/devcfg_a # Разделы первого загрузчика (Слот «a»)
/dev/block/bootdevice/by-name/hosd_a # Разделы первого загрузчика (Слот «a»)
/dev/block/bootdevice/by-name/hyp_a # Разделы первого загрузчика (Слот «a»)
/dev/block/bootdevice/by-name/keymaster_a # Разделы первого загрузчика (Слот «a»)
/dev/block/bootdevice/by-name/msadp_a # Разделы первого загрузчика (Слот «a»)
/dev/block/bootdevice/by-name/pmic_a # Разделы первого загрузчика (Слот «a»)
/dev/block/bootdevice/by-name/rpm_a # Разделы первого загрузчика (Слот «a»)
/dev/block/bootdevice/by-name/tz_a # Разделы первого загрузчика (Слот «a»)
/dev/block/bootdevice/by-name/xbl_a # Разделы первого загрузчика (Слот «a»)

/dev/block/bootdevice/by-name/aboot_b # Разделы второго загрузчика (Слот «b»)
/dev/block/bootdevice/by-name/apdp_b # Разделы второго загрузчика (Слот «b»)
/dev/block/bootdevice/by-name/bootlocker_b # Разделы второго загрузчика (Слот «b»)
/dev/block/bootdevice/by-name/cmnlib32_b # Разделы второго загрузчика (Слот «b»)
/dev/block/bootdevice/by-name/cmnlib64_b # Разделы второго загрузчика (Слот «b»)
/dev/block/bootdevice/by-name/devcfg_b # Разделы второго загрузчика (Слот «b»)
/dev/block/bootdevice/by-name/hosd_b # Разделы второго загрузчика (Слот «b»)
/dev/block/bootdevice/by-name/hyp_b # Разделы второго загрузчика (Слот «b»)
/dev/block/bootdevice/by-name/keymaster_b # Разделы второго загрузчика (Слот «b»)
/dev/block/bootdevice/by-name/msadp_b # Разделы второго загрузчика (Слот «b»)
/dev/block/bootdevice/by-name/pmic_b # Разделы второго загрузчика (Слот «b»)
/dev/block/bootdevice/by-name/rpm_b # Разделы второго загрузчика (Слот «b»)
/dev/block/bootdevice/by-name/tz_b # Разделы второго загрузчика (Слот «b»)
/dev/block/bootdevice/by-name/xbl_b # Разделы второго загрузчика (Слот «b»)

/dev/block/bootdevice/by-name/modem_a # Раздел первого модема/радиомодуля (Слот «a»)
/dev/block/bootdevice/by-name/modem_b # Раздел второго модема/радиомодуля (Слот «b»)

/dev/block/bootdevice/by-name/boot_a # Раздел первого ядра (Слот «a»)
/dev/block/bootdevice/by-name/boot_b # Раздел второго ядра (Слот «b»)

/dev/block/bootdevice/by-name/vendor_a # Первый проприетарный раздел (Слот «a»)
/dev/block/bootdevice/by-name/vendor_b # Второй проприетарный раздел (Слот «b»)

/dev/block/bootdevice/by-name/system_a # Первый системный раздел (Слот «a»)
/dev/block/bootdevice/by-name/system_b # Второй системный раздел (Слот «b»)

Как видно из выдержки выше, — имеются два, независимых между собой, слота, а именно «группы разделов», которые содержат в себе основные, обновляемые компоненты прошивки.

Два представленных слота состоят из:
Bootloader (загрузчик) — 28 разделов (14 на каждый слот).
Radio/Modem (радиомодуль) — 2 раздела (по одному на слот).
Boot (ядро) — 2 раздела (по одному на слот).
Vendor (драйверы) — 2 раздела (по одному на слот).
System (система) — 2 раздела (по одному на слот).

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

Принципиальные отличия по сравнению с другими устройствами:
С дублированием разделов и, структурой в целом, разобрались. Однако, вы могли заметить (если просматривали полную таблицу разделов) отсутствие, привычных в любом устройстве, разделов «/recovery» и «/cache». Да, их действительно нет. Но могут и встречаться в отклонениях от нормы.

Q: Стоп. Но если раздела для Recovery нет, а сам Recovery есть (Он ведь есть, правда?), где же он находится?
A: Система восстановления (Recovery) включена в состав образа ядра (boot). А потому, наличие, отсутствие и тип установленного recovery напрямую зависят от ядра системы. Переключение в него (Recovery), как и раньше, осуществляется специальным флагом в «/misc» разделе.
Именно в этом и состоит загвоздка установки TWRP — его как-то нужно «засунуть» в ядро. Потому TWRP сначала временно загружают (устанавливать то его некуда), а затем уже из TWRP, специальным скриптом, на лету распаковывается ядро и вшивается в него TWRP. Такая же схема «перепаковки ядра на лету» применяется при получении «systemless» рут-прав через SuperSU и Magisk.

Q: Хорошо, а что же тогда случилось с «/cache» разделом?
A: В привычных устройствах он необходим лишь для хранения OTA обновлений и системных логов Recovery, в данном же случае, ввиду применения новой схемы этих самых обновлений (см. ниже), раздел стал попросту «не нужОн». Вот от него и избавились.

Ручное переключение слотов:
Естественно, помимо самих слотов, должен быть способ ручного взаимодействия с ними. И он есть. Для ручного переключения текущего активного слота необходимо воспользоваться утилитой fastboot. Команды:

Итоги и положения:
1. Между слотами как система, так и сам пользователь могут переключаться.
2. Изначально (с завода) слоты полностью идентичны между собой. Различия появляются после применения любого OTA обновления системы.
3. Слоты изолированы между собой. Состояние и целостность одного слота никак не влияет на другой. За исключением применения OTA обновлений (см. ниже).

«Seamless» система обновлений:
Итак, с разделами и слотами разобрались. Но что же там с обновлениями, наверняка их тоже коснулись изменения, ввиду описанного выше?
Да, OTA обновления на устройствах с A/B структурой кардинально отличаются от того, что мы можем видеть на других устройствах.

Android 8.0+ — трансляция обновлений:
Начиная с версии Android 8.0 возможна (но не обязательна) частичная реализация трансляции обновлений с одновременным их применением (прямая запись).
Это значит, что обновления не нуждаются в предварительной их загрузке, а применяются «на лету».

Источник

Погружаемся в opensource-экосистему Android

Каждый выбирает свой «уровень погружения». Вам не обязательно следовать каждому пункту из этого поста. Моя цель — показать, насколько хорошо развита экосистема на данный момент и чего вы можете и не можете от неё получить. Делайте выводы самостоятельно. Хотите — меняйте прошивку полностью и переходите на microg. Хотите — просто поставьте на свой телефон f-droid прямо рядом с gplay. Хотите — не делайте ничего.

Давайте поговорим об экосистеме приложений свободных приложений с открытым исходным кодом на Android. Попробуем установить MicroG — свободную реализацию сервисов Google на Android. Посмотрим, как и зачем со всем этим жить.

Несколько причин, почему стоит об этом задуматься

Google Play далеко «не торт»

Далеко ходить не нужно, в соседних постах можно найти множество примеров того, как разработчиков выгоняют из Google Play по тем или иным причинам, заставляя общаться с ботами без возможности реальной аппеляции. Некоторые типы приложений теперь принципиально невозможно распространять (например, блокировщики рекламы, да и в принципе приложения обхода любых ограничений).

Мне, как параноику, не нравится, что у стороннего лица появляется практически полный доступ к моему устройству. Google способен как минимум удалить с моего телефона любое приложение в любой момент и собрать с него произвольные данные. Более того, google play service — это огромное (стандартная поставка — 600Мб, минимальная — 95Мб) количество постоянно обновляющегося кода, часть которая работает с системными привилегиями. Для сравнения, дистрибутив MicroG может весить всего 4Мб.

Низкое качество приложений в google play, засилие рекламы, телеметрий, шпионских модулей, уязвимостей

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

Энергопотребление

Исходит из предыдущего тезиса. Если приложения не загружают рекламу, не отправляют статистику и не следят за вами, они потребляют меньше электроэнергии. Это же касается gapps: зачастую, они являются главным потребителем электроэнергии. Да, Google в последнее время серьёзно работает над энергопотреблением. Однако, во-первых, не у всех есть возможность использовать актуальные версии Android. Во-вторых, даже в этих условиях замена gapps на более простое и минималистичное решение позволит вам еще сильнее продлить жизнь от батарейки.

Вторая жизнь старым устройствам без большого количества ОЗУ и/или места на диске?

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

Несколько подводных камней, с которыми ничего не сделать

Немного матчасти

Google Play Services, gapps, Google Play. Включают в себя как базовые сервисы, необходимые для работы push-уведомлений, геолокации, синхронизации различных данных с Google так и остальной пользовательский софт, использующий всё это (например, Gmail).

Тип уведомлений, работающий через сторонний сервер. Позволяет значительно экономить батарейку, т.к. устройство может полностью заснуть и просыпаться через небольшие промежутки времени, проверяя только одно сетевое соединение на наличие новых событий.

По умолчанию, устройства на Android идут с заблокированным загрузчиком. Обычно, требуется произвести эту процедуру, чтобы иметь возможность устанавливать любые другие прошивки. Разблокировка загрузчика обычно не только даёт возможность модифицировать системные разделы, но и отключает проверку подписи ядра при загрузке.

Права суперпользователя. Точно так же, по умолчанию обычно их нет и необходимо их получать тем или иным способом. Либо установкой прошивки (для lineageos есть addon-su), либо magisk. Обычно в инструкциях предлагают ставить проприетарный и купленный китайцами SuperSU (мы их слушать не будем и поставим опенсорсный magisk). В особо тяжелых случаях иногда приходится использовать эксплоиты (вроде KingRoot).

Позволяет устанавливать прошивки и их модификации в виде zip-архивов. Обычно это TWRP, тоже проект с открытым исходным кодом.

Помимо предоставления root, имеет встроенный модуль для скрытия этого самого root от некоторых приложений (полезно для банк-клиентов) и большое множество сторонних модулей. В контексте этого поста для нас будет самым полезным модуль для установки Xposed.

Если Magisk предоставляет модули для модификации базовой системы, то xposed предоставляет модули для модификации и патчинга на лету самого Android. В контексте этого поста будет полезным модуль FakeGapps. Рекомендую ставить его через Magisk, и для конкретной API-версии (соответствующей вашей версии android). К сожалению, обычно поддержка прошивок отстает на одну версию android.

Каталог открытого ПО для Android. Можно использовать как официальный репозиторий, так и сторонние.

Флагман среди opensource-прошивок. Бывший Cyanogenmod.

На каких устройствах это будет работать?

Условно все устройства можно поделить на следующие классы (в порядке убывания удобности):

При выборе устройства так же нужно смотреть на:

MicroG

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

Для работы требуется функциональность подделки подписи в прошивке. Способы установки, примерно соответствующие градации устройств выше:

Можно установить LineageOS for MicroG и получить практически все перечисленное практически из коробки. Самый простой и удобный способ из всех, рекомендую использовать именно его, если ваше устройство есть в списке поддерживаемых.

Можно установить MicroG вручную на любую прошивку, не идущую в комплекте с gapps (почти любая не стоковая прошивка). Однако, в прошивке требуется поддержка подмены подписей (Signature Spoofing).

Не планировал описывать полную инструкцию, но опыт предыдущего поста показывает, что придется.

Процесс установки зависит от способа. Про установку при помощи NanoDroid чуть ниже, здесь описана ручная процедура:

NanoLX NanoDroid

Пожалуй, самый простой и удобный способ установить MicroG. Помимо основных возможностей (удаление gapps и установка microg) имеет несколько приятных фич:

Достаточно установить несколько из следующих файлов:

Установка приложений из google play

Как было отмечено выше, есть несколько способов решения проблемы.

Очень небольшой начальный набор из качественных opensource-приложений

Update: только что появился пост с более широким обзором приложений.

Вместо выводов

Лично мне переход на MicroG, F-Droid и AuroraStore дал тот Android, о котором я всегда мечтал. С удобными приложениями, не напичканными рекламой и телеметрией, позволяющие мне не делиться своими данными с Google, но при этом работающими push-уведомлениями, позволили перестать мечтать о недостижимом (смене мобильной ОС на Sailfish/ubuntu phone/etc, где все бы равно для полноценной работы приходится использовать слой для поддержки Android-приложений) и начать жить.

Надеюсь, эта инструкция поможет вам понять, нужно ли вам это в принципе и успешно повторить этот результат.

Источник

Android aosp overlay что это

Начнем с общих вопросов:
Q: Ну и кто все это придумал? Проклятые производители простым гикам жизнь усложняют?
A: Новая структура «A/B разделов» разработана непосредственно Google-ом как часть глобальных изменений в архитектуре Android. Она успешно используется в смартфонах Google Pixel, Essential Phone и различных других устройствах. В дальнейшем все больше устройств от сторонних производителей будут ее использовать. Ничего плохого и страшного в этом нет, наоборот, открывается много новых возможностей.

Таблица разделов на примере Google Pixel:
Дабы наглядно отобразить, изложенную выше, теорию и увидеть отличия по сравнению с другими устройствами — познакомимся с таблицей разделов Google Pixel.
Если вы вообще не знакомы со структурой разделов в Linux-подобных системах, и Android в частности, — советую поискать информацию об этом в Google, благо ее полно.

Нас интересуют конкретные разделы, существующие в двух копиях для наглядности и демонстрации.
Итак (раскрываем код полностью):

/dev/block/bootdevice/by-name/aboot_a # Разделы первого загрузчика (Слот «a»)
/dev/block/bootdevice/by-name/apdp_a # Разделы первого загрузчика (Слот «a»)
/dev/block/bootdevice/by-name/bootlocker_a # Разделы первого загрузчика (Слот «a»)
/dev/block/bootdevice/by-name/cmnlib32_a # Разделы первого загрузчика (Слот «a»)
/dev/block/bootdevice/by-name/cmnlib64_a # Разделы первого загрузчика (Слот «a»)
/dev/block/bootdevice/by-name/devcfg_a # Разделы первого загрузчика (Слот «a»)
/dev/block/bootdevice/by-name/hosd_a # Разделы первого загрузчика (Слот «a»)
/dev/block/bootdevice/by-name/hyp_a # Разделы первого загрузчика (Слот «a»)
/dev/block/bootdevice/by-name/keymaster_a # Разделы первого загрузчика (Слот «a»)
/dev/block/bootdevice/by-name/msadp_a # Разделы первого загрузчика (Слот «a»)
/dev/block/bootdevice/by-name/pmic_a # Разделы первого загрузчика (Слот «a»)
/dev/block/bootdevice/by-name/rpm_a # Разделы первого загрузчика (Слот «a»)
/dev/block/bootdevice/by-name/tz_a # Разделы первого загрузчика (Слот «a»)
/dev/block/bootdevice/by-name/xbl_a # Разделы первого загрузчика (Слот «a»)

/dev/block/bootdevice/by-name/aboot_b # Разделы второго загрузчика (Слот «b»)
/dev/block/bootdevice/by-name/apdp_b # Разделы второго загрузчика (Слот «b»)
/dev/block/bootdevice/by-name/bootlocker_b # Разделы второго загрузчика (Слот «b»)
/dev/block/bootdevice/by-name/cmnlib32_b # Разделы второго загрузчика (Слот «b»)
/dev/block/bootdevice/by-name/cmnlib64_b # Разделы второго загрузчика (Слот «b»)
/dev/block/bootdevice/by-name/devcfg_b # Разделы второго загрузчика (Слот «b»)
/dev/block/bootdevice/by-name/hosd_b # Разделы второго загрузчика (Слот «b»)
/dev/block/bootdevice/by-name/hyp_b # Разделы второго загрузчика (Слот «b»)
/dev/block/bootdevice/by-name/keymaster_b # Разделы второго загрузчика (Слот «b»)
/dev/block/bootdevice/by-name/msadp_b # Разделы второго загрузчика (Слот «b»)
/dev/block/bootdevice/by-name/pmic_b # Разделы второго загрузчика (Слот «b»)
/dev/block/bootdevice/by-name/rpm_b # Разделы второго загрузчика (Слот «b»)
/dev/block/bootdevice/by-name/tz_b # Разделы второго загрузчика (Слот «b»)
/dev/block/bootdevice/by-name/xbl_b # Разделы второго загрузчика (Слот «b»)

/dev/block/bootdevice/by-name/modem_a # Раздел первого модема/радиомодуля (Слот «a»)
/dev/block/bootdevice/by-name/modem_b # Раздел второго модема/радиомодуля (Слот «b»)

/dev/block/bootdevice/by-name/boot_a # Раздел первого ядра (Слот «a»)
/dev/block/bootdevice/by-name/boot_b # Раздел второго ядра (Слот «b»)

/dev/block/bootdevice/by-name/vendor_a # Первый проприетарный раздел (Слот «a»)
/dev/block/bootdevice/by-name/vendor_b # Второй проприетарный раздел (Слот «b»)

/dev/block/bootdevice/by-name/system_a # Первый системный раздел (Слот «a»)
/dev/block/bootdevice/by-name/system_b # Второй системный раздел (Слот «b»)

Как видно из выдержки выше, — имеются два, независимых между собой, слота, а именно «группы разделов», которые содержат в себе основные, обновляемые компоненты прошивки.

Два представленных слота состоят из:
Bootloader (загрузчик) — 28 разделов (14 на каждый слот).
Radio/Modem (радиомодуль) — 2 раздела (по одному на слот).
Boot (ядро) — 2 раздела (по одному на слот).
Vendor (драйверы) — 2 раздела (по одному на слот).
System (система) — 2 раздела (по одному на слот).

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

Принципиальные отличия по сравнению с другими устройствами:
С дублированием разделов и, структурой в целом, разобрались. Однако, вы могли заметить (если просматривали полную таблицу разделов) отсутствие, привычных в любом устройстве, разделов «/recovery» и «/cache». Да, их действительно нет. Но могут и встречаться в отклонениях от нормы.

Q: Стоп. Но если раздела для Recovery нет, а сам Recovery есть (Он ведь есть, правда?), где же он находится?
A: Система восстановления (Recovery) включена в состав образа ядра (boot). А потому, наличие, отсутствие и тип установленного recovery напрямую зависят от ядра системы. Переключение в него (Recovery), как и раньше, осуществляется специальным флагом в «/misc» разделе.
Именно в этом и состоит загвоздка установки TWRP — его как-то нужно «засунуть» в ядро. Потому TWRP сначала временно загружают (устанавливать то его некуда), а затем уже из TWRP, специальным скриптом, на лету распаковывается ядро и вшивается в него TWRP. Такая же схема «перепаковки ядра на лету» применяется при получении «systemless» рут-прав через SuperSU и Magisk.

Q: Хорошо, а что же тогда случилось с «/cache» разделом?
A: В привычных устройствах он необходим лишь для хранения OTA обновлений и системных логов Recovery, в данном же случае, ввиду применения новой схемы этих самых обновлений (см. ниже), раздел стал попросту «не нужОн». Вот от него и избавились.

Ручное переключение слотов:
Естественно, помимо самих слотов, должен быть способ ручного взаимодействия с ними. И он есть. Для ручного переключения текущего активного слота необходимо воспользоваться утилитой fastboot. Команды:

Итоги и положения:
1. Между слотами как система, так и сам пользователь могут переключаться.
2. Изначально (с завода) слоты полностью идентичны между собой. Различия появляются после применения любого OTA обновления системы.
3. Слоты изолированы между собой. Состояние и целостность одного слота никак не влияет на другой. За исключением применения OTA обновлений (см. ниже).

«Seamless» система обновлений:
Итак, с разделами и слотами разобрались. Но что же там с обновлениями, наверняка их тоже коснулись изменения, ввиду описанного выше?
Да, OTA обновления на устройствах с A/B структурой кардинально отличаются от того, что мы можем видеть на других устройствах.

Android 8.0+ — трансляция обновлений:
Начиная с версии Android 8.0 возможна (но не обязательна) частичная реализация трансляции обновлений с одновременным их применением (прямая запись).
Это значит, что обновления не нуждаются в предварительной их загрузке, а применяются «на лету».

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *