Commit Graph

2210 Commits

Author SHA1 Message Date
Tianjie Xu
e16e799dfd save uncrypt status to last_install
Save the uncrypt time cost to /cache/recovery/uncrypt_status. Recovery
reads the file and saves its contents to last_install.

Bug: 31383361
Test: Tested on angler and uncrypt_time reports correctly.

(cherry picked from commit fe16b5ccaf)

Change-Id: Id69681a35c7eb2f0eb21b48e3616dcda82ce41b8
2016-09-12 16:59:48 -07:00
Tianjie Xu
62ab2a0fbc "view recovery logs" will show /tmp/recovery.log
For A/B devices, "view recovery logs" doesn't work due to the lack
of cache partition. To help debugging, we'll show /tmp/recovery.log
instead if /cache is not found.

Change-Id: Idb77c3a4c30388148a210b38d732a7b27e757bba
Test: Tested on an A/B device and /tmp/recovery.log showed up.
Bug: 30905700
(cherry picked from commit a54f75ede8)
2016-08-17 15:07:50 -07:00
Alex Deymo
53c107f068 Add inttypes.h for PRIu64.
This missing header is needed to use PRIu64 macros.

Bug: 27178350
TEST=`mma bootable/recovery` on the failing branch.

Change-Id: I165701e8019256426d3f6a4168db52c6a0197c4d
2016-08-12 13:46:17 -07:00
Alex Deymo
4344d636d4 Call update_engine_sideload from recovery.
This patch enables sideloading an OTA on A/B devices while running from
recovery. Recovery accepts the same OTA package format as recent
versions of GMS, which consists of .zip file with the payload in it.

Bug: 27178350
TEST=`adb sideload` successfully a full OTA (*)
TEST=Failed to take several invalid payloads (wrong product,
fingerprint, update type, serial, etc).

<small>(*) with no postinstall script.</small>

Change-Id: I951869340100feb5a37e41fac0ee59c10095659e
2016-08-11 18:55:11 -07:00
Bill Yi
e49c0d6406 Import translations. DO NOT MERGE
Change-Id: If24c94c20f8e4c37c119dcaff765e9ee59e48ef4
Auto-generated-cl: translation import
2016-07-20 19:24:24 -07:00
Tianjie Xu
da654af606 Skip update verification if care_map is not found
Recently flashed devices may not have care_map.txt in /data/ota_package.
This leads to a failure of update-verifier and prevents boot
success flag from being set. So, we need to skip verification
in case the file is not found.

Error message:
... I update_verifier: Started with arg 1: nonencrypted
... I update_verifier: Booting slot 1: isSlotMarkedSuccessful=0
... E update_verifier: Care map /data/ota_package/care_map.txt not found.
... E update_verifier: Failed to verify all blocks in care map file

Bug: 30156449
Change-Id: Ia15f5f3e7ca2ea6981d49678e799b9f70d134faa
2016-07-15 16:30:12 -07:00
Tianjie Xu
4bbe0c93c8 Fix a typo when comparing the verity mode
The veritymode string used by the bootloader should be lowercase 'eio'
instead of 'EIO'. Fix the typo and change to strcasecmp.

Bug: 27175949
Change-Id: I376dacc70eef7364e2b9931a7c940adedcdb1929
2016-07-14 23:57:43 +00:00
Tianjie Xu
13f44939b1 Merge "Touch blocks in care_map in update_verifier" into nyc-mr1-dev 2016-07-14 22:27:09 +00:00
Tianjie Xu
03ca853a1c Touch blocks in care_map in update_verifier
Read all blocks in system and vendor partition during boot time
so that dm-verity could verify this partition is properly flashed.

Bug: 27175949
Change-Id: I38ff7b18ee4f2733e639b89633d36f5ed551c989
2016-07-14 14:31:39 -07:00
Tianjie Xu
27b9fc8a36 Skip update-on-boot for bootreason in blacklist
Skip the OTA installation when bootreason is 'kernel_panic',
'Panic' etc.

Change-Id: Ic1202492bffefa1a9d8d0e691b5af979285e552c
Test: On angler, ota installation skips for one bootreason in the blacklist.
Bug: 29978689
2016-07-11 18:37:34 -07:00
Elliott Hughes
6d089a955f Support landscape layouts.
Add support for landscape layouts to the existing portrait support.

Bug: http://b/29418855
Test: tested manually with "Run graphics test" on flounder/fugu/ryu.
Change-Id: Ib4a62bf5f2b8a1cef6028a01f05145104660560a
2016-07-08 18:21:45 -07:00
Yabin Cui
9da04d595f Fix bootloader_message.
Bug: 29945717
Change-Id: I934fd6c52b0111937fa75455de2fa4157fb30f6f
2016-07-06 11:47:23 -07:00
Tao Bao
ccb0ba908a updater: Fix the broken ReadFileFn.
Was accidentally broken by the CL in [1].

[1]: commit d6c93afcc2

Bug: 29767315
Change-Id: I851e13ccea6f5be6fcd47f712cc95867245f9934
(cherry picked from commit efacd80364)
2016-06-30 17:04:12 -07:00
Yabin Cui
2f272c0551 Create bootloader_message static library.
bootloader_messages merges bootloader_message_writer
and bootloader.cpp, so we can use the same library to
manage bootloader_message in normal boot and recovery mode.

Bug: 29582118

Change-Id: I9efdf776ef8f02b53911ff43a518e035e0c29618
2016-06-30 11:02:38 -07:00
Tianjie Xu
6074099cb9 Increase EIO retry count
am: c37c5c3410

Change-Id: I163541137bf8c421276383855d36ab127d2ddf95
2016-06-24 00:26:51 +00:00
Tianjie Xu
c37c5c3410 Increase EIO retry count
Increase the number of attempts of an OTA update from 3 to 5 in case
an I/O error happened. This should increase the success rate of the
update.

Bug: 29619468
Change-Id: I88a067d9debd55a07be22ed981f395f6e47ec28f
2016-06-23 17:15:25 -07:00
Yabin Cui
ed4c49c199 Merge "Verify wipe package when wiping A/B device in recovery." into nyc-mr1-dev 2016-06-21 17:10:49 +00:00
Yabin Cui
6faf0265c9 Verify wipe package when wiping A/B device in recovery.
To increase the security of wiping A/B devices, let uncrypt write
wipe package in misc partition. Then recovery verifies the wipe
package before wiping the device.

Bug: 29159185

Change-Id: I186691bab1928d3dc036bc5542abd64a81bc2168
2016-06-20 18:18:02 -07:00
Tianjie Xu
d0dcbddd31 Check the results from applypatch
am: 31f8cc84cf

Change-Id: Ie50652158b65d723346ffff18c85cbaab11820e1
2016-06-16 18:09:19 +00:00
Tianjie Xu
31f8cc84cf Check the results from applypatch
Check the results from applypatch in PerformCommandDiff; and abort the
update on failure.

Bug:29339536
Change-Id: I5087d79ba532b54250f4c17560524255c8a4fabc
2016-06-15 23:26:59 +00:00
Tao Bao
2a4386fa7b applypatch: Don\'t call inflate() when it expects zero-length output.
am: 490fad6791

Change-Id: Id4df6fd73edf70ce88d3df4a5ebaeb665f38eef3
2016-06-14 01:29:09 +00:00
Tao Bao
490fad6791 applypatch: Don't call inflate() when it expects zero-length output.
We may have expanded_len == 0 when calling inflate(). After switching to
using std::vector, it passes a nullptr buffer to inflate() and leads to
Z_STREAM_ERROR.

Bug: 29312140
Change-Id: Iab7c6c07a9e8488e844e7cdda76d02bd60d2ea98
2016-06-13 16:42:52 -07:00
Tao Bao
dc1393d09b Merge "recovery: Track the name change for wipe_ab." into nyc-mr1-dev 2016-06-13 16:43:46 +00:00
Tianjie Xu
dcf1089771 Log source/target build version to last_install
am: b0ddae55e5

Change-Id: I8be36165769d4159e4578f9fea54f332e4e77c6c
2016-06-10 17:21:40 +00:00
Tao Bao
108ab21b21 recovery: Track the name change for wipe_ab.
Bug: 27253717
Change-Id: I6e63b2a80b7b2948c16e1b57dedc856d52456ac9
2016-06-10 10:13:32 -07:00
Tianjie Xu
b0ddae55e5 Log source/target build version to last_install
Parse the build.version.incremental from the metadata of the update
package; and log it to last_install.
Example:
In metadata we read:
post-build-incremental=2951741
pre-build-incremental=2943039

In last install we log:
source_build: 2943039
target_build: 2951741

Bug: 28658632
Change-Id: I0a9cc2d01644846e18bda31f4193ff40e8924486
2016-06-09 17:29:04 -07:00
Alain Vongsouvanh
91d78acbd3 resolve merge conflicts of 6aa6ddb to nyc-dev
am: 771b6eb8d9

Change-Id: Icc7290bbdf7b7420bab34b56f4e368f93b007053
2016-06-08 15:46:40 +00:00
Alain Vongsouvanh
771b6eb8d9 resolve merge conflicts of 6aa6ddb to nyc-dev
Change-Id: I3696fe3e86e0222c7c26b0aa2bf1dd8e03ac5315
2016-06-08 08:30:48 -07:00
Alain Vongsouvanh
6aa6ddb3c5 recovery: Make wear recovery more customizable.
am: 5b00110e3d

Change-Id: I88ab75e875cea8813ab4bdc9f099c31609ace6fd
2016-06-08 15:10:54 +00:00
Alain Vongsouvanh
5b00110e3d recovery: Make wear recovery more customizable.
Making animation_fps protected and adding support for 0 frames intro.

BUG: 29085786
Change-Id: I07b44570022bad89661973178d453592c01f3f10
2016-06-07 10:05:29 -07:00
Tao Bao
1afa4d7b23 Merge "recovery: Add support to brick a device." into nyc-mr1-dev 2016-06-04 04:19:05 +00:00
Tianjie Xu
57ad046d9d Call ioctl before each write on retry
am: 7ce287d432

* commit '7ce287d432dd3a4dc8841fc59e11ee1a0b7808a1':
  Call ioctl before each write on retry

Change-Id: Iae05ceca190c253d0be3ae9e4054abf4d0dbe751
2016-06-03 22:38:11 +00:00
Tao Bao
b083818612 recovery: Add support to brick a device.
When recovery starts with --brick, it tries to brick the device by
securely wiping all the partitions as listed in /etc/recovery.brick.

This is designed to support bricking lost devices.

Bug: 27253717
Change-Id: Ib0bd4f0a3bdaca4febc91fce6b682e3ec74354e2
(cherry picked from commit 862a4c1119)
2016-06-03 14:43:05 -07:00
Tianjie Xu
7ce287d432 Call ioctl before each write on retry
If the update is a retry, ioctl(BLKDISCARD) the destination blocks before
writing to these blocks.

Bug: 28990135
Change-Id: I1e703808e68ebb1292cd66afd76be8fd6946ee59
2016-06-03 12:12:50 -07:00
Elliott Hughes
01fcbe160b Disable the meaningless parts of the UI for A/B.
Bug: http://b/28748484
Change-Id: Ie86a265f4699503471e7c717d65677a916dbd25b
2016-05-24 00:44:50 +00:00
Tianjie Xu
3aabd770d9 Merge "Allow recovery to return error codes" into nyc-dev
am: 50f6417317

* commit '50f6417317f9e327ed76abaf34512370f8376245':
  Allow recovery to return error codes

Change-Id: I4613291b3b4a0c34d5e6999f240465237472302e
2016-05-23 18:15:40 +00:00
Tianjie Xu
50f6417317 Merge "Allow recovery to return error codes" into nyc-dev 2016-05-23 18:03:41 +00:00
Tianjie Xu
162558382b Allow recovery to return error codes
Write error code, cause code, and retry count into last_install. So we
can have more information about the reason of a failed OTA.

Example of new last_install:
@/cache/recovery/block.map     package name
0                              install result
retry: 1                       retry count (new)
error: 30                      error code (new)
cause: 12                      error cause (new)

Details in:
go/android-ota-errorcode

Bug: 28471955
Change-Id: I00e7153c821e7355c1be81a86c7f228108f3dc37
2016-05-20 13:56:53 -07:00
Matt Sarett
bd43d7e92b resolve merge conflicts of 86a28d0 to klp-modular-dev am: a5bc59620f am: 36acff7d7e am: 1f814d7630 am: ca45737e27 am: 8a1d4e97ad am: aa02888e55 am: 300af0779d am: fc1d9a49d1 am: b02b2fe392
am: 75dea9ca3a

* commit '75dea9ca3aabe23bed2d9f15b70dbdd5efb18cd1':
  DO NOT MERGE Use updated libpng API

Change-Id: I75e0414350115ec133d9905263c01c3b385512b3
2016-05-19 23:28:20 +00:00
Matt Sarett
75dea9ca3a resolve merge conflicts of 86a28d0 to klp-modular-dev am: a5bc59620f am: 36acff7d7e am: 1f814d7630 am: ca45737e27 am: 8a1d4e97ad am: aa02888e55 am: 300af0779d am: fc1d9a49d1
am: b02b2fe392

* commit 'b02b2fe392827a423c7783522edc5b9ad3d4f130':
  DO NOT MERGE Use updated libpng API

Change-Id: Ie6e8c5118687f0d34fc4acffdcb1d784e71e411f
2016-05-19 23:25:43 +00:00
Matt Sarett
b02b2fe392 resolve merge conflicts of 86a28d0 to klp-modular-dev am: a5bc59620f am: 36acff7d7e am: 1f814d7630 am: ca45737e27 am: 8a1d4e97ad am: aa02888e55 am: 300af0779d
am: fc1d9a49d1

* commit 'fc1d9a49d1e33c133c96cf6b04d6f47d3cfaa496':
  DO NOT MERGE Use updated libpng API

Change-Id: Id9da4d3980f394bf19032581629d0baf9c30e0fc
2016-05-19 23:22:55 +00:00
Matt Sarett
fc1d9a49d1 resolve merge conflicts of 86a28d0 to klp-modular-dev am: a5bc59620f am: 36acff7d7e am: 1f814d7630 am: ca45737e27 am: 8a1d4e97ad am: aa02888e55
am: 300af0779d

* commit '300af0779de3c2658f32e3de40adc41dae92df1e':
  DO NOT MERGE Use updated libpng API

Change-Id: Iac60caa51e747fcde2c08ddf06323e8b1e98f36a
2016-05-19 23:20:22 +00:00
Matt Sarett
300af0779d resolve merge conflicts of 86a28d0 to klp-modular-dev am: a5bc59620f am: 36acff7d7e am: 1f814d7630 am: ca45737e27 am: 8a1d4e97ad
am: aa02888e55

* commit 'aa02888e55147ec78fa5636a87e2447bda136d68':
  DO NOT MERGE Use updated libpng API

Change-Id: I10705dd579623e4b208093cfc4839aad496081c8
2016-05-19 23:17:52 +00:00
Matt Sarett
aa02888e55 resolve merge conflicts of 86a28d0 to klp-modular-dev am: a5bc59620f am: 36acff7d7e am: 1f814d7630 am: ca45737e27
am: 8a1d4e97ad

* commit '8a1d4e97ad3b748a06db618f9d7ccf5114ea16d0':
  DO NOT MERGE Use updated libpng API

Change-Id: I09e8917976c05beec8bf881140539948c323ce58
2016-05-19 23:14:39 +00:00
Matt Sarett
8a1d4e97ad resolve merge conflicts of 86a28d0 to klp-modular-dev am: a5bc59620f am: 36acff7d7e am: 1f814d7630
am: ca45737e27

* commit 'ca45737e272aeefd657451a6faaa088d1903378c':
  DO NOT MERGE Use updated libpng API

Change-Id: Ia9c36583c9d60d01fec7ee9aefc973dabb1c07d3
2016-05-19 23:12:10 +00:00
Matt Sarett
ca45737e27 resolve merge conflicts of 86a28d0 to klp-modular-dev am: a5bc59620f am: 36acff7d7e
am: 1f814d7630

* commit '1f814d7630c56cc9e825ed411e068414c97acb6c':
  DO NOT MERGE Use updated libpng API

Change-Id: Ib381e8ccefe9181911a2144d7255ecadefb42b5c
2016-05-19 23:08:54 +00:00
Matt Sarett
1f814d7630 resolve merge conflicts of 86a28d0 to klp-modular-dev am: a5bc59620f
am: 36acff7d7e

* commit '36acff7d7e88549bbeab6a08488ab48596d7fbc5':
  DO NOT MERGE Use updated libpng API

Change-Id: I7f01d932235ef69640ed4859d0e62344b3b774de
2016-05-19 23:06:06 +00:00
Matt Sarett
36acff7d7e resolve merge conflicts of 86a28d0 to klp-modular-dev
am: a5bc59620f

* commit 'a5bc59620fd43c99621eb98ac84cbeea867d0c93':
  DO NOT MERGE Use updated libpng API

Change-Id: I3d8d27b08fd1fd89c6b8d9c39b883a45aecb83ce
2016-05-19 23:03:35 +00:00
Matt Sarett
a5bc59620f resolve merge conflicts of 86a28d0 to klp-modular-dev
Change-Id: Ic0b085e008155da3718dab8fd5a36be6d4059aee
2016-05-19 15:47:25 -04:00
Matt Sarett
86a28d0aaf DO NOT MERGE Use updated libpng API
am: 839b4e592a

* commit '839b4e592a7c81bdebe08fae4eef6e909c89acd6':
  DO NOT MERGE Use updated libpng API

Change-Id: I7bbece70a4129554d953fd22c71527b2ca11262e
2016-05-19 19:26:12 +00:00