Процесс загрузки

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

Подтвержденный процесс загрузки

Рисунок 1. Проверенный процесс загрузки.

Поток для устройств A/B

Если устройство использует A/B, поток загрузки немного отличается. Слот для загрузки должен быть сначала отмечен как SUCCESSFUL с помощью Boot Control HAL перед обновлением метаданных Rollback Protection.

Если обновление платформы не удалось (не отмечено SUCCESSFUL ), стек A/B возвращается к другому слоту, в котором все еще находится предыдущая версия Android. Однако, если были установлены метаданные Rollback Protection, предыдущая версия не может загрузиться из-за Rollback Protection.

Сообщать пользователям о состоянии проверенной загрузки

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

  • ЖЕЛТЫЙ: экран предупреждения для ЗАБЛОКИРОВАННЫХ устройств с установленным пользователем корнем доверия
  • ОРАНЖЕВЫЙ: экран предупреждения для РАЗБЛОКИРОВАННЫХ устройств
  • КРАСНЫЙ (eio): Экран предупреждения о повреждении dm-verity
  • КРАСНЫЙ (ОС не найдена): не найдена допустимая ОС

ЗАБЛОКИРОВАННЫЕ устройства с настраиваемым корнем доверия

Желтый экран предупреждения об устройстве
Рисунок 2 : Пример желтого экрана

Показывать ЖЕЛТЫЙ экран при каждой загрузке, если устройство ЗАБЛОКИРОВАНО, установлен пользовательский корень доверия и образ был подписан этим пользовательским корнем доверия. ЖЕЛТЫЙ экран закрывается через десять секунд, и устройство продолжает загрузку. Если пользователь нажимает кнопку питания, текст «Нажмите кнопку питания, чтобы приостановить» меняется на «Нажмите кнопку питания, чтобы продолжить», и экран никогда не закрывается (хотя устройство может затемнить или выключить экран для защиты от выгорания). При повторном нажатии экран закрывается, и телефон продолжает загрузку.

Для hex-number используйте первые 8 цифр sha256 представления libavb открытого ключа, используемого для проверки, например d14a028c .

Предлагаемый текст:

На вашем устройстве загружена другая операционная система.

Чтобы узнать больше, перейдите по этой ссылке на другом устройстве:

g.co/ABH

ID: hex-number

Нажмите кнопку питания, чтобы приостановить

РАЗБЛОКИРОВАННЫЕ устройства

Оранжевый экран предупреждения устройства
Рисунок 3 : Пример оранжевого экрана

Показывать ОРАНЖЕВЫЙ экран при каждой загрузке, если устройство РАЗБЛОКИРОВАНО. ОРАНЖЕВЫЙ экран закрывается через десять секунд, и устройство продолжает загрузку. Если пользователь нажимает кнопку питания, текст «Нажмите кнопку питания, чтобы приостановить» меняется на «Нажмите кнопку питания, чтобы продолжить», и экран никогда не закрывается (устройство может затемнить и/или выключить экран, если это необходимо для защиты от выгорания или чего-то подобного). При повторном нажатии экран закрывается, и телефон продолжает загрузку.

Для hex-number используйте первые 8 цифр sha256 представления libavb открытого ключа, используемого для проверки, например d14a028c .

Предлагаемый текст:

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

Чтобы узнать больше, перейдите по этой ссылке на другом устройстве:

g.co/ABH

ID: hex-number

Нажмите кнопку питания, чтобы приостановить.

коррупция dm-verity

Красный экран предупреждения устройства eio
Рисунок 4 : Пример экрана Red eio

Показывать КРАСНЫЙ экран eio , если найдена допустимая версия Android и устройство в данный момент находится в режиме eio dm-verity. Пользователю необходимо нажать кнопку питания, чтобы продолжить. Если пользователь не подтвердил экран предупреждения в течение 30 секунд, устройство выключается (для защиты экрана от выгорания и экономии энергии).

Предлагаемый текст:

Ваше устройство повреждено. Ему нельзя доверять, и оно может работать некорректно.

Чтобы узнать больше, перейдите по этой ссылке на другом устройстве:

g.co/ABH

Нажмите кнопку питания, чтобы продолжить.

Действующая ОС не найдена

Красный экран предупреждения о повреждении устройства
Рисунок 5 : Пример красного экрана

Показать КРАСНЫЙ экран отображается, если не найдена допустимая версия Android. Устройство не может продолжить загрузку. Если пользователь не подтвердил экран предупреждения в течение 30 секунд, устройство выключается для защиты экрана от выгорания и экономии энергии.

Для hex-number используйте первые 8 цифр sha256 представления libavb открытого ключа, используемого для проверки, например d14a028c .

Предлагаемый текст:

Не удалось найти допустимую операционную систему. Устройство не загружается.

Чтобы узнать больше, перейдите по этой ссылке на другом устройстве:

g.co/ABH

ID: hex-number

Нажмите кнопку питания, чтобы выключить устройство.

Подтверждение разблокировки

РАЗБЛОКИРОВАТЬ экран предупреждения устройства
Рисунок 6 : Пример экрана подтверждения разблокировки

Показывать экран подтверждения разблокировки в ответ на команду fastboot flashing unlock , выполняемую через интерфейс fastboot. Изначально фокус находится на Don't unlock . Если пользователь не взаимодействует с экраном предупреждения в течение 30 секунд, экран исчезает, и команда не выполняется.

Предлагаемый текст:

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

Чтобы предотвратить несанкционированный доступ к вашим персональным данным, разблокировка загрузчика также удалит все персональные данные на вашем телефоне.

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

Разблокировать

Разблокируйте загрузчик.

Не разблокировать

Не разблокируйте загрузчик и не перезагружайте телефон.

Подтверждение блокировки

Показывать экран подтверждения блокировки в ответ на команду fastboot flashing lock , выполняемую через интерфейс fastboot. Изначально фокус находится на Don't lock . Если пользователь не взаимодействует с экраном предупреждения в течение 30 секунд, экран исчезает и команда не выполняется.

Текст:

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

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

Замок

Блокировка загрузчика.

Не запирать

Не блокируйте загрузчик и не перезагружайте телефон.

Передача проверенного состояния загрузки на Android

Экран предупреждения устройства подтверждения БЛОКИРОВКИ
Рисунок 7 : Экран предупреждения о блокировке устройства подтверждения

Загрузчик передает состояние Verified Boot в Android через параметры команд ядра или через bootconfig, начиная с Android 12. Он устанавливает для параметра androidboot.verifiedbootstate одно из следующих значений:

  • green : если устройство LOCKED и не используется устанавливаемый пользователем корень доверия
  • yellow : если устройство LOCKED и используется устанавливаемый пользователем корень доверия
  • orange : если устройство UNLOCKED

Параметр androidboot.veritymode устанавливается в eio или restart в зависимости от того, в каком состоянии находится загрузчик в отношении обработки ошибок dm-verity. Для получения более подробной информации см. Обработка ошибок проверки .