vbmeta что это такое

Всем привет с Вами как всегда

vbmeta что это такое. Смотреть фото vbmeta что это такое. Смотреть картинку vbmeta что это такое. Картинка про vbmeta что это такое. Фото vbmeta что это такое

avatar.png (88.96 KB, Downloads: 2)

2020-09-24 10:55:42 Upload

vbmeta что это такое. Смотреть фото vbmeta что это такое. Смотреть картинку vbmeta что это такое. Картинка про vbmeta что это такое. Фото vbmeta что это такое

avatar.png (275.11 KB, Downloads: 2)

2020-09-24 11:04:24 Upload

vbmeta что это такое. Смотреть фото vbmeta что это такое. Смотреть картинку vbmeta что это такое. Картинка про vbmeta что это такое. Фото vbmeta что это такое

avatar.png (212.68 KB, Downloads: 5)

2020-09-24 11:04:42 Upload

В итоге, всем кто имел проблему с провалом прошивки на Mi 10, следуйте инструкцией:

2. Подготовка к прошивке

Сначала, скачаем репозиторий Google Platform Tools.
Распакуем репозиторий в Локальный Диск С.
Фаилы из папки platform tools копируем в папке с прошивкой.
Фаилы vbmeta и vbmeta_system копируем с заменой в папке с прошивкой.
Образ TWRP копируем в папке platform tools.
Запускаем консоль.
Копируем путь к папке с прошивкой и в консоли вводим: cd [вставляем копируеиый путь]
Подключаем смартфон к ПК (он полюбому будет в Fastboot).

3. Сам процесс прошивки

В консоли вводим команды:

fastboot flash vbmeta vbmeta.img
fastboot flash vbmeta_system vbmeta_system.img

Далее, пробуем вводить следующие команды:

fastboot flash dtbo dtbo.img
fastboot flash cache cache.img

И пробуем я лично выполнил следующию команду:
fastboot erase userdata

И ввполняем следующие команды:

fastboot flash userdata userdata.img
fastboot flash recovery recovery.img
fastboot flash exaid exaid.img
fastboot flash cust cust.img
fastboot flash boot boot.img
fastboot reboot

Если всё таки застрянет консоль, смонтируем образ TWRP, команда: fastboot boot twrp.img и ждем запуск в TWRP, если с первого раза не захочет, выполняем ещё раз монтаж образа TWRP, если запустился успешно, делаем формат дата путь: Wipe, Format data пишем yes и жмем ОК

Далее, перезапускаемся в Fastboot (путь: Домой, Reboot, Bootloader)

И вводим остальные команды

fastboot flash userdata userdata.img
fastboot flash recovery recovery.img

fastboot flash exaid exaid.img

fastboot flash cust cust.img

fastboot flash boot boot.img

Источник

Обновить необновляемое. Treble, A/B-разметка, динамические и модульные обновления Android

vbmeta что это такое. Смотреть фото vbmeta что это такое. Смотреть картинку vbmeta что это такое. Картинка про vbmeta что это такое. Фото vbmeta что это такое

Содержание статьи

Эта статья рассказывает о ряде технологий, которые были интегрированы в Android в последние несколько лет и приблизили решение проблемы фрагментации, отсутствия обновлений и существенно упростили создание кастомных прошивок.

Treble

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

Дело в том, что Android, как и многие другие продукты Google, очень долгое время развивался в режиме вечной беты. Это значит, что Android менялся. Не только и не столько в плане интерфейса, сколько в плане внутренней архитектуры.

В Android никогда не было устоявшегося, обратно совместимого интерфейса между системой и драйверами. В большинстве случаев нельзя было просто взять новую версию Android и «посадить» ее на драйверы и ядро Linux от старой версии. Почти всегда что-нибудь да отваливалось.

Требовались обновленные драйверы, разработкой которых занимался производитель железа, а вовсе не производитель смартфона. Поэтому, если производитель чипсета, камеры или Wi-Fi-адаптера по тем или иным причинам отказывался поддерживать старое железо (что происходит очень часто, а в случае с такими компаниями, как MediaTek, постоянно), полноценный порт новой версии Android становится почти невозможен.

Создатели кастомных прошивок искали обходные пути, чтобы заставить новую версию Android работать на старых драйверах. В дело шли любые приемы от простого «не работает, забейте» до различных программных прослоек, обеспечивающих работу на устаревших драйверах. Так, в кастомных прошивках для Xiaomi Redmi 1s есть прослойка, которая позволяет использовать камеру в Android 7.1.1, хотя драйверы для нее застряли еще на уровне версии 4.4.4.

Однако для компании — производителя смартфона такой подход зачастую неприемлем. Устройство с выполненным подобным образом портом может просто не пройти сертификацию Google. Кроме того, такие прослойки нередко приводят к сбоям в неожиданных местах и не обеспечивают новую функциональность, которая может требоваться Android для корректной работы (например, поддержка новых режимов камеры).

К счастью, в какой-то момент Google решила положить конец этой вакханалии и стандартизовать-таки программный интерфейс между драйверами и Android. Это и есть инициатива Treble, и она была воплощена в жизнь в Android 8.0.

Суть Treble проста и уже должна быть понятна: код Android разделяется на две независимые части, одна из которых содержит драйверы и весь зависимый от железа код, а вторая — саму операционную систему. Программный интерфейс между этими компонентами стандартизуется и остается стабильным между релизами Android. Как результат, для портирования новой версии Android достаточно портировать платформенно независимую часть системы, и она корректно заработает на имеющихся драйверах и версии ядра Linux, с которой смартфон был выпущен на рынок.

Это в теории. На практике же есть пара подводных камней.

Теперь о самих Treble-совместимых прошивках. Сразу после выпуска Android 8.0 Google начала публиковать так называемые образы GSI (Generic System Image). Это официальная сборка «чистого» Android (AOSP) для Treble-совместимых устройств. В теории ее можно прошить на разблокированное устройство с помощью fastboot и получить официальный Android.

vbmeta что это такое. Смотреть фото vbmeta что это такое. Смотреть картинку vbmeta что это такое. Картинка про vbmeta что это такое. Фото vbmeta что это такое Android 10 GSI на 15 различных устройствах

Чуть позже GSI-сборки начали подготавливать и разработчики кастомных прошивок. Например, ты можешь скачать GSI-сборку от phhusson с множеством фиксов для разных устройств. В теме, посвященной Treble, на 4PDA есть множество Treble-совместимых прошивок, включая LineageOS. Ну а проверить свое устройство на совместимость с Treble можно с помощью приложения Treble Check.

A/B-разметка

Еще одна проблема с обновлениями — отказ пользователей. Как показывает практика, многие владельцы смартфонов не хотят обновлять свои устройства, потому что: а) это отнимает время, в течение которого смартфон будет недоступен для использования; б) после обновления смартфон может работать некорректно или не включиться вообще.

В свое время разработчики Chrome OS также столкнулись с этой проблемой и создали надежную и незаметную пользователю систему бесшовного обновления (Seamless updates). Суть ее состоит в том, что вместо одного системного раздела, поверх которого накладывались бы обновления системы, Chrome OS использует два идентичных системных раздела, каждый из которых содержит свою копию операционной системы.

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

Благодаря такой схеме пользователь даже не подозревает, что система обновилась, он просто попадает в обновленную ОС после перезагрузки или включения ноутбука. При этом Chrome OS способна гарантировать, что после обновления пользователь не получит кирпич: если во время загрузки с обновленного раздела произойдет сбой — система пометит текущий раздел флагом unbootable, сделает активным «старый» системный раздел и загрузит заведомо рабочую версию ОС.

Начиная с седьмой версии Android также поддерживает бесшовные обновления и так называемую A/B-разметку разделов. Однако, так как системных разделов в устройствах с Android намного больше, чем в хромбуках, сама раскладка разделов получается более запутанной. Вот только часть разделов, которые пришлось дублировать:

Всего дублированных разделов может быть несколько десятков. Например, на OnePlus 6 с A/B-разметкой общее количество разделов — 72 и несколько десятков из них используются только загрузчиком.

vbmeta что это такое. Смотреть фото vbmeta что это такое. Смотреть картинку vbmeta что это такое. Картинка про vbmeta что это такое. Фото vbmeta что это такое Двойные разделы на смартфоне OnePlus 6

РазделРазмер A/BРазмер A-only
Bootloader50 Мбайт × 250 Мбайт
Boot32 Мбайт × 232 Мбайт
Recovery032 Мбайт
Cache0100 Мбайт
Radio70 Мбайт × 270 Мбайт
Vendor300 Мбайт × 2300 Мбайт
System2048 Мбайт × 24096 Мбайт
Всего5000 Мбайт4680 Мбайт

Еще одно достоинство A/B-разметки — отсутствие экрана «Android is upgrading…» после обновления. Система просто загружается как обычно. Также A/B-разметка упрощает тестирование кастомных прошивок: кастом можно поставить второй системой и откатиться на первую, если что-то пойдет не так.

В целом одни плюсы и никаких минусов. Проблема только в том, что A/B-разметка до сих пор остается опциональной, а перешли на нее далеко не все производители смартфонов. Даже Samsung — крупнейший производитель устройств на Android — до сих пор использует старую разметку. И связано это, скорее всего, с нежеланием тратить средства и время на перепрофилирование уже работающей и отлаженной системы обновления.

Проверить, поддерживает ли твой смартфон A/B-разметку, можно с помощью все того же приложения Treble Check из предыдущего раздела или прочитав переменную ro.build.ab_update с помощью ADB:

Продолжение доступно только участникам

Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте

Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее

Вариант 2. Открой один материал

Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя! Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.

vbmeta что это такое. Смотреть фото vbmeta что это такое. Смотреть картинку vbmeta что это такое. Картинка про vbmeta что это такое. Фото vbmeta что это такое

Евгений Зобнин

Редактор рубрики X-Mobile. По совместительству сисадмин. Большой фанат Linux, Plan 9, гаджетов и древних видеоигр.

Источник

Динамические и модульные обновления Android

vbmeta что это такое. Смотреть фото vbmeta что это такое. Смотреть картинку vbmeta что это такое. Картинка про vbmeta что это такое. Фото vbmeta что это такое

Эта статья рассказывает о ряде технологий, которые были интегрированы в Android в последние несколько лет и приблизили решение проблемы фрагментации, отсутствия обновлений и существенно упростили создание кастомных прошивок.

A/B-разметка

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

В свое время разработчики Chrome OS также столкнулись с этой проблемой и создали надежную и незаметную пользователю систему бесшовного обновления (Seamless updates). Суть ее состоит в том, что вместо одного системного раздела, поверх которого накладывались бы обновления системы, Chrome OS использует два идентичных системных раздела, каждый из которых содержит свою копию операционной системы.

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

Благодаря такой схеме пользователь даже не подозревает, что система обновилась, он просто попадает в обновленную ОС после перезагрузки или включения ноутбука. При этом Chrome OS способна гарантировать, что после обновления пользователь не получит кирпич: если во время загрузки с обновленного раздела произойдет сбой — система пометит текущий раздел флагом unbootable, сделает активным «старый» системный раздел и загрузит заведомо рабочую версию ОС.

Начиная с седьмой версии Android также поддерживает бесшовные обновления и так называемую A/B-разметку разделов. Однако, так как системных разделов в устройствах с Android намного больше, чем в хромбуках, сама раскладка разделов получается более запутанной. Вот только часть разделов, которые пришлось дублировать:

Всего дублированных разделов может быть несколько десятков. Например, на OnePlus 6 с A/B-разметкой общее количество разделов — 72 и несколько десятков из них используются только загрузчиком.

РазделРазмер A/BРазмер A-only
Bootloader50 Мбайт × 250 Мбайт
Boot32 Мбайт × 232 Мбайт
Recovery032 Мбайт
Cache0100 Мбайт
Radio70 Мбайт × 270 Мбайт
Vendor300 Мбайт × 2300 Мбайт
System2048 Мбайт × 24096 Мбайт
Всего5000 Мбайт4680 Мбайт

Еще одно достоинство A/B-разметки — отсутствие экрана «Android is upgrading…» после обновления. Система просто загружается как обычно. Также A/B-разметка упрощает тестирование кастомных прошивок: кастом можно поставить второй системой и откатиться на первую, если что-то пойдет не так.

В целом одни плюсы и никаких минусов. Проблема только в том, что A/B-разметка до сих пор остается опциональной, а перешли на нее далеко не все производители смартфонов. Даже Samsung — крупнейший производитель устройств на Android — до сих пор использует старую разметку. И связано это, скорее всего, с нежеланием тратить средства и время на перепрофилирование уже работающей и отлаженной системы обновления.

Источник

Vbmeta что это такое

Указанная тема не существует, или находится на премодерации.

Cookies Preference Center

We use cookies on this website. To learn in detail about how we use cookies, please read our full Cookies Notice. To reject all non-essential cookies simply click «Save and Close» below. To accept or reject cookies by category please simply click on the tabs to the left. You can revisit and change your settings at any time. read more

These cookies are necessary for the website to function and cannot be switched off in our systems. They are usually only set in response to actions made by you which amount to a request for services such as setting your privacy preferences, logging in or filling in formsYou can set your browser to block or alert you about these cookies, but some parts of thesite will not then work. These cookies do not store any personally identifiable information.

These cookies are necessary for the website to function and cannot be switched off in our systems. They are usually only set in response to actions made by you which amount to a request for services such as setting your privacy preferences, logging in or filling in formsYou can set your browser to block or alert you about these cookies, but some parts of thesite will not then work. These cookies do not store any personally identifiable information.

These cookies are necessary for the website to function and cannot be switched off in our systems. They are usually only set in response to actions made by you which amount to a request for services such as setting your privacy preferences, logging in or filling in formsYou can set your browser to block or alert you about these cookies, but some parts of thesite will not then work. These cookies do not store any personally identifiable information.

Источник

Русские Блоги

Android Verified Boot 2.0 Реализация Android P AVB Подробное объяснение

Что такое АВБ

ВБМета структура

Основная структура данных, используемая в AVB: VBMeta Структура. Эта структура данных содержит много дескрипторов (и других метаданных), и все эти данные криптографически подписаны. Дескрипторы используются для значений хеша изображения, метаданных дерева хеша изображения и так называемых разделов ссылок. Вот простой пример:

vbmeta что это такое. Смотреть фото vbmeta что это такое. Смотреть картинку vbmeta что это такое. Картинка про vbmeta что это такое. Фото vbmeta что это такое

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

vbmeta что это такое. Смотреть фото vbmeta что это такое. Смотреть картинку vbmeta что это такое. Картинка про vbmeta что это такое. Фото vbmeta что это такое

В этой настройке xyz Раздел содержит хеш-дерево для проверки целостности. После хеш-дерева VBMeta Структура, которая содержит дескриптор хеш-дерева (корневой хэш, соль и смещение) с метаданными хеш-дерева. key1 подпись. Наконец, в конце раздела есть VBMeta Нижний колонтитул структуры смещен.

Этот параметр позволяет загрузчику использовать дескриптор раздела ссылок, чтобы найти нижний колонтитул в конце раздела (используя имя в дескрипторе раздела ссылок), что помогает найти VBMeta Структурируйте и убедитесь, что это key1 Подпись (используя хранимый в дескрипторе раздела ссылки key1_pub ). Важно то, что нижний колонтитул со смещением может быть обновлен xyz Раздел без каких-либо изменений в разделе vbmeta (Примечание переводчика: используйте key1 Проверка открытого ключа обновлена xyz Подпись раздела достаточна).

VBMeta Структура очень гибкая, дескриптор хеш-кода и дескриптор хеш-дерева любого раздела могут быть сохранены в vbmeta Разделы или другие разделы, используемые для проверки целостности (с помощью дескрипторов разделов ссылок) и других произвольных разделов. Это главным образом для рассмотрения широкого спектра организационных доверительных отношений.

Укажите раздел ссылки на VBMeta Раздел в начале структуры (как vbmeta Тот же раздел), раздел не может использовать нижний колонтитул. Дескрипторы хеш-дерева и хеш-дерева разделов, принадлежащих всей организации, хранятся в выделенном разделе (например, vbmeta_google Варианты использования в) очень полезны. В этом примере системный дескриптор дерева хешей находится по адресу vbmeta_google Раздел, который означает, что загрузчик не нуждается в доступе system Раздел, который полезен для system Разделы очень полезны в качестве примеров управления логическими разделами (например,LVMИли похожая технология).

Защита от отката

AVB также включает в себя защиту от отката для предотвращения известных уязвимостей. каждый VBMeta Структура имеет индекс отката (rollback index),Следующим образом:

vbmeta что это такое. Смотреть фото vbmeta что это такое. Смотреть картинку vbmeta что это такое. Картинка про vbmeta что это такое. Фото vbmeta что это такое

Эти цифры используют rollback_index[n] Сказал, что это число будет увеличиваться после того, как любое изображение найдет и исправит уязвимости безопасности. Кроме того, в устройстве будет храниться последний индекс отката, обнаруженный в защищенном от несанкционированного доступа хранилище:

vbmeta что это такое. Смотреть фото vbmeta что это такое. Смотреть картинку vbmeta что это такое. Картинка про vbmeta что это такое. Фото vbmeta что это такое

Они называются stored_rollback_index[n] 。

Поддержка разделов A / B

AVB предназначен для включения одновременно с разделом A / B. Он требует, чтобы суффикс A / B не использовался ни в одном имени раздела, хранящемся в дескрипторе. Это пример с двумя слотами:

vbmeta что это такое. Смотреть фото vbmeta что это такое. Смотреть картинку vbmeta что это такое. Картинка про vbmeta что это такое. Фото vbmeta что это такое

VBMeta резюме

Это резюме можно сравнить с загруженным пользовательским пространством операционной системы. libavb Используется вместе для проверки загруженного vbmeta Подлинность структуры. Эта опция полезна, если корень доверия или сохраненный индекс отката доступен только при запуске в загрузчике.

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

Инструменты и библиотеки

avbtool и libavb

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

Сохраните подписанные данные проверки на других изображениях (например, boot.img с участием system.img ) Также используется avbtool Законченный.

Adroid Things (примечание переводчика: набор операционных систем для платформы Internet of Things, запущенный Google) vbmeta Открытые ключи имеют особые требования и логику проверки. libavb_atx Расширение предоставляется в libavb Реализация операций проверки открытого ключа. (Видеть avb_ops.h средний avb_validate_vbmeta_public_key() )。

Файлы и каталоги

портативность

libavb/ База кода будет постоянно обновляться и оптимизироваться с течением времени, и интеграция должна быть как можно более неинвазивной. Цель состоит в том, чтобы поддерживать стабильный API библиотеки, но при необходимости он также будет изменен. Что касается переносимости, библиотека была спроектирована с высокой степенью переносимости в качестве цели, подходящей для архитектур малого и большого порядка, а также для 32-разрядных и 64-разрядных архитектур. Он также может работать в нестандартной среде без стандартной библиотеки C и среды выполнения.

Использовать скомпилированный libavb Приложение библиотеки может содержать только libavb/libavb.h Файл (будет включать все открытые интерфейсы), и там не должно быть avb_compile Набор символов препроцессора. Это необходимо для обеспечения внутренних кодов, которые могут измениться в будущем (например, avb_sha.[ch] с участием avb_rsa.[ch] ) Не виден код приложения.

Контроль версий и совместимость

AVB использует номер версии с тремя полями: основная версия, дополнительная версия и дополнительная версия. Это пример номера версии:

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

предостерегают, AvbVBMetaImageHeader Структура может содержать следующую информацию:

Использование avbtool

Содержимое раздела vbmeta может быть сгенерировано следующим образом:

Нижний колонтитул целостности, содержащий хэш всего раздела, можно добавить к существующему образу следующим образом:

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

можешь использовать resize_image Команда для изменения размера изображения с целостностью нижнего колонтитула:

Нижний колонтитул целостности изображения можно удалить с изображения. Как вариант, хеш-дерево может быть сохранено.

можешь использовать ppend_vbmeta_image Команда будет вся vbmeta Двоичный файл добавляется в конец другого изображения. Это очень полезно в ситуациях, когда не используется раздел vbmeta, например:

verify_image Команды могут использоваться для проверки содержимого нескольких файлов изображений одновременно. При вызове изображения объекта выполните следующие проверки:

Это пример установки, где boot.img с участием system.img Дайджест хранится в использовании my_key.pem подписанный vbmeta.img в. Также проверяет раздел foobar Использует ли раздел ссылок индекс отката 8 и соответствует ли открытый ключ в формате AVB файлу foobar_vendor_key.avbpubkey Открытый ключ соответствует:

Verifying image /path/to/vbmeta.img using key at my_key.pem
vbmeta: Successfully verified SHA256_RSA4096 vbmeta struct in /path_to/vbmeta.img
boot: Successfully verified sha256 hash of /path/to/boot.img for image of 10543104 bytes
system: Successfully verified sha1 hashtree of /path/to/system.img for image of 1065213952 bytes
foobar: Successfully verified chain partition descriptor matches expected data

verify_image Команду также можно использовать для проверки правильности работы помощника по созданию подписи.

Компилировать интеграцию

В Android проходит AVB BOARD_AVB_ENABLE Переменная включена.

После установки этой опции, это будет system.img Присоедините хеш-дерево и создайте vbmeta.img , vbmeta.img Изображение содержит boot.img с участием system.img Дескриптор хеша, и для system.img Настроить dm-verity Параметры командной строки ядра. Если система сборки настроена на сборку vendor.img / product.img / odm.img / product_services.img Один или несколько из них, хеш-дерево каждой системы сборки также будет присоединено к их соответствующим изображениям, и их дескрипторы хеш-дерева будут включены в соответствующие vbmeta.img в.

Используется по умолчанию SHA256_RSA4096 Алгоритм и external/avb/test/data Тестовый ключ в каталоге. Алгоритм и ключ соответственно определяются BOARD_AVB_ALGORITHM с участием BOARD_AVB_KEY_PATH Спецификация переменной, например, в следующем примере указано использование 4096-bit RSA key and SHA-512 алгоритм:

Устройство может быть настроено на создание дополнительных vbmeta Раздел как раздел ссылок, так что верхний уровень vbmeta Обновите подраздел в случае раздела. Например, следующая переменная создает vbmeta_mainline.img Как ссылка vbmeta Изображение, оно содержит system.img 、 product_services.img Дескриптор хеш-дерева. vbmeta_mainline.img Он будет подписан указанным ключом и алгоритмом.

предостерегают, system.img с участием product_services.img Дескриптор хеш-дерева будет включен только в vbmeta_mainline.img В, но не в vbmeta.img в. Через вышеуказанные настройки, раздел system.img , product_services.img с участием vbmeta_mainline.img Может обновляться самостоятельно.

В настоящее время система сборки поддерживает сборку vbmeta_mainline.img ( BOARD_AVB_VBMETA_MAINLINE )с участием vbmeta_vendor.img ( BOARD_AVB_VBMETA_VENDOR ) Такая ссылка vbmeta Образ.

Чтобы предотвратить атаки отката, необходимо регулярно добавлять индексы отката. можешь использовать BOARD_AVB_ROLLBACK_INDEX Индекс отката настройки переменной:

Если не установлено, индекс отката по умолчанию равен 0.

Системные переменные для сборки Verified Boot в старой версии Android (например, PRODUCT_SUPPORTS_VERITY_FEC ) Не используется в AVB.

кликните сюдаНайдите связанные с A / B системные переменные сборки.

Интеграция устройства

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

Кроме того, в этой главе также используется термин HLOS для обозначения операционных систем высокого уровня (High Level Operating System). Это, очевидно, включает в себя Android (включая, но не ограничиваясь, мобильные телефоны), но это могут быть и другие операционные системы.

Системная зависимость

libavb Способ написания библиотеки делает ее переносимой на любую систему, использующую компилятор C99. Для этого не требуется стандартная библиотека C, но должен быть реализован загрузчик libavb Требуется набор простых системных примитивов, таких как avb_malloc() 、 avb_free() с участием avb_print() 。

В дополнение к системным примитивам, libavb Также прошло AvbOps Структура действует как интерфейс для взаимодействия с загрузчиком. Это включает в себя чтение и запись данных из разделов, чтение и запись индексов отката, проверку того, следует ли принимать открытый ключ, используемый для подписи, и так далее.

Заблокированный и разблокированный режим

Заблокировано ли устройство Android ( LOCKED ) Или разблокировать ( UNLOCKED ) Статус, оба поддерживают AVB.

В контексте AVB, LOCKED Статус означает, что ошибка проверки является фатальной, а UNLOCKED Государства нет. Если устройство UNLOCKED Тогда в avb_slot_verify() Передано в параметре flags AVB_SLOT_VERIFY_FLAGS_ALLOW_VERIFICATION_ERROR Флаги, ошибки проверки, включая следующие ошибки, будут нефатальными:

Если устройство находится в состоянии LOCKED, пожалуйста, не avb_slot_verify() Передано в параметре flags AVB_SLOT_VERIFY_FLAGS_ALLOW_VERIFICATION_ERROR Логотип и только AVB_SLOT_VERIFY_RESULT_OK Обрабатывается как нефатальная ошибка.

На Android состояние устройства можно изменить через интерфейс fastboot. Например, используя fastboot flashing lock Переключиться на LOCKED Статус, использование fastboot flashing unlock Переключиться на UNLOCKED положение дел.

После подтверждения физического присутствия пользователя устройство должно разрешать только переходы состояний (например, из LOCKED к UNLOCKED или UNLOCKED к LOCKED ). Если устройство имеет дисплей и кнопки, оно обычно отображает диалоговое окно и просит пользователя использовать физическую кнопку для подтверждения или отмены операции.

Хранение несанкционированного доступа

В этом документе защита от несанкционированного доступа означает, что он может обнаружить HLOS Например, независимо от того, были ли данные подделаны, можно обнаружить, что данные были перезаписаны.

Если ключ проверки может измениться, онидолженОн может быть установлен только конечным пользователем, например, он никогда не должен устанавливаться на фабрике, в магазине или в любой промежуточной точке перед конечным пользователем. Кроме того, только когда устройство UNLOCKED Ключ может быть установлен или очищен только в состоянии.

Именованные постоянные значения

В AVB 1.1 введена поддержка именованных постоянных значений, эти значения должны быть защищены от несанкционированного доступа и позволять AVB хранить произвольные пары ключ-значение. Интеграторы могут ограничивать поддержку этих значений фиксированным набором известных имен, максимального размера и / или максимального числа.

Постоянные дайджесты

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

Обновление сохраненных индексов отката

Тем не менее, если вы используете A / B, вы должны быть более осторожны, когда обновление не работает, все еще позволяйте устройству вернуться к старому слоту.

Для HLOS, таких как Android, если вы обнаружите, что обновленная версия ОС не работает, поддерживается только откат. stored_rollback_index[n] Должны быть помечены только как из метаданных A / B SUCCESSFUL Слоты обновлены. Псевдокод выглядит следующим образом, где slot_is_marked_as_successful() Из используемого стека A / B:

Для HLOS, который можно откатить до предыдущей версии, stored_rollback_index[n] Следует установить максимальное значение, допустимое для всех слотов, которые могут быть запущены в обычном режиме. Этот метод является экспериментальным (в настоящее время не рекомендуется) A / B-стеком в AVB libavb_ab Реализовано в см. avb_ab_flow() достичь. Обратите внимание, что для этого требуется проверка всех загрузочных слотов при каждой загрузке, что может повлиять на время загрузки.

Рекомендуемый процесс наведения

Рекомендуемый процесс загрузки для устройств, использующих AVB:

vbmeta что это такое. Смотреть фото vbmeta что это такое. Смотреть картинку vbmeta что это такое. Картинка про vbmeta что это такое. Фото vbmeta что это такое

Обработка ошибок dm-verity

По замыслу, HLOS обнаруживает ошибки проверки дерева хешей вместо загрузчика. AVB предоставляет способ указать, как пройти avb_slot_verify() В функции hashtree_error_mode Ошибка обработки параметра. Возможные значения включают в себя:

hashtree_error_mode Переданное значение в основном только что передано androidboot.veritymode , androidboot.veritymode.managed с участием androidboot.vbmeta.invalidate_on_error Параметры командной строки ядра передаются в HLOS следующим образом:

valueandroidboot.veritymodeandroidboot.veritymode.managedandroidboot.vbmeta.invalidate_on_error
AVB_HASHTREE_ERROR_MODE_RESTART_AND_INVALIDATEenforcing(unset)yes
AVB_HASHTREE_ERROR_MODE_RESTARTenforcing(unset)(unset)
AVB_HASHTREE_ERROR_MODE_EIOeio(unset)(unset)
AVB_HASHTREE_ERROR_MODE_MANAGED_RESTART_AND_EIOeio or enforcingyes(unset)
AVB_HASHTREE_ERROR_MODE_LOGGINGignore_corruption(unset)(unset)

Единственное исключение из этой таблицы, если на верхнем уровне vbmeta Установить в AVB_VBMETA_IMAGE_FLAGS_HASHTREE_DISABLED Подпишите, тогда androidboot.veritymode Необходимо установить на disabled , androidboot.veritymode.managed с участием androidboot.vbmeta.invalidate_on_error Никаких настроек не требуется.

Какой режим я должен использовать для моего устройства?

Все зависит от устройства, способа его использования и требуемого опыта пользователя.

Для устройств Android, вы должны использовать AVB_HASHTREE_ERROR_MODE_MANAGED_RESTART_AND_EIO Режим. Смотрите также на source.android.comBoot FlowГлава, чтобы понять типы UX и UI, которые должен реализовать загрузчик.

Если устройство не имеет экрана или HLOS поддерживает несколько загрузочных слотов одновременно, используйте AVB_HASHTREE_ERROR_MODE_RESTART_AND_INVALIDATE Это может иметь больше смысла.

Специфичная для Android интеграция

На Android загрузчик должен быть установлен в командной строке ядра androidboot.verifiedbootstate Параметр указывает состояние загрузки. Следует использовать следующие значения:

Особенности оборудования

Этот раздел содержит информацию о том, как интегрировать AVB в определенные устройства. Это не исчерпывающий список.

Pixel 2

На Pixel 2 и Pixel 2 XL загрузчик поддерживает имя avb_custom_key Виртуальный раздел. только в UNLOCKED Раздел можно стереть и переписать в штат. Способ установки пользовательского ключа заключается в следующем:

Стирание ключа выполняется путем стирания виртуального раздела:

Источник

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

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