- Googlе закроет доступ к сервисам для старых ОС Android. Каких версий прошивки это коснётся и как её обновить
- Android vs Google. Какую версию ОС лишат доступа к сервисам
- Новые звуковые эффекты и интерфейс. Чем запомнился Android 2.3.7
- Как обновить ОС Аndroid. Инструкция
- Обновления и патчи для Android за ноябрь 2021 года
- Содержание
- Уязвимости системы безопасности Android
- Обновления Google Pixel
- Обновления Huawei
- Обновления Samsung
- Обновления LG
- Обновления Nokia
- Другие обновления
- Эволюция системы обновления Android
- 1. Обновление Android через JTAG-интерфейс
- 2. Обновление Android через Recovery Mode
- 3. Обновление Android через Recovery Mode и OTA
- Recovery или non-A/B System Updates
- Бесшовное обновление или A/B-схема
- Проект Treble
- Проект Mainline
- Схема Virtual A/B
Googlе закроет доступ к сервисам для старых ОС Android. Каких версий прошивки это коснётся и как её обновить
Корпорация Google объявила, что с 27 сентября 2021 года хозяева устройств, работающих на старых ОС Android, не смогут пользоваться приложениями компании. Medialeaks узнал, владельцы какой версии прошивки попадают под ограничения, к каким сервисам потеряют доступ, и рассказал, как обновить ОС.
Android vs Google. Какую версию ОС лишат доступа к сервисам
Пользователи смартфонов под управлением Android 2.3.7 или более ранней версии этой операционной системы с 27 сентября 2021 года не смогут войти в учётную запись Google на своём телефоне. Владельцы девайсов, например, не смогут больше пользоваться сервисами Gmail, Google Maps и YouTube.
Более того, не получится скачать с Play Market какие-либо приложения или обновить их на более свежие версии. Также нельзя будет выполнить сброс телефона до заводских настроек.
В рамках наших постоянных усилий по обеспечению безопасности пользователей Google больше не будет разрешать вход на устройствах под управлением Android 2.3.7 или более ранних версий, начиная с 27 сентября 2021 года. Если вы попытаетесь войти в учётную запись после 27 сентября, вы можете увидеть сообщение об ошибке авторизации при попытке использовать продукты и службы Google, — говорится в сообщении компании.
Владельцам устройств, которые могут отключить от сервисов, рекомендуется обновить программное обеспечение, если это возможно, или же перейти на использование более актуальных моделей устройств.
Новые звуковые эффекты и интерфейс. Чем запомнился Android 2.3.7
Операционная система Android 2.3.7 была выпущена в сентябре 2011 года. Главное отличие той версии от более ранних — новый пользовательский интерфейс. Это упростило его освоение и добавило большую энергоэффективность. Упрощённая цветовая схема с чёрным фоном придавала яркость и контрастность панели уведомлений, меню и другим компонентам.
Интерфейс Android 2.3.7
Помимо этого пользователи получили новые фичи:
- новые звуковые эффекты: реверберация, эквалайзер, виртуализация наушников, усиление басов;
- переработанная программная клавиатура с поддержкой нескольких касаний;
- улучшенное управление питанием и контроль за приложением;
- улучшенная поддержка встроенной разработки кода.
На этой версии ОС работали такие телефоны, как, например, Samsung Galaxy S II, Motorola XT532 и Sony Xperia NX.
Sony Xperia NX
По данным издания The Verge, на 2021 год в мире существует всего более трёх миллиардов активных устройств Android. Примерно девять миллионов из них — устройства на Android 2.3.7, так что грядущее обновление Googlе затронет довольно большой пласт пользователей.
Как обновить ОС Аndroid. Инструкция
Итак, допустим, теперь вам нужно обновить операционную систему, но как это сделать? Существует несколько способов установить на телефон новый Android. Самый популярный — автоматический: потребуется лишь Wi-Fi или обычный мобильный интернет.
Для этого нужно зайти в настройки устройства и найти там раздел «О телефоне».
Внутри раздела будет пункт «Обновление системы». Нажимаем на него.
Там можно передвинуть верхний ползунок в активное положение, чтобы устройство само проверяло наличие выпущенных обновлений. После этого начнётся автоматическое обновление системы. Или появится сообщение, что девайс не нуждается в обновлении, так как на нём установлена последняя версия прошивки.
Впрочем, есть и другой способ обновления. Для этого нужно зайти на официальный сайт производителя устройства и найти там архив с обновлёнными версиями прошивки. Файлы нужно скачать на девайс, после чего перевести его в режим Recovery. Выключите смартфон или планшет, а затем включите, удерживая одновременно кнопку включения и кнопку громкости вверх/вниз (на разных моделях комбинации могут отличаться). Если всё сделано верно, появится вот такой экран.
Далее с помощью качели громкости необходимо выбрать пункт «apply update from sdcard», если архив с обновлениями хранится на карте памяти, или «apply update from internal storage», если прошивка скачана в память телефона.
В открывшемся окне нужно выбрать архив с обновленной прошивкой и нажать кнопку включения. После этого запустится процесс обновления системы.
На момент публикации текста последняя версия ОС Android — Android 11, выпущенная 8 сентября 2020 года. Правда, уже осенью 2021 года компания Google планирует выпустить Аndroid 12. По словам вице-президента Google Самира Самата, новая прошивка работает на 22 процента быстрее, чем предыдущая, а также содержит в себе крупнейшее обновление дизайна в истории платформы.
Телефоны нужны не только чтобы звонить, ведь с них ещё и удобно смотреть мемы в интернете, например про Доминика Торетто. В них герой фильма «Форсаж» путешествует по киновселенным, помогает известным персонажам и каждый раз напоминает: нет ничего важнее семьи. Medialeaks узнал, когда и кто дал старт этому тренду, в каких соцсетях он обрёл популярность и стоит ли ждать новых поводов для фотожаб.
Летом 2021 года в тиктоке завирусился ещё один мем. Это видео, на котором два музыканта в немецких национальных костюмах исполняют песню и издают звуки кукушки. С помощью этого ролика пользователи соцсети описывают разные жизненные ситуации, в которых «едет кукуха». Medialeaks разобрался, кто автор этого трека, когда она появился, какой в нём смысл и что думают сами авторы по поводу мемной популярности.
Источник
Обновления и патчи для Android за ноябрь 2021 года
Компания Google опубликовала ежемесячный бюллетень по безопасности Android за ноябрь 2021 года, который содержит информацию об исправленный уязвимостях безопасности, влияющих на устройства Android. Также, обновления и бюллетени по безопасности выпустили различные производители устройств под управлением операционной системы Android.
Содержание
Уязвимости системы безопасности Android
Бюллетень по безопасности Android за ноябрь 2021 года содержит информацию об уязвимостях безопасности, влияющих на устройства с операционными системами Android, включая Android 9, Android 10, Android 11 и Android 12. Уязвимости устранены в обновлениях Android Open Source Project (версии 9, 10, 11 и 12) от 01.11.2021, 05.11.2021 и 06.11.2021 или новее. В список исправленных уязвимостей входят:
- Уязвимости фреймворка:
- Высокий уровень: CVE-2021-0799, CVE-2021-0921, CVE-2021-0923, CVE-2021-0926, CVE-2021-0933, CVE-2020-13871, CVE-2021-0653.
- CVE-2021-092.
- Уязвимости медиа фреймворка:
- Высокий уровень: CVE-2021-0928, CVE-2021-0650.
- Уязвимости системы:
- Критический уровень: CVE-2021-0918, CVE-2021-0930.
- Высокий уровень: CVE-2021-0434, CVE-2021-0649, CVE-2021-0932, CVE-2021-0925, CVE-2021-0931.
- Умеренный уровень: CVE-2021-0919.
- Уязвимости системы Google Play:
- CVE-2021-0653, CVE-2021-0650, CVE-2021-0649.
- Уязвимости компонентов ядра:
- Высокий уровень: CVE-2021-0920, CVE-2021-0924, CVE-2021-0929, CVE-2021-1048.
- Уязвимости Android TV:
- Критический уровень: CVE-2021-0889.
- Высокий уровень: CVE-2021-0927.
- Уязвимости компонентов MediaTek:
- Высокий уровень: CVE-2021-0672.
- Уязвимости компонентов Qualcomm:
- Критический уровень: CVE-2021-1924, CVE-2021-1975.
- Высокий уровень: CVE-2021-1921, CVE-2021-1973, CVE-2021-1979, CVE-2021-1981, CVE-2021-1982, CVE-2021-30254, CVE-2021-30255, CVE-2021-30259, CVE-2021-30284.
Исправления исходного кода для этих проблем выпущены в репозиторий Android Open Source Project (AOSP) и доступны для разработчиков и партнёров Android. Производители Android устройств Google Pixel, Huawei, Samsung, Nokia и LG также выпустили информацию по ноябрьским обновлениям безопасности Android для своих устройств.
Обновления Google Pixel
Бюллетень обновлений Pixel содержит информацию об исправлениях уязвимостей и улучшениях, затрагивающих поддерживаемые устройства Google Pixel. В настоящий момент, к поддерживаемым устройствам Pixel, которые получают регулярные обновления безопасности, относятся следующие модели:
- Pixel 6 и Pixel 6 Pro (поддержка до октября 2026)
- Pixel 5a 5G (поддержка до августа 2024)
- Pixel 5 (поддержка до октября 2023)
- Pixel 4a 5G (поддержка до ноября 2023)
- Pixel 4a (поддержка до августа 2023)
- Pixel 4 и Pixel 4 XL (поддержка до октября 2022)
- Pixel 3a и Pixel 3a XL (поддержка до мая 2022)
С полным списком патчей и исправленных уязвимостей можно ознакомиться в бюллетене по обновлениям Pixel за ноябрь 2021 года. Также, поддерживаемые устройства получили обновления не связанные с безопасностью, но включающие различные исправления ошибок и улучшения, с которыми можно ознакомиться в новости на странице сообщества Google Pixel.
Обновления Huawei
Компания Huawei ежемесячно выпускает обновления системы безопасности для флагманских моделей смартфонов и планшетов. Обновление системы безопасности содержит патчи библиотек Huawei и сторонних библиотек.
Обновления системы Huawei EMUI и Magic UI за ноябрь 2021 года включают патчи Huawei, патчи сторонних библиотек, а также патчи Android с исправлениями уязвимостей, опубликованных в бюллетене по безопасности Android за октябрь 2021 года. Среди них исправление критической уязвимости CVE-2020-11264 и другие исправления.
Список устройств, которые получат обновления в этом месяце, отличается для разных регионов и может изменяться. Huawei сообщает, что для российского региона в этом месяце обновления запланированы для следующих моделей устройств:
- Huawei Mate 40 Pro.
- Huawei P40 Pro+, Huawei P40 Pro.
- HONOR 9X, HONOR 7S, HONOR 20S.
Позже, в рамках ежеквартальных обновлений, патчи будут предоставлены для следующих моделей:
- Huawei Mate Xs.
- Huawei P40 lite E, Huawei P40, Huawei P40 lite, Huawei P30 lite, Huawei P smart 2021.
- Huawei nova 8i, Huawei nova 8.
- Huawei Y8p, Huawei Y5p, Huawei Y6p, Huawei Y6s.
- HONOR 9S, HONOR 30S, HONOR 9A, HONOR 9X lite, HONOR 30I, HONOR 30 Pro+, HONOR 9C, HONOR View30 Pro, HONOR 30, HONOR 10X lite.
- Huawei MediaPad M6, Huawei MatePad Pro, Huawei MatePad T, Huawei MatePad T 10S, Huawei MatePad, Huawei MatePad T 10.
С полным списком патчей и исправленных уязвимостей можно ознакомиться в бюллютене безопасности Huawei за ноябрь 2021 года.
Обновления Samsung
Компания Samsung выпускает ежемесячные, ежеквартальные и полугодовые обновления безопасности для мобильных устройств. Устройства, выпущенные в 2019 году или позже, будут поддерживаться обновлениями безопасности в течение как минимум четырех лет с момента выпуска.
Ежемесячные обновления безопасности получат следующие устройства:
- Galaxy Fold, Galaxy Fold 5G, Galaxy Z Fold2, Galaxy Z Fold2 5G, Galaxy Z Fold3 5G, Galaxy Z Flip, Galaxy Z Flip 5G, Galaxy Z Flip3 5G.
- Galaxy S10, Galaxy S10 +, Galaxy S10e, Galaxy S10 5G, Galaxy S10 Lite.
- Galaxy S20, Galaxy S20 5G, Galaxy S20 +, Galaxy S20 + 5G, Galaxy S20 Ultra, Galaxy S20 Ultra 5G, Galaxy S20 FE, Galaxy S20 FE 5G, Galaxy S21 5G, Galaxy S21 + 5G, Galaxy S21 Ultra 5G.
- Galaxy Note10, Galaxy Note10 5G, Galaxy Note10 +, Galaxy Note10 + 5G, Galaxy Note10 Lite, Galaxy Note20, Galaxy Note20 5G, Galaxy Note20 Ultra, Galaxy Note20 Ultra 5G.
- Galaxy A52, Galaxy A52 5G, Galaxy A52s 5G.
- Galaxy A50, Galaxy XCover4s, Galaxy Xcover FieldPro, Galaxy Xcover Pro, Galaxy Xcover5.
Обновления за ноябрь 2021 года включают исправления от Google и Samsung, включая исправление трёх критических уязвимостей. С полным списком патчей и исправлений можно ознакомиться в бюллютене безопасности Samsung за ноябрь 2021 года.
Обновления LG
Компания LG регулярно выпускает обновления безопасности для своих продуктов. В зависимости от региона и оператора связи, обновления для Android-устройств выпускаются ежемесячно, раз в два месяца, ежеквартально или нерегулярно. В ноябре обновления безопасности получают следующие поддерживаемые устройства LG:
- G5, G6, G7, G8
- V10, V20, V30, V35, V40, V50
- Q6, Q8
- X300, X400, X500, X cam
- CV1, CV3, CV5, CV7, CV1S, CV7AS
- K40, K50, Q60, Q70
- DH10, DH15, DH30, DH35, DH40, DH5, DH50
- Velvet, TF10, Wing
Обновления за ноябрь 2021 года включают исправления от Google и LGE. Полный список исправленных уязвимостей доступен в бюллетене по безопасности LG за ноябрь 2021 года.
Обновления Nokia
Компания HMD Global регулярно обновляет информацию об обновлении безопасности поддерживаемых мобильных устройств под управлением Android. Вы можете перейти на страницу технического обслуживания Nokia Smartphone Security, выбрать из списка модель своего устройства и получить информацию о последних обновлениях и статусе поддержки.
Другие обновления
Также, информацию об обновлениях мобильных устройств с операционной системой Android публикуют компании Xiaomi, Motorola, OPPO, OnePlus и некоторые другие производители мобильных устройств.
Получает ли ваш смартфон или планшет обновления безопасности и устанавливаете ли вы их?
Источник
Эволюция системы обновления Android
В этой статье мы рассмотрим все возможные варианты обновления прошивки на устройствах под управлением Fuchsia Android. Особое внимание уделим самому популярному способу — обновлению по воздуху или OTA (over-the-air) — и расскажем об этапах его развития.
Итак, как можно обновить Android на мобильных устройствах? Занимаясь разработкой ТВ-приставок под управлением этой ОС, мы определили для себя 4 способа, отбросив совсем уж экзотические варианты:
перепрошивка flash-памяти через аппаратный интерфейс JTAG (если есть);
перепрошивка flash-памяти с использованием загрузчика (bootloader);
обновление через Recovery Mode;
Рассмотрим подробнее каждый из вариантов.
1. Обновление Android через JTAG-интерфейс
Вариант с JTAG позволяет обновлять устройство только локально и требует подключения девайса с Android к хосту, например, по USB-интерфейсу. Так как перепрошивается flash-память, новую версию Android можно поставить на прошивку с другими ключами безопасности, да и в целом не сильно стесняться в выборе версий самой Android, версии собранной прошивки или переконфигурации разделов flash-памяти.
Однако обычно JTAG-интерфейс присутствует только на отладочных платах, что сильно сужает область применения этого варианта обновиться.
2. Обновление Android через Recovery Mode
Обычно загрузчик является проприетарным, его разрабатывает производитель чипа. Именно bootloader инициализирует доверенную среду выполнения (TEE, trusted execution environment) и проверяет целостность разделов boot и recovery перед переносом выполнения в ядро Linux. Сам загрузчик часто является составным, часть его уровней может быть открытой (например, на базе U-boot), а часть — проприетарной.
Bootloader Android позволяет перепрошивать flash-память устройства подготовленными образами разделов. Для этого используется протокол fastboot либо его аналог (в случае Amlogic это будет протокол WorldCup Device). Fastboot, как и его аналог WorldCup Device, — это протокол взаимодействия с bootloader через USB-интерфейс или локальную сеть Ethernet.
Для перепрошивки необходимо подключить устройство через USB к хосту (есть вариант использовать LAN Ethernet), перевести загрузчик (bootloader) в специальный update-режим и в этом режиме перепрошить flash-память устройства.
Плюсы и минусы данного метода всё те же, что и для JTAG: так как обновление проходит без участия самой системы Android, при перепрошивке нет ограничений, связанных с версией системы/сборки или ключами безопасности.
Но, как всегда, есть одно НО. 🙂 Bootloader должен быть разблокирован, а это значит, что мы можем перепрошить сам загрузчик или разделы устройства. Блокировка/разблокировка производится командой fastboot flashing lock/unlock, но для выполнения этой команды может понадобится пароль, установленный тем, кто добрался до этого устройства раньше вас (обычно это производитель).
3. Обновление Android через Recovery Mode и OTA
Если первые два варианта обновления оставались неизменными на протяжении всего времени развития Android, то следующие два варианта — обновление через Recovery Mode и OTA — реализуются средствами самой Android и эволюционировали вместе со всей ОС.
Стоит упомянуть, что Recovery Mode и OTA — это два различных варианта вызова движка обновления Android.
Recovery или non-A/B System Updates
Recovery и движок обновления updater (bootable/recovery/updater) — это как раз то, с чего началась система обновления Android (располагается в bootable/recovery в дереве исходников AOSP).
Схема обновления Recovery (или non-A/B System Updates) задействует специальный раздел восстановления (Recovery), где содержится специальная ОС на основе ядра Linux. Эта ОС на базе Linux содержит программное обеспечение для распаковки загруженного образа обновления и его применения к другим разделам. Так и проходит обновление Android.
Пример разметки flash-памяти на устройстве с Android 6.0:
Карта разделов Android 6.0.1
[mmcblk0p01] bootloader offset 0x000000000000, size 0x000000400000
[mmcblk0p02] reserved offset 0x000002400000, size 0x000004000000
[mmcblk0p03] cache offset 0x000006c00000, size 0x000020000000
[mmcblk0p04] env offset 0x000027400000, size 0x000000800000
[mmcblk0p05] logo offset 0x000028400000, size 0x000002000000
[mmcblk0p06] recovery offset 0x00002ac00000, size 0x000002000000
[mmcblk0p07] rsv offset 0x00002d400000, size 0x000000800000
[mmcblk0p08] tee offset 0x00002e400000, size 0x000000800000
[mmcblk0p09] crypt offset 0x00002f400000, size 0x000002000000
[mmcblk0p10] misc offset 0x000031c00000, size 0x000002000000
[mmcblk0p11] instaboot offset 0x000034400000, size 0x000020000000
[mmcblk0p12] boot offset 0x000054c00000, size 0x000002000000
[mmcblk0p13] system offset 0x000057400000, size 0x000060000000
[mmcblk0p14] data offset 0x0000b7c00000, size 0x0002ec200000
Сам процесс обновления происходит в два этапа:
После загрузки с раздела Recovery происходит обновление всех остальных разделов Android.
И уже после перезагрузки и запуска новой версии Android происходит обновление раздела Recovery.
При обновлении с использованием движка updater на первом этапе проверяется версия и цифровая подпись образа, поэтому откатить на старую версию ОС уже не получится.
Обновиться по схеме Recovery можно как локально, выбрав в bootloader режим Recovery Mode и запустив движок обновления updater через меню Recovery Mode, либо удаленно, через OTA, когда приложение, работающее в Android, вызывает тот же updater из Java. И как раз при таком удаленном запуске можно организовать массовое обновление целой серии устройств. Этот вариант используют операторы цифрового ТВ при обновлении своих абонентских ТВ-приставок.
Сам раздел Recovery при non-A/B-схеме обновления является физическим разделом во flash-памяти. С появлением A/B-схемы раздел Recovery переместился на RAM-диск в оперативной памяти устройства, но возможность сделать его отдельным физическим разделом также осталась.
Нужно сказать, что в системе Android нет четкого разделения на «старое» и «новое», скорее добавляются дополнительные возможности в конфигурации сборки Android с сохранением по возможности совместимости со старыми решениями. Однако не все варианты конфигураций работают.
Одним из важных недостатков схемы Recovery или non-A/B System Updates является то, что при любом сбое во время обновления или битой прошивке мы получаем пусть и не «кирпич» (с раздела Recovery всё еще можно запустить устройство в Recovery Mode), но всё же не полнофункциональное и требующее восстановления устройство.
С этим, видимо, решено было что-то делать, потому что следующим этапом эволюции системы обновления стало бесшовное обновление (seamless updates) или A/B-схема обновления.
Бесшовное обновление или A/B-схема
Эта возможность появилась в Android 7.0, она реализована в новом движке update_engine, который располагается в system/update_engine в дереве исходников AOSP.
Главной особенностью A/B-схемы стало то, что в случае сбоев при обновлении можно загрузиться с предыдущей рабочей версии системы Android. Flash-память устройства содержит дублирующиеся системные разделы или слоты (slot A и B), отсюда и название — A/B system updates (вечная проблема с выбором названий). За выбор слота для загрузки (A или B) отвечает bootloader, анализируя состояние слотов.
Принцип бесшовного обновления Android по A/B-схеме (активный раздел отмечен птичкой)
Итак, как же происходит обновление:
1) Загружая систему, например, со слотов A, мы скачиваем и прошиваем обновления на слоты B.
2) После перезагрузки со слотов B мы проверяем работоспособность системы, и, если все ОК, сообщаем bootloader, что обновление прошло успешно.
В случае проблем с обновлением bootloader вернется на старую версию прошивки после нескольких неудачных попыток загрузиться с новой системы.
На официальном сайте для разработчиков — Android Source — этот процесс расписан более детально в 9 шагах, также там объясняется, как все работает после перезагрузки.
Особенность бесшовной A/B-схемы обновление — это «съедение» большего объема flash-памяти. Насколько большего? Это можно оценить по приведенным ниже схемам разделов для Android 9.0. Как уже упоминалось ранее, разработчик может выбирать, какую из схем — A/B или non-A/B — применять в конфигурации системы.
Карта разделов Android P (recovery)
[mmcblk0p01] bootloader offset 0x000000000000, size 0x000000400000
[mmcblk0p02] reserved offset 0x000002400000, size 0x000004000000
[mmcblk0p03] cache offset 0x000006c00000, size 0x000046000000
[mmcblk0p04] env offset 0x00004d400000, size 0x000000800000
[mmcblk0p05] logo offset 0x00004e400000, size 0x000000800000
[mmcblk0p06] recovery offset 0x00004f400000, size 0x000001800000
[mmcblk0p07] misc offset 0x000051400000, size 0x000000800000
[mmcblk0p08] dtbo offset 0x000052400000, size 0x000000800000
[mmcblk0p09] cri_data offset 0x000053400000, size 0x000000800000
[mmcblk0p10] param offset 0x000054400000, size 0x000001000000
[mmcblk0p11] boot offset 0x000055c00000, size 0x000001000000
[mmcblk0p12] rsv offset 0x000057400000, size 0x000001000000
[mmcblk0p13] metadata offset 0x000058c00000, size 0x000001000000
[mmcblk0p14] vbmeta offset 0x00005a400000, size 0x000000200000
[mmcblk0p15] tee offset 0x00005ae00000, size 0x000002000000
[mmcblk0p16] vendor offset 0x00005d600000, size 0x000040000000
[mmcblk0p17] odm offset 0x00009de00000, size 0x000008000000
[mmcblk0p18] system offset 0x0000a6600000, size 0x000050000000
[mmcblk0p19] product offset 0x0000f6e00000, size 0x00000800000
[mmcblk0p01] bootloader offset 0x000000000000, size 0x000000400000
[mmcblk0p02] reserved offset 0x000002400000, size 0x000004000000
[mmcblk0p03] cache offset 0x000006c00000, size 0x000000000000
[mmcblk0p04] env offset 0x000007400000, size 0x000000800000
[mmcblk0p05] logo offset 0x000008400000, size 0x000000800000
[mmcblk0p06] boot_a offset 0x000009400000, size 0x000001000000
[mmcblk0p07] misc offset 0x00000ac00000, size 0x000000800000
[mmcblk0p08] dtbo_a offset 0x00000bc00000, size 0x000000800000
[mmcblk0p09] dtbo_b offset 0x00000cc00000, size 0x000000800000
[mmcblk0p10] cri_data offset 0x00000dc00000, size 0x000000800000
[mmcblk0p11] param offset 0x00000ec00000, size 0x000001000000
[mmcblk0p12] boot_b offset 0x000010400000, size 0x000001000000
[mmcblk0p13] rsv offset 0x000011c00000, size 0x000001000000
[mmcblk0p14] metadata_a offset 0x000013400000, size 0x000001000000
[mmcblk0p15] metadata_b offset 0x000014c00000, size 0x000001000000
[mmcblk0p16] vbmeta_a offset 0x000016400000, size 0x000000200000
[mmcblk0p17] vbmeta_b offset 0x000016e00000, size 0x000000200000
[mmcblk0p18] tee offset 0x000017800000, size 0x000002000000
[mmcblk0p19] vendor_a offset 0x00001a000000, size 0x000040000000
[mmcblk0p20] vendor_b offset 0x00005a800000, size 0x000040000000
[mmcblk0p21] odm_a offset 0x00009b000000, size 0x000008000000
[mmcblk0p22] odm_b offset 0x0000a3800000, size 0x000008000000
[mmcblk0p23] system_a offset 0x0000ac000000, size 0x000050000000
[mmcblk0p24] system_b offset 0x0000fc800000, size 0x000050000000
[mmcblk0p25] product_a offset 0x00014d000000, size 0x000008000000
[mmcblk0p26] product_b offset 0x000155800000, size 0x000008000000
[mmcblk0p27] data offset 0x00015e000000, size 0x000245e00000
Если сравнить эти две конфигурации, то можно заметить, что раздел data при A/B-схеме меньше на 1,6 ГБ, и это цена дублирующихся системных разделов. Много это или мало — каждый решает сам, ориентируясь на характеристики своего устройства/проекта.
Проект Treble
Следующие изменения в системе обновления произошли в Android 8.0. Начиная с Android O (8.0) и продолжая в Android P (9.0), Google реализует свой проект Treble. Идея проекта состоит в том, чтобы упростить технологический процесс создания обновления для Android-устройства. Google предложил разделить с помощью неизменных интерфейсов части прошивки, созданием которых занимаются разные компании. Процесс разработки прошивки для конкретного девайса можно упрощенно разделить на следующие шаги:
Команда Android создает новую версию своей OC.
Разработчик чипа или системы на кристалле (Silicon Manufacturer) создает аппаратно-зависимые патчи для запуска этой версии Android на своих платах.
И уже разработчики конечного устройства (Vendors) делают свою часть для реализации всех функций конкретного продукта для рынка электроники.
Проект Treble разделяет ОС Android с дополнениями от производителей чипов/СнК и код разработчика конечного устройства, так что теперь операционная система может получать обновления без реализации изменений от производителя устройства.
Разделение происходит как с помощью программного интерфейса (переход с Hardware Abstraction Layer 1.0 на HAL2.0), так и за счет выделения отдельных разделов на flash-памяти для Silicon Manufacturer и Vendor (выше в карте разделов Android 9.0 можно увидеть разделы odm, vendor, product).
Переход с HAL1.0 на HAL2.0 заключается в отказе от прямого связывания с системными библиотеками. Вместо этого, используя IPC Binder, можно подключаться к системным сервисам.
И еще одно небольшое, но полезное изменение: начиная с Android 8.0, в update_engine добавлена поддержка потоковых обновлений по A/B-схеме, в ходе которых идет прямая запись в слот B без необходимости промежуточного хранения данных в /data. Для таких потоковых обновлений практически не требуется временное хранилище, достаточно всего лишь 100 килобайт для сохранения метаданных.
При этом необходимо, чтобы http-сервер, используемый для скачивания обновления, поддерживал HTTP range requests или другими словами докачку.
Проект Mainline
Следующим серьезным этапом в развитии системы обновления Android стал проект Mainline. Реализация этого проекта началась с Android 10.0 и продолжилась в текущем Android 11.0.
Проект Mainline позволяет обновлять отдельные системные компоненты без обновления ОС целиком. Нужные данные загружаются через Google Play отдельно от OTA-обновления прошивки от производителя. Предполагается, что прямая доставка обновлений, не привязанных к оборудованию частей Android, позволит существенно сократить время получения обновлений, увеличить оперативность исправления уязвимостей и снизить зависимость от производителей устройств в поддержке безопасности ОС.
Для реализации проекта Mainline выбранные компоненты системы Android преобразуются в модули. Часть этих модулей имеет старый формат APK, а часть конвертируется в новый APEX-формат, который отличается от APK возможностью применения на раннем этапе загрузки системы. На случай возможных сбоев предусмотрен режим отката изменений.
С APEX-пакетами работает системный сервис APEX manager (apexd). Это нативный сервис, который после проверки распаковывает APEX-пакет в пользовательское пространство на диске и добавляет запись о нем в свою базу данных. При следующей загрузке системы APEX manager проверяет все пакеты из базы данных, создает loop-устройство для ext4-образа каждого APEX-пакета и монтирует его по пути /apex/name@ver.
Модули с обновлениями изначально будут поставляться с открытым кодом, они будут сразу доступны в репозиториях AOSP (Android Open Source Project) и смогут включать улучшения и исправления, подготовленные сторонними участниками.
В рамках проекта Mainline в Android 10 было добавлено 13 обновляемых модулей, а в Android 11 в дополнение к уже существующим прибавилось еще 11 модулей.
Схема Virtual A/B
Также в Android 11 к схемам non-A/B и A/B была добавлена схема Virtual A/B. Этот новый механизм обновления сочетает преимущества обоих предшественников, он обеспечивает устойчивое к сбоям обновление устройства, задействуя при этом минимальный объем flash-памяти. Это стало возможным благодаря созданию снимков файловой системы (snapshot) с использованием технологии Device-mapper (подсистема ядра Linux, позволяющая создавать виртуальные блочные устройства) и Dynamic Partitions.
Dynamic Partitions — это система организации динамических разделов для Android. С ее помощью можно создавать, изменять размер или уничтожать разделы прямо в процессе обновления по воздуху (OTA). При использовании динамических разделов разработчикам больше не нужно беспокоиться о размере отдельных разделов, таких как system, vendor и product. Вместо них на устройстве выделяется суперраздел, внутри которого можно динамически изменять размер подразделов. Больше нет необходимости оставлять свободное пространство для будущих OTA-обновлений внутри отдельных образов разделов. Оставшееся свободное место в суперразделе теперь доступно для всех динамических подразделов.
И в заключении последние слухи конца 2020 года — вишенка на торте. Google конвертирует Android Runtime в модуль Mainline. Android Runtime или ART — это среда выполнения Android-приложений, включающая компиляцию байт-кода приложения в машинные инструкции. Так что есть вероятность, что уже в Android 12 можно будет обновить ART через GooglePlay, установив APEX-пакет.
Также, вероятно, система обновления Android мигрирует в Fuchsia, новую ОС Google, которая сейчас находится в процессе разработки. Они традиционно копируют удачные решения в своих программных продуктах. Так, например, update_engine для A/B-схемы, который применяется сейчас в Android, используется в еще одной ОC Google — Chrome OS. Или еще один пример: в Fuchsia предлагается библиотека Machina, которая позволяет запускать Linux-программы в специальной изолированной виртуальной машине по аналогии с тем, как организован запуск Linux-приложений в той же Chrome OS.
Источник