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

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

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

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

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

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

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

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

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

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

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

Пример ЖЕЛТОГО экрана:

Желтый экран предупреждения об устройстве

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

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

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

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

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

g.co/ABH

ID: hex-number

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

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

Пример ОРАНЖЕВОГО экрана:

Оранжевый экран предупреждения об устройстве

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

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

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

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

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

g.co/ABH

ID: hex-number

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

повреждение дм-правдивости

Пример экрана RED eio:

Красный экран предупреждения об устройстве eio

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

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

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

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

g.co/ABH

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

Действительная ОС не найдена

Пример КРАСНОГО экрана:

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

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

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

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

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

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

g.co/ABH

ID: hex-number

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

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

Пример экрана:

Экран предупреждения РАЗБЛОКИРОВАТЬ устройство

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

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

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

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

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

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

Разблокировать загрузчик.

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

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

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

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

Текст:

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

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

Замок

Заблокировать загрузчик.

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

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

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

Пример экрана:

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

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

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

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