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

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

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

Рисунок 1. Проверенная последовательность загрузки.

Схема работы для устройств A/B

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

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

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

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

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

Заблокированные устройства с пользовательским корневым источником доверия

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

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

Предложенный текст:

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

Перейдите по этой ссылке на другом устройстве:

g.co/ABH

Отпечаток ОС: hex-number

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

Пример ЖЁЛТОГО экрана
Рисунок 2. Пример ЖЕЛТОГО экрана.

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

При каждой загрузке разблокированного устройства на экране появляется оранжевый индикатор. Оранжевый индикатор исчезает через десять секунд, и устройство продолжает загрузку. Если пользователь нажимает кнопку питания, текст «Нажмите кнопку питания для паузы» меняется на «Нажмите кнопку питания для продолжения», и экран никогда не исчезает (при необходимости устройство может приглушить и/или выключить экран для защиты от выгорания пикселей или подобных проблем). При повторном нажатии экран исчезает, и телефон продолжает загрузку.

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

Предложенный текст:

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

Перейдите по этой ссылке на другом устройстве:

g.co/ABH

ID: hex-number

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

Пример оранжевого экрана
Рисунок 3. Пример оранжевого экрана.

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

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

Предложенный текст:

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

Перейдите по этой ссылке на другом устройстве:

g.co/ABH

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

Пример экрана RED eio
Рисунок 4. Пример экрана RED eio.

Действительная операционная система не найдена.

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

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

Предложенный текст:

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

Перейдите по этой ссылке на другом устройстве:

g.co/ABH

ID: hex-number

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

Пример экрана RED
Рисунок 5. Пример красного экрана.

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

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

Предложенный текст:

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

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

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

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

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

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

Пример экрана подтверждения разблокировки
Рисунок 6. Пример экрана подтверждения разблокировки.

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

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

Текст:

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

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

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

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

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

Предупреждающий экран подтверждения блокировки устройства
Рисунок 7. Предупреждающий экран устройства подтверждения блокировки.

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

Загрузчик передает информацию о состоянии «Проверено» (Verified Boot) в Android через параметры команд ядра или через bootconfig в Android 12 и выше. Загрузчик устанавливает параметр androidboot.verifiedbootstate в одно из следующих значений:

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

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