OSDN Git Service

Build recovery-two-step.img for two-step OTAs.
authorTao Bao <tbao@google.com>
Wed, 30 Nov 2016 20:11:57 +0000 (12:11 -0800)
committerTao Bao <tbao@google.com>
Fri, 2 Dec 2016 01:55:44 +0000 (17:55 -0800)
commit47ec5ab561bd979560bde402201268486ce9cc34
treec418aca6e6dfb7d48c21ac8023ed3ccc20b9b99a
parent7981d953a97a197525e919ce68b1ef59cf14d2dd
Build recovery-two-step.img for two-step OTAs.

In two-step OTAs, we write recovery image to /boot as the first step so
that we can reboot from there and install a new recovery image to
/recovery. However, bootloader will show "Your device is corrupt"
message when booting /boot with the recovery image. Because the recovery
image encodes the path of "/recovery" as part of the signature metadata,
which fails the verified boot.

This CL generates a special "recovery-two-step.img" in addition to the
regular recovery.img. This image encodes "/boot" when being signed,
which will be flashed to /boot at stage 1/3 in a two-step OTA.

Here are the desired changes:

- 'IMAGES/recovery-two-step.img' exists in target_files.zip for non-A/B
targets (e.g. bullhead). The image should not exist for targets that
don't have a recovery partition (e.g. A/B devices like sailfish).

- <device>-img.zip should not contain 'recovery-two-step.img'.

- Nothing should change when building non-two-step OTAs. For two-step
OTAs, 'recovery-two-step.img' should be included in the OTA package;
'updater-script' should flash this image to /boot at stage 1/3.

- When building a two-step OTA with an input TF.zip that doesn't have
  IMAGES/recovery-two-step.img, it should use the existing
  IMAGES/recovery.img instead.

Bug: 32986477
Test: Tested the steps above on bullhead and sailfish.
Change-Id: I34e6c599bcf2011d4cd5c926999418b3975d6d0f
(cherry picked from commit d42e97ebb45fdc5a30799a3f37e482948d318010)
tools/releasetools/add_img_to_target_files.py
tools/releasetools/common.py
tools/releasetools/img_from_target_files.py
tools/releasetools/ota_from_target_files.py