Перейти к содержанию

Вопрос

  • Модераторы

Здесь мы попробуем окончательно прояснить вопрос, по поводу которого сломана не одна тысяча копий: как же все-таки лучше и безопасней прошивать шлем, по воздуху, через официальный источник, или вручную, заливкой файла непосредственно на шлем командой adb sideload update.zip?

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

Рекомендуемые сообщения

  • 0
  • Модераторы

Итак, в чем же разница?

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

 

Давайте начнем с того, что, собственно, представляет собой прошивка? А точнее, процесс прошивки.

Он происходит в несколько этапов:

  1. Отправка файла прошивки на шлем
  2. Проверка файла прошивки на целостность и на соответствие сертификатов и хэшей.
  3. Передача файла прошивки процессу update_engine
  4. "Потрошение" файла прошивки на блоки/разделы
  5. Проверка хэшей каждого "распотрошенного" блока
  6. Создание снепшотов (копий состояния) системных разделов
  7. Обновление системных разделов в неактивном слоте
  8. Проверка обновленных разделов на корректность и целостность
  9. Слияние снепшотов с системными разделами
  10. Выполнение нескольких проверок загрузки с обновленного слота
  11. При успешных проверках переключение на обновленный слот
  12. Штатная загрузка системы с обновленного слота
  13. Обновление другого слота.

Следует отметить, что это очень упрощенное описание того, что происходит при обновлении. Подробней можно прочитать здесь: https://source.android.com/docs/core/ota/ab?hl=en

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

При OTA прошивке файл прилетает по воздуху (Over-The-Air), а при ручной - доставляется по кабелю командой adb sideload update.zip.

 

Подчеркну: команда (и он же режим) sideload - это доставка файла на шлем, а не его прошивка. Проще говоря, это фактически команда copy или adb push в контексте Андроид, но специализированная. А вот после передачи файла прошивки на шлем, им занимается уже непосредственно процесс update_engine. В обоих случаях, как при OTA, так и вручную.

 

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

 

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

 

Картинка, иллюстрирующая процесс начала прошивки:

116fd2f8-3421-44a4-8a76-4a0078977e28.png

 

Есть еще один несложный способ убедиться в отсутствии отличий - достаточно скачать со шлема bugreport и заглянуть в лог-файлы update_engine, по ним отчетливо видно, что прошивка в обоих случаях проходит одинаково.

 

Кладу под спойлер логи от update_engine:

 

Лог от ручной прошивки

[0812/203727.044262] [INFO:main.cc(54)] A/B Update Engine starting
[0812/203727.138114] [INFO:BootControlClient.cpp(341)] AIDL IBootControl not available, falling back to HIDL.
[0812/203727.233703] [INFO:BootControlClient.cpp(354)] Using HIDL version 1.2 of IBootControl
[0812/203727.262531] [INFO:boot_control_android.cc(64)] Loaded boot control hal.
[0812/203727.281736] [ERROR:update_attempter_android.cc(948)] prefs_->GetInt64(kPrefsPreviousSlot, &previous_slot) failed.
[0812/203727.297033] [INFO:update_attempter_android.cc(200)] OTAResult::NOT_ATTEMPTED
[0812/203727.337426] [INFO:update_attempter_android.cc(840)] Clearing update complete marker.
[0812/203727.352628] [INFO:update_attempter_android.cc(1291)] Scheduling CleanupPreviousUpdateAction.
[0812/203727.364186] [INFO:action_processor.cc(51)] ActionProcessor: starting CleanupPreviousUpdateAction
[0812/203727.377465] [INFO:cleanup_previous_update_action.cc(149)] Starting/resuming CleanupPreviousUpdateAction
[0812/203727.390036] [INFO:cleanup_previous_update_action.cc(124)] CleanupPreviousUpdateAction scheduled task ID 1 for WaitBootCompleted
[0812/203729.392996] [INFO:cleanup_previous_update_action.cc(112)] Executing task 1
[0812/203729.410658] [INFO:cleanup_previous_update_action.cc(124)] CleanupPreviousUpdateAction scheduled task ID 3 for WaitBootCompleted
[0812/203731.413486] [INFO:cleanup_previous_update_action.cc(112)] Executing task 3
[0812/203731.439182] [INFO:cleanup_previous_update_action.cc(124)] CleanupPreviousUpdateAction scheduled task ID 4 for WaitBootCompleted
[0812/203733.441768] [INFO:cleanup_previous_update_action.cc(112)] Executing task 4
[0812/203733.456063] [INFO:cleanup_previous_update_action.cc(124)] CleanupPreviousUpdateAction scheduled task ID 5 for WaitBootCompleted
[0812/203735.458526] [INFO:cleanup_previous_update_action.cc(112)] Executing task 5
[0812/203735.471562] [INFO:cleanup_previous_update_action.cc(124)] CleanupPreviousUpdateAction scheduled task ID 6 for WaitBootCompleted
[0812/203737.473941] [INFO:cleanup_previous_update_action.cc(112)] Executing task 6
[0812/203737.486063] [INFO:cleanup_previous_update_action.cc(124)] CleanupPreviousUpdateAction scheduled task ID 7 for WaitBootCompleted
[0812/203739.488951] [INFO:cleanup_previous_update_action.cc(112)] Executing task 7
[0812/203739.504120] [INFO:cleanup_previous_update_action.cc(124)] CleanupPreviousUpdateAction scheduled task ID 8 for WaitBootCompleted
[0812/203741.506808] [INFO:cleanup_previous_update_action.cc(112)] Executing task 8
[0812/203741.522587] [INFO:cleanup_previous_update_action.cc(124)] CleanupPreviousUpdateAction scheduled task ID 9 for WaitBootCompleted
[0812/203743.524661] [INFO:cleanup_previous_update_action.cc(112)] Executing task 9
[0812/203743.538439] [INFO:cleanup_previous_update_action.cc(124)] CleanupPreviousUpdateAction scheduled task ID 10 for WaitBootCompleted
[0812/203745.541287] [INFO:cleanup_previous_update_action.cc(112)] Executing task 10
[0812/203745.557957] [INFO:cleanup_previous_update_action.cc(124)] CleanupPreviousUpdateAction scheduled task ID 11 for WaitBootCompleted
[0812/203747.560634] [INFO:cleanup_previous_update_action.cc(112)] Executing task 11
[0812/203747.619643] [INFO:cleanup_previous_update_action.cc(124)] CleanupPreviousUpdateAction scheduled task ID 12 for WaitBootCompleted
[0812/203749.622498] [INFO:cleanup_previous_update_action.cc(112)] Executing task 12
[0812/203754.256942] [INFO:cleanup_previous_update_action.cc(124)] CleanupPreviousUpdateAction scheduled task ID 13 for WaitBootCompleted
[0812/203756.258382] [INFO:cleanup_previous_update_action.cc(112)] Executing task 13
[0812/203756.290956] [INFO:cleanup_previous_update_action.cc(124)] CleanupPreviousUpdateAction scheduled task ID 14 for WaitBootCompleted
[0812/203758.291712] [INFO:cleanup_previous_update_action.cc(112)] Executing task 14
[0812/203758.321873] [INFO:cleanup_previous_update_action.cc(124)] CleanupPreviousUpdateAction scheduled task ID 15 for WaitBootCompleted
[0812/203800.322739] [INFO:cleanup_previous_update_action.cc(112)] Executing task 15
[0812/203800.360375] [INFO:cleanup_previous_update_action.cc(124)] CleanupPreviousUpdateAction scheduled task ID 16 for WaitBootCompleted
[0812/203802.361716] [INFO:cleanup_previous_update_action.cc(112)] Executing task 16
[0812/203802.567037] [INFO:cleanup_previous_update_action.cc(124)] CleanupPreviousUpdateAction scheduled task ID 17 for WaitBootCompleted
[0812/203804.568876] [INFO:cleanup_previous_update_action.cc(112)] Executing task 17
[0812/203804.579976] [INFO:cleanup_previous_update_action.cc(189)] Boot completed, waiting on markBootSuccessful()
[0812/203804.588918] [INFO:snapshot.cpp(3840)] EnsureMetadataMounted does nothing in Android mode.
[0812/203804.597808] [INFO:snapshot_stats.cpp(37)] Read merge statistics file failed: No such file or directory
[0812/203804.606626] [INFO:cleanup_previous_update_action.cc(261)] Waiting for any previous merge request to complete. This can take up to several minutes.
[0812/203804.614432] [INFO:snapshot.cpp(1679)] Update state is being processed while booting at target slot, taking no action.
[0812/203804.622887] [INFO:snapshot.cpp(1076)] CheckMergeState for snapshots returned: Unverified
[0812/203804.628845] [INFO:snapshot.cpp(1048)] ProcessUpdateState handling state: Unverified
[0812/203804.634907] [INFO:cleanup_previous_update_action.cc(405)] Attempting to initiate merge.
[0812/203804.643969] [INFO:BootControlClient.cpp(341)] AIDL IBootControl not available, falling back to HIDL.
[0812/203804.651109] [INFO:BootControlClient.cpp(354)] Using HIDL version 1.2 of IBootControl
[0812/203804.694673] [INFO:snapshot.cpp(947)] Successfully switched snapshot device to a merge target: system_a
[0812/203804.718225] [INFO:snapshot.cpp(947)] Successfully switched snapshot device to a merge target: product_a
[0812/203804.773418] [INFO:snapshot.cpp(947)] Successfully switched snapshot device to a merge target: odm_dlkm_a
[0812/203804.817780] [INFO:snapshot.cpp(947)] Successfully switched snapshot device to a merge target: odm_a
[0812/203804.844370] [INFO:snapshot.cpp(947)] Successfully switched snapshot device to a merge target: vendor_dlkm_a
[0812/203804.897926] [INFO:snapshot.cpp(947)] Successfully switched snapshot device to a merge target: vendor_a
[0812/203804.939465] [INFO:snapshot.cpp(947)] Successfully switched snapshot device to a merge target: system_ext_a
[0812/203804.977478] [INFO:snapshot.cpp(1141)] CheckTargetMergeState for system_a returned: Merging
[0812/203805.000885] [INFO:snapshot.cpp(1141)] CheckTargetMergeState for product_a returned: Merging
[0812/203806.069132] Waited one second for gsiservice (is service started? Number of threads started in the threadpool: 1. Are binder threads started and available?)
[0812/203806.112595] [INFO:snapshot.cpp(1141)] CheckTargetMergeState for odm_dlkm_a returned: MergeCompleted
[0812/203806.215582] [INFO:snapshot.cpp(1141)] CheckTargetMergeState for odm_a returned: MergeCompleted
[0812/203806.320536] [INFO:snapshot.cpp(1141)] CheckTargetMergeState for vendor_dlkm_a returned: MergeCompleted
[0812/203806.352147] [INFO:snapshot.cpp(1141)] CheckTargetMergeState for vendor_a returned: Merging
[0812/203806.376309] [INFO:snapshot.cpp(1141)] CheckTargetMergeState for system_ext_a returned: Merging
[0812/203806.400643] [INFO:snapshot.cpp(1076)] CheckMergeState for snapshots returned: Merging
[0812/203806.414629] [INFO:snapshot.cpp(1048)] ProcessUpdateState handling state: Merging
[0812/203806.430709] [INFO:cleanup_previous_update_action.cc(372)] Waiting for merge to complete: 21%.
[0812/203806.440740] [INFO:cleanup_previous_update_action.cc(124)] CleanupPreviousUpdateAction scheduled task ID 18 for WaitForMerge
[0812/203808.444050] [INFO:cleanup_previous_update_action.cc(112)] Executing task 18
[0812/203808.461546] [INFO:snapshot.cpp(1141)] CheckTargetMergeState for system_a returned: Merging
[0812/203808.535455] [INFO:snapshot.cpp(1141)] CheckTargetMergeState for product_a returned: MergeCompleted
[0812/203808.546310] [INFO:snapshot.cpp(1141)] CheckTargetMergeState for vendor_a returned: Merging
[0812/203808.557545] [INFO:snapshot.cpp(1141)] CheckTargetMergeState for system_ext_a returned: Merging
[0812/203808.582197] [INFO:snapshot.cpp(1076)] CheckMergeState for snapshots returned: Merging
[0812/203808.593485] [INFO:snapshot.cpp(1048)] ProcessUpdateState handling state: Merging
[0812/203808.606361] [INFO:cleanup_previous_update_action.cc(372)] Waiting for merge to complete: 44%.
[0812/203808.633082] [INFO:cleanup_previous_update_action.cc(124)] CleanupPreviousUpdateAction scheduled task ID 19 for WaitForMerge
[0812/203810.635425] [INFO:cleanup_previous_update_action.cc(112)] Executing task 19
[0812/203810.645478] [INFO:snapshot.cpp(1141)] CheckTargetMergeState for system_a returned: Merging
[0812/203810.692424] [INFO:snapshot.cpp(1141)] CheckTargetMergeState for vendor_a returned: MergeCompleted
[0812/203810.698023] [INFO:snapshot.cpp(1141)] CheckTargetMergeState for system_ext_a returned: Merging
[0812/203810.707932] [INFO:snapshot.cpp(1076)] CheckMergeState for snapshots returned: Merging
[0812/203810.716264] [INFO:snapshot.cpp(1048)] ProcessUpdateState handling state: Merging
[0812/203810.723736] [INFO:cleanup_previous_update_action.cc(372)] Waiting for merge to complete: 65%.
[0812/203810.730080] [INFO:cleanup_previous_update_action.cc(124)] CleanupPreviousUpdateAction scheduled task ID 20 for WaitForMerge
[0812/203812.732416] [INFO:cleanup_previous_update_action.cc(112)] Executing task 20
[0812/203812.741433] [INFO:snapshot.cpp(1141)] CheckTargetMergeState for system_a returned: Merging
[0812/203812.757594] [INFO:snapshot.cpp(1141)] CheckTargetMergeState for system_ext_a returned: Merging
[0812/203812.769177] [INFO:snapshot.cpp(1076)] CheckMergeState for snapshots returned: Merging
[0812/203812.785471] [INFO:snapshot.cpp(1048)] ProcessUpdateState handling state: Merging
[0812/203812.796622] [INFO:cleanup_previous_update_action.cc(372)] Waiting for merge to complete: 87%.
[0812/203812.806412] [INFO:cleanup_previous_update_action.cc(124)] CleanupPreviousUpdateAction scheduled task ID 21 for WaitForMerge
[0812/203814.808462] [INFO:cleanup_previous_update_action.cc(112)] Executing task 21
[0812/203814.892136] [INFO:snapshot.cpp(1141)] CheckTargetMergeState for system_a returned: MergeCompleted
[0812/203814.961938] [INFO:snapshot.cpp(1141)] CheckTargetMergeState for system_ext_a returned: MergeCompleted
[0812/203814.964095] [INFO:snapshot.cpp(1076)] CheckMergeState for snapshots returned: MergeCompleted
[0812/203814.966024] [INFO:snapshot.cpp(288)] Removing all update state.
[0812/203814.972335] [INFO:snapshot.cpp(1048)] ProcessUpdateState handling state: MergeCompleted
[0812/203814.974339] [INFO:cleanup_previous_update_action.cc(330)] Merge finished with state MergeCompleted.
[0812/203815.034237] [INFO:cleanup_previous_update_action.cc(130)] Stopping/suspending/completing CleanupPreviousUpdateAction
[0812/203815.037964] [INFO:cleanup_previous_update_action.cc(509)] Reporting merge stats: MergeCompleted in 10438ms (resumed 0 times), using 0 bytes of COW image.
[0812/203815.042299] [INFO:cleanup_previous_update_action.cc(130)] Stopping/suspending/completing CleanupPreviousUpdateAction
[0812/203815.044555] [INFO:action_processor.cc(116)] ActionProcessor: finished last action CleanupPreviousUpdateAction with code ErrorCode::kSuccess
[0812/203815.047295] [INFO:update_attempter_android.cc(587)] Processing Done.
[0812/203815.055907] [INFO:update_attempter_android.cc(840)] Clearing update complete marker.
[0812/203815.058178] [INFO:update_attempter_android.cc(735)] Terminating cleanup previous update.

 

Лог от прошивки через веб-сайт

[0831/182633.738687] [INFO:main.cc(54)] A/B Update Engine starting
[0831/182633.879826] [INFO:BootControlClient.cpp(341)] AIDL IBootControl not available, falling back to HIDL.
[0831/182633.902627] [INFO:BootControlClient.cpp(354)] Using HIDL version 1.2 of IBootControl
[0831/182633.919019] [INFO:boot_control_android.cc(64)] Loaded boot control hal.
[0831/182633.963787] [ERROR:update_attempter_android.cc(948)] prefs_->GetInt64(kPrefsPreviousSlot, &previous_slot) failed.
[0831/182633.986163] [INFO:update_attempter_android.cc(200)] OTAResult::NOT_ATTEMPTED
[0831/182634.039433] [INFO:update_attempter_android.cc(840)] Clearing update complete marker.
[0831/182634.053921] [INFO:update_attempter_android.cc(1291)] Scheduling CleanupPreviousUpdateAction.
[0831/182634.074274] [INFO:action_processor.cc(51)] ActionProcessor: starting CleanupPreviousUpdateAction
[0831/182634.087221] [INFO:cleanup_previous_update_action.cc(149)] Starting/resuming CleanupPreviousUpdateAction
[0831/182634.104085] [INFO:cleanup_previous_update_action.cc(124)] CleanupPreviousUpdateAction scheduled task ID 1 for WaitBootCompleted
[0831/182636.105614] [INFO:cleanup_previous_update_action.cc(112)] Executing task 1
[0831/182636.126754] [INFO:cleanup_previous_update_action.cc(124)] CleanupPreviousUpdateAction scheduled task ID 3 for WaitBootCompleted
[0831/182638.127918] [INFO:cleanup_previous_update_action.cc(112)] Executing task 3
[0831/182638.178765] [INFO:cleanup_previous_update_action.cc(124)] CleanupPreviousUpdateAction scheduled task ID 4 for WaitBootCompleted
[0831/182640.180037] [INFO:cleanup_previous_update_action.cc(112)] Executing task 4
[0831/182640.303049] [INFO:cleanup_previous_update_action.cc(124)] CleanupPreviousUpdateAction scheduled task ID 5 for WaitBootCompleted
[0831/182642.306151] [INFO:cleanup_previous_update_action.cc(112)] Executing task 5
[0831/182642.316158] [INFO:cleanup_previous_update_action.cc(189)] Boot completed, waiting on markBootSuccessful()
[0831/182642.330542] [INFO:snapshot.cpp(3840)] EnsureMetadataMounted does nothing in Android mode.
[0831/182642.343041] [INFO:snapshot_stats.cpp(37)] Read merge statistics file failed: No such file or directory
[0831/182642.359073] [INFO:cleanup_previous_update_action.cc(261)] Waiting for any previous merge request to complete. This can take up to several minutes.
[0831/182642.372220] [INFO:snapshot.cpp(1679)] Update state is being processed while booting at target slot, taking no action.
[0831/182642.381528] [INFO:snapshot.cpp(1076)] CheckMergeState for snapshots returned: Unverified
[0831/182642.389100] [INFO:snapshot.cpp(1048)] ProcessUpdateState handling state: Unverified
[0831/182642.399785] [INFO:cleanup_previous_update_action.cc(405)] Attempting to initiate merge.
[0831/182642.410418] [INFO:BootControlClient.cpp(341)] AIDL IBootControl not available, falling back to HIDL.
[0831/182642.425175] [INFO:BootControlClient.cpp(354)] Using HIDL version 1.2 of IBootControl
[0831/182642.446172] [INFO:snapshot.cpp(947)] Successfully switched snapshot device to a merge target: system_a
[0831/182642.469232] [INFO:snapshot.cpp(947)] Successfully switched snapshot device to a merge target: product_a
[0831/182642.493565] [INFO:snapshot.cpp(947)] Successfully switched snapshot device to a merge target: odm_dlkm_a
[0831/182642.532486] [INFO:snapshot.cpp(947)] Successfully switched snapshot device to a merge target: odm_a
[0831/182642.566888] [INFO:snapshot.cpp(947)] Successfully switched snapshot device to a merge target: vendor_dlkm_a
[0831/182642.606485] [INFO:snapshot.cpp(947)] Successfully switched snapshot device to a merge target: vendor_a
[0831/182642.658966] [INFO:snapshot.cpp(947)] Successfully switched snapshot device to a merge target: system_ext_a
[0831/182642.699573] [INFO:snapshot.cpp(1141)] CheckTargetMergeState for system_a returned: Merging
[0831/182642.724919] [INFO:snapshot.cpp(1141)] CheckTargetMergeState for product_a returned: Merging
[0831/182643.783621] Waited one second for gsiservice (is service started? Number of threads started in the threadpool: 1. Are binder threads started and available?)
[0831/182643.842665] [INFO:snapshot.cpp(1141)] CheckTargetMergeState for odm_dlkm_a returned: MergeCompleted
[0831/182643.922989] [INFO:snapshot.cpp(1141)] CheckTargetMergeState for odm_a returned: MergeCompleted
[0831/182641.489396] [INFO:snapshot.cpp(1141)] CheckTargetMergeState for vendor_dlkm_a returned: MergeCompleted
[0831/182641.529274] [INFO:snapshot.cpp(1141)] CheckTargetMergeState for vendor_a returned: Merging
[0831/182641.552144] [INFO:snapshot.cpp(1141)] CheckTargetMergeState for system_ext_a returned: Merging
[0831/182641.586630] [INFO:snapshot.cpp(1076)] CheckMergeState for snapshots returned: Merging
[0831/182641.601273] [INFO:snapshot.cpp(1048)] ProcessUpdateState handling state: Merging
[0831/182641.624036] [INFO:cleanup_previous_update_action.cc(372)] Waiting for merge to complete: 19%.
[0831/182641.647661] [INFO:cleanup_previous_update_action.cc(124)] CleanupPreviousUpdateAction scheduled task ID 6 for WaitForMerge
[0831/182643.649403] [INFO:cleanup_previous_update_action.cc(112)] Executing task 6
[0831/182643.676755] [INFO:snapshot.cpp(1141)] CheckTargetMergeState for system_a returned: Merging
[0831/182643.763261] [INFO:snapshot.cpp(1141)] CheckTargetMergeState for product_a returned: MergeCompleted
[0831/182643.778296] [INFO:snapshot.cpp(1141)] CheckTargetMergeState for vendor_a returned: Merging
[0831/182643.803460] [INFO:snapshot.cpp(1141)] CheckTargetMergeState for system_ext_a returned: Merging
[0831/182643.814294] [INFO:snapshot.cpp(1076)] CheckMergeState for snapshots returned: Merging
[0831/182643.827092] [INFO:snapshot.cpp(1048)] ProcessUpdateState handling state: Merging
[0831/182643.837338] [INFO:cleanup_previous_update_action.cc(372)] Waiting for merge to complete: 42%.
[0831/182643.858128] [INFO:cleanup_previous_update_action.cc(124)] CleanupPreviousUpdateAction scheduled task ID 7 for WaitForMerge
[0831/182645.859582] [INFO:cleanup_previous_update_action.cc(112)] Executing task 7
[0831/182645.874116] [INFO:snapshot.cpp(1141)] CheckTargetMergeState for system_a returned: Merging
[0831/182645.956764] [INFO:snapshot.cpp(1141)] CheckTargetMergeState for vendor_a returned: MergeCompleted
[0831/182645.973751] [INFO:snapshot.cpp(1141)] CheckTargetMergeState for system_ext_a returned: Merging
[0831/182645.984887] [INFO:snapshot.cpp(1076)] CheckMergeState for snapshots returned: Merging
[0831/182645.997343] [INFO:snapshot.cpp(1048)] ProcessUpdateState handling state: Merging
[0831/182646.009567] [INFO:cleanup_previous_update_action.cc(372)] Waiting for merge to complete: 65%.
[0831/182646.023022] [INFO:cleanup_previous_update_action.cc(124)] CleanupPreviousUpdateAction scheduled task ID 8 for WaitForMerge
[0831/182648.023868] [INFO:cleanup_previous_update_action.cc(112)] Executing task 8
[0831/182648.029587] [INFO:snapshot.cpp(1141)] CheckTargetMergeState for system_a returned: Merging
[0831/182648.036334] [INFO:snapshot.cpp(1141)] CheckTargetMergeState for system_ext_a returned: Merging
[0831/182648.038860] [INFO:snapshot.cpp(1076)] CheckMergeState for snapshots returned: Merging
[0831/182648.046976] [INFO:snapshot.cpp(1048)] ProcessUpdateState handling state: Merging
[0831/182648.054298] [INFO:cleanup_previous_update_action.cc(372)] Waiting for merge to complete: 85%.
[0831/182648.063300] [INFO:cleanup_previous_update_action.cc(124)] CleanupPreviousUpdateAction scheduled task ID 9 for WaitForMerge
[0831/182650.065351] [INFO:cleanup_previous_update_action.cc(112)] Executing task 9
[0831/182650.142362] [INFO:snapshot.cpp(1141)] CheckTargetMergeState for system_a returned: MergeCompleted
[0831/182650.212360] [INFO:snapshot.cpp(1141)] CheckTargetMergeState for system_ext_a returned: MergeCompleted
[0831/182650.218725] [INFO:snapshot.cpp(1076)] CheckMergeState for snapshots returned: MergeCompleted
[0831/182650.220620] [INFO:snapshot.cpp(288)] Removing all update state.
[0831/182650.227658] [INFO:snapshot.cpp(1048)] ProcessUpdateState handling state: MergeCompleted
[0831/182650.229736] [INFO:cleanup_previous_update_action.cc(330)] Merge finished with state MergeCompleted.
[0831/182650.294521] [INFO:cleanup_previous_update_action.cc(130)] Stopping/suspending/completing CleanupPreviousUpdateAction
[0831/182650.297053] [INFO:cleanup_previous_update_action.cc(509)] Reporting merge stats: MergeCompleted in 10470ms (resumed 0 times), using 0 bytes of COW image.
[0831/182650.299101] [INFO:cleanup_previous_update_action.cc(130)] Stopping/suspending/completing CleanupPreviousUpdateAction
[0831/182650.301005] [INFO:action_processor.cc(116)] ActionProcessor: finished last action CleanupPreviousUpdateAction with code ErrorCode::kSuccess
[0831/182650.302879] [INFO:update_attempter_android.cc(587)] Processing Done.
[0831/182650.308974] [INFO:update_attempter_android.cc(840)] Clearing update complete marker.
[0831/182650.310911] [INFO:update_attempter_android.cc(735)] Terminating cleanup previous update.

 

Лог от прошивки по воздуху

[0909/042213.271512] [INFO:main.cc(54)] A/B Update Engine starting
[0909/042213.423773] [INFO:BootControlClient.cpp(341)] AIDL IBootControl not available, falling back to HIDL.
[0909/042213.459392] [INFO:BootControlClient.cpp(354)] Using HIDL version 1.2 of IBootControl
[0909/042213.474079] [INFO:boot_control_android.cc(64)] Loaded boot control hal.
[0909/042213.491876] [INFO:update_attempter_android.cc(953)] Detected a slot switch, OTA succeeded, device updated from 51154110149200520 to 51154110164300520, previous slot: 0 current slot: 1
[0909/042213.505204] [INFO:update_attempter_android.cc(200)] OTAResult::OTA_SUCCESSFUL
[0909/042213.569065] [INFO:update_attempter_android.cc(840)] Clearing update complete marker.
[0909/042213.630030] [WARNING:metrics_utils.cc(369)] time_to_reboot is negative - system_updated_at: 1/2/1970 4:40:57 GMT current time: 1/1/1970 0:00:07 GMT
[0909/042213.841919] [INFO:delta_performer.cc(1385)] Resetting recorded hash for prepared partitions.
[0909/042213.863631] [INFO:update_attempter_android.cc(1291)] Scheduling CleanupPreviousUpdateAction.
[0909/042213.884420] [INFO:action_processor.cc(51)] ActionProcessor: starting CleanupPreviousUpdateAction
[0909/042213.894372] [INFO:cleanup_previous_update_action.cc(149)] Starting/resuming CleanupPreviousUpdateAction
[0909/042213.905197] [INFO:cleanup_previous_update_action.cc(124)] CleanupPreviousUpdateAction scheduled task ID 1 for WaitBootCompleted
[0909/042215.907406] [INFO:cleanup_previous_update_action.cc(112)] Executing task 1
[0909/042215.928637] [INFO:cleanup_previous_update_action.cc(124)] CleanupPreviousUpdateAction scheduled task ID 3 for WaitBootCompleted
[0909/042217.930861] [INFO:cleanup_previous_update_action.cc(112)] Executing task 3
[0909/042217.959848] [INFO:cleanup_previous_update_action.cc(124)] CleanupPreviousUpdateAction scheduled task ID 4 for WaitBootCompleted
[0909/042219.962179] [INFO:cleanup_previous_update_action.cc(112)] Executing task 4
[0909/042219.972047] [INFO:cleanup_previous_update_action.cc(124)] CleanupPreviousUpdateAction scheduled task ID 5 for WaitBootCompleted
[0909/042221.974269] [INFO:cleanup_previous_update_action.cc(112)] Executing task 5
[0909/042221.990046] [INFO:cleanup_previous_update_action.cc(124)] CleanupPreviousUpdateAction scheduled task ID 6 for WaitBootCompleted
[0909/042223.992865] [INFO:cleanup_previous_update_action.cc(112)] Executing task 6
[0909/042224.005007] [INFO:cleanup_previous_update_action.cc(124)] CleanupPreviousUpdateAction scheduled task ID 7 for WaitBootCompleted
[0909/042226.007405] [INFO:cleanup_previous_update_action.cc(112)] Executing task 7
[0909/042226.020595] [INFO:cleanup_previous_update_action.cc(124)] CleanupPreviousUpdateAction scheduled task ID 8 for WaitBootCompleted
[0909/042228.023202] [INFO:cleanup_previous_update_action.cc(112)] Executing task 8
[0909/042228.035904] [INFO:cleanup_previous_update_action.cc(124)] CleanupPreviousUpdateAction scheduled task ID 9 for WaitBootCompleted
[0909/042230.038325] [INFO:cleanup_previous_update_action.cc(112)] Executing task 9
[0909/042230.051017] [INFO:cleanup_previous_update_action.cc(124)] CleanupPreviousUpdateAction scheduled task ID 10 for WaitBootCompleted
[0909/042232.054400] [INFO:cleanup_previous_update_action.cc(112)] Executing task 10
[0909/042232.067385] [INFO:cleanup_previous_update_action.cc(124)] CleanupPreviousUpdateAction scheduled task ID 11 for WaitBootCompleted
[0909/042234.069477] [INFO:cleanup_previous_update_action.cc(112)] Executing task 11
[0909/042234.140518] [INFO:cleanup_previous_update_action.cc(124)] CleanupPreviousUpdateAction scheduled task ID 12 for WaitBootCompleted
[0909/042236.142955] [INFO:cleanup_previous_update_action.cc(112)] Executing task 12
[0909/042236.183440] [INFO:cleanup_previous_update_action.cc(124)] CleanupPreviousUpdateAction scheduled task ID 13 for WaitBootCompleted
[0909/042238.186134] [INFO:cleanup_previous_update_action.cc(112)] Executing task 13
[0909/042238.255367] [INFO:cleanup_previous_update_action.cc(124)] CleanupPreviousUpdateAction scheduled task ID 14 for WaitBootCompleted
[0909/042240.257226] [INFO:cleanup_previous_update_action.cc(112)] Executing task 14
[0909/042245.062367] [INFO:cleanup_previous_update_action.cc(124)] CleanupPreviousUpdateAction scheduled task ID 15 for WaitBootCompleted
[0909/042247.065267] [INFO:cleanup_previous_update_action.cc(112)] Executing task 15
[0909/042247.071750] [INFO:cleanup_previous_update_action.cc(189)] Boot completed, waiting on markBootSuccessful()
[0909/042247.083759] [INFO:snapshot.cpp(3840)] EnsureMetadataMounted does nothing in Android mode.
[0909/042247.086189] [INFO:snapshot_stats.cpp(37)] Read merge statistics file failed: No such file or directory
[0909/042247.100506] [INFO:cleanup_previous_update_action.cc(261)] Waiting for any previous merge request to complete. This can take up to several minutes.
[0909/042247.106685] [INFO:snapshot.cpp(1679)] Update state is being processed while booting at target slot, taking no action.
[0909/042247.112663] [INFO:snapshot.cpp(1076)] CheckMergeState for snapshots returned: Unverified
[0909/042247.119615] [INFO:snapshot.cpp(1048)] ProcessUpdateState handling state: Unverified
[0909/042247.140985] [INFO:cleanup_previous_update_action.cc(405)] Attempting to initiate merge.
[0909/042247.150019] [INFO:BootControlClient.cpp(341)] AIDL IBootControl not available, falling back to HIDL.
[0909/042247.159750] [INFO:BootControlClient.cpp(354)] Using HIDL version 1.2 of IBootControl
[0909/042247.173348] [INFO:snapshot.cpp(947)] Successfully switched snapshot device to a merge target: product_b
[0909/042247.202559] [INFO:snapshot.cpp(947)] Successfully switched snapshot device to a merge target: system_b
[0909/042247.222563] [INFO:snapshot.cpp(947)] Successfully switched snapshot device to a merge target: odm_dlkm_b
[0909/042247.245942] [INFO:snapshot.cpp(947)] Successfully switched snapshot device to a merge target: system_ext_b
[0909/042247.287736] [INFO:snapshot.cpp(947)] Successfully switched snapshot device to a merge target: vendor_b
[0909/042247.314382] [INFO:snapshot.cpp(947)] Successfully switched snapshot device to a merge target: vendor_dlkm_b
[0909/042247.353665] [INFO:snapshot.cpp(947)] Successfully switched snapshot device to a merge target: odm_b
[0909/042247.388212] [INFO:snapshot.cpp(1141)] CheckTargetMergeState for product_b returned: Merging
[0909/042247.397131] [INFO:snapshot.cpp(1141)] CheckTargetMergeState for system_b returned: Merging
[0909/042248.437075] Waited one second for gsiservice (is service started? Number of threads started in the threadpool: 1. Are binder threads started and available?)
[0909/042248.469844] [INFO:snapshot.cpp(1141)] CheckTargetMergeState for odm_dlkm_b returned: MergeCompleted
[0909/042248.480236] [INFO:snapshot.cpp(1141)] CheckTargetMergeState for system_ext_b returned: Merging
[0909/042248.553111] [INFO:snapshot.cpp(1141)] CheckTargetMergeState for vendor_b returned: MergeCompleted
[0909/042248.606925] [INFO:snapshot.cpp(1141)] CheckTargetMergeState for vendor_dlkm_b returned: MergeCompleted
[0909/042248.659729] [INFO:snapshot.cpp(1141)] CheckTargetMergeState for odm_b returned: MergeCompleted
[0909/042248.666306] [INFO:snapshot.cpp(1076)] CheckMergeState for snapshots returned: Merging
[0909/042248.670548] [INFO:snapshot.cpp(1048)] ProcessUpdateState handling state: Merging
[0909/042248.677089] [INFO:cleanup_previous_update_action.cc(372)] Waiting for merge to complete: 24%.
[0909/042248.685413] [INFO:cleanup_previous_update_action.cc(124)] CleanupPreviousUpdateAction scheduled task ID 16 for WaitForMerge
[0909/042250.687503] [INFO:cleanup_previous_update_action.cc(112)] Executing task 16
[0909/042250.744116] [INFO:snapshot.cpp(1141)] CheckTargetMergeState for product_b returned: MergeCompleted
[0909/042250.810203] [INFO:snapshot.cpp(1141)] CheckTargetMergeState for system_b returned: MergeCompleted
[0909/042250.823303] [INFO:snapshot.cpp(1141)] CheckTargetMergeState for system_ext_b returned: Merging
[0909/042250.831718] [INFO:snapshot.cpp(1076)] CheckMergeState for snapshots returned: Merging
[0909/042250.842805] [INFO:snapshot.cpp(1048)] ProcessUpdateState handling state: Merging
[0909/042250.849691] [INFO:cleanup_previous_update_action.cc(372)] Waiting for merge to complete: 65%.
[0909/042250.862087] [INFO:cleanup_previous_update_action.cc(124)] CleanupPreviousUpdateAction scheduled task ID 17 for WaitForMerge
[0909/042252.862808] [INFO:cleanup_previous_update_action.cc(112)] Executing task 17
[0909/042252.933128] [INFO:snapshot.cpp(1141)] CheckTargetMergeState for system_ext_b returned: MergeCompleted
[0909/042252.939248] [INFO:snapshot.cpp(1076)] CheckMergeState for snapshots returned: MergeCompleted
[0909/042252.941290] [INFO:snapshot.cpp(288)] Removing all update state.
[0909/042252.946758] [INFO:snapshot.cpp(1048)] ProcessUpdateState handling state: MergeCompleted
[0909/042252.948642] [INFO:cleanup_previous_update_action.cc(330)] Merge finished with state MergeCompleted.
[0909/042252.997287] [INFO:cleanup_previous_update_action.cc(130)] Stopping/suspending/completing CleanupPreviousUpdateAction
[0909/042252.999938] [INFO:cleanup_previous_update_action.cc(509)] Reporting merge stats: MergeCompleted in 5913ms (resumed 0 times), using 0 bytes of COW image.
[0909/042253.002141] [INFO:cleanup_previous_update_action.cc(130)] Stopping/suspending/completing CleanupPreviousUpdateAction
[0909/042253.003782] [INFO:action_processor.cc(116)] ActionProcessor: finished last action CleanupPreviousUpdateAction with code ErrorCode::kSuccess
[0909/042253.005443] [INFO:update_attempter_android.cc(587)] Processing Done.
[0909/042253.009704] [INFO:update_attempter_android.cc(840)] Clearing update complete marker.
[0909/042253.011330] [INFO:update_attempter_android.cc(735)] Terminating cleanup previous update.


Сравните сами.

 

Все три портянки - краткие логи update_engine.

Для гурманов подклеиваю полный лог процесса прошивки:  update_engine.20250907-231858.txt

  • 0
  • Модераторы

Сдается мне, многих интересует вопрос: почему везде утверждают, что при ручной прошивке шлем окирпичивается чаще?

Отвечу так: это заблуждение. Все подобные аргументы в стиле "мой знакомый поел огурцов и умер. Огурцы смертельны". 

 

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

Дело в том, что русскоязычный сегмент пользователей шлемов чаще обновляет шлем вручную, просто потому, что серверы Меты заблокированы в РФ и это затрудняет обновление прошивки по воздуху. Если взглянуть на западный сегмент пользователей, то там ситуация с точностью до наоборот, достаточно зайти на Реддит или форум Мета - создается впечатление, что шлемы окирпичиваются только при прошивке по воздуху.

 

Нет никакких статистических данных о том, что ручная прошивка более опасна, чем воздушная. Я читал Реддит, форум Мета, 4пда и другие форумы - там полно сообщений об окирпичивании при обновлении по OTA, и их намного больше, чем при ручной прошивке.

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйте новый аккаунт в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
×
×
  • Создать...

Важная информация

Правила пользования сайтом Условия использования