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

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

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

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

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

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

Если обновление платформы завершается неудачей (не отмечено 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. Изначально выбран вариант «Не разблокировать» . Если пользователь не взаимодействует с экраном предупреждения в течение 30 секунд, экран исчезает, и команда не выполняется.

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

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

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

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

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

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

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

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

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

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

Текст:

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

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

Замок

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

Не запирать

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

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

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

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

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

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