Commit graph

602 commits

Author SHA1 Message Date
Doug Zongker
239ac6abac recovery: install packages in a known mount environment
When installing a package, we should have /tmp and /cache mounted and
nothing else.  Ensure this is true by explicitly mounting them and
unmounting everything else as the first step of every install.

Also fix an error in the progress bar that crops up when you do
multiple package installs in one instance of recovery.

Change-Id: I4837ed707cb419ddd3d9f6188b6355ba1bcfe2b2
2013-08-21 13:44:35 -07:00
Doug Zongker
c0441d1719 notify about pending long press
Recovery changes:

- add a method to the UI class that is called when a key is held down
  long enough to be a "long press" (but before it is released).
  Device-specific subclasses can override this to indicate a long
  press.

- do color selection for ScreenRecoveryUI's menu-and-log drawing
  function.  Subclasses can override this to customize the colors they
  use for various elements.

- Include the value of ro.build.display.id in the menu headers, so you
  can see on the screen what version of recovery you are running.

Change-Id: I426a6daf892b9011638e2035aebfa2831d4f596d
2013-07-31 11:35:12 -07:00
Todd Poynor
3c3ee3bc33 Merge "start healthd in recovery" 2013-07-26 23:57:41 +00:00
Nick Kralevich
627eb30f73 Update OTA installer to understand SELinux filesystem labels
Modify the OTA installer to understand SELinux filesystem labels.

We do this by introducing new set_perm2 / set_perm2_recursive
calls, which understand SELinux filesystem labels. These filesystem
labels are applied at the same time that we apply the
UID / GID / permission changes.

For compatibility, we preserve the behavior of the existing
set_perm / set_perm_recursive calls.

If the destination kernel doesn't support security labels, don't
fail. SELinux isn't enabled on all kernels.

Bug: 8985290
Change-Id: I99800499f01784199e4918a82e3e2db1089cf25b
2013-07-18 15:21:12 -07:00
Doug Zongker
51c84694b0 am a69b50c5: am 901b898d: recovery: remove O_DIRECT, use O_SYNC only
* commit 'a69b50c567d46afad73c4d6ab9e57f078ee73327':
  recovery: remove O_DIRECT, use O_SYNC only
2013-07-11 14:23:44 -07:00
Doug Zongker
bce44d8b55 am 660637f3: am e8d953aa: recovery: more cargo-cult programming
* commit '660637f3fc6fe20e8b7f47b98152138c2c92b7ec':
  recovery: more cargo-cult programming
2013-07-11 14:23:36 -07:00
Doug Zongker
a69b50c567 am 901b898d: recovery: remove O_DIRECT, use O_SYNC only
* commit '901b898d5e4d7cc555974b8132f83f948f8fbaee':
  recovery: remove O_DIRECT, use O_SYNC only
2013-07-11 12:42:54 -07:00
Doug Zongker
901b898d5e recovery: remove O_DIRECT, use O_SYNC only
O_DIRECT writes fail with EINVAL due to alignment issues.

Change-Id: If8cf38a636313e4f4b4e61e66287dc903c473e5b
2013-07-11 12:31:25 -07:00
Doug Zongker
660637f3fc am e8d953aa: recovery: more cargo-cult programming
* commit 'e8d953aa7ed0c16beb1b03a05d16cb23dd85e198':
  recovery: more cargo-cult programming
2013-07-11 12:22:22 -07:00
Doug Zongker
e8d953aa7e recovery: more cargo-cult programming
Add O_DIRECT|O_SYNC when opening partitions for write.

Change-Id: I9825ad8e60fba87e482f8abc5593d6f54a1e3a1c
2013-07-11 12:11:11 -07:00
The Android Open Source Project
1bdd5b7e74 am 51ffaf54: (-s ours) Reconcile with jb-mr2-release - do not merge
* commit '51ffaf54a56441bba053d37a00122761c3a18f16':
  recovery: sleep after writing partition and closing it
2013-07-11 11:49:43 -07:00
Doug Zongker
65c37aa0d3 am fbcfad33: am bf4a69ac: recovery: sleep after writing partition and closing it
* commit 'fbcfad33face5d3b9e6b8cb04379168bceb517df':
  recovery: sleep after writing partition and closing it
2013-07-11 10:17:48 -07:00
The Android Open Source Project
f5edbd107a am e352c88f: (-s ours) Reconcile with jb-mr2-release - do not merge
* commit 'e352c88fbcfd917f6614597364d2e550aa691e79':
  recovery: write partitions more conservatively
  recovery: try to write EMMC partitions more reliably
2013-07-11 10:17:05 -07:00
Doug Zongker
5d0da12878 am 2148133d: am c870a99c: recovery: write partitions more conservatively
* commit '2148133d46cb875316b01947dd5719ed995f7d67':
  recovery: write partitions more conservatively
2013-07-11 10:08:23 -07:00
The Android Open Source Project
51ffaf54a5 Reconcile with jb-mr2-release - do not merge
Change-Id: Id35004f465f5152c1de0796eb66989f234185208
2013-07-11 08:22:20 -07:00
Doug Zongker
166565f9fb recovery: sleep after writing partition and closing it
Another speculative attempt to get everything we write actually stored
to the device.

Change-Id: Icf40b0741b4c535e55ea34848073a97d90dc0e70
2013-07-10 18:25:21 -07:00
Doug Zongker
fbcfad33fa am bf4a69ac: recovery: sleep after writing partition and closing it
* commit 'bf4a69ac41696fe78f6cc67b10cf1816186f1c5d':
  recovery: sleep after writing partition and closing it
2013-07-10 13:53:15 -07:00
Doug Zongker
bf4a69ac41 recovery: sleep after writing partition and closing it
Another speculative attempt to get everything we write actually stored
to the device.

Change-Id: Icf40b0741b4c535e55ea34848073a97d90dc0e70
2013-07-10 13:46:46 -07:00
The Android Open Source Project
e352c88fbc Reconcile with jb-mr2-release - do not merge
Change-Id: Ib99b7cd6aede63006c91be2635112e16dd0f2b24
2013-07-09 17:12:56 -07:00
Doug Zongker
c6ab95e9d1 recovery: write partitions more conservatively
Write and verify partitions using write(2) and read(2) rather than the
stdio functions.  Read and write in 4kb blocks.  When writing, fsync()
every 1MB.

Bug: 9602014
Change-Id: Ie98ce38e857786fc0f4ebf36bb5ffc93b41bc96f
2013-07-09 16:31:07 -07:00
Doug Zongker
35c474e8c0 recovery: try to write EMMC partitions more reliably
Nexus 4 has flash errors that manifest during large writes (eg, of the
radio partition).  Writes of some blocks seem to be dropped silently,
without any errors being returned to the user level.

Make two changes to the partition-writing code:

- break it up into 1MB writes instead of writing partitions with a
  single fwrite() call.  Pause for 50ms in between every chunk.

- read the partition back after writing and verify that we read what
  we wrote.  Drop caches before reading so we (hopefully) are reading
  off the actual flash and not some cache.

Neither of these should be necessary.

Bug: 9602014

Change-Id: Ice2e24dd4c11f1a57968277b5eb1468c772f6f63
2013-07-09 16:30:22 -07:00
Doug Zongker
a4ee1f8b76 Merge "recovery: preserve recovery logs across cache wipes" 2013-07-09 21:16:53 +00:00
Doug Zongker
6d0d7ac051 recovery: preserve recovery logs across cache wipes
When doing a cache wipe or a factory reset (which includes a cache
wipe), save any last* log files in the /cache/recovery directory and
write them back after reformatting the partition, so that wiping data
doesn't lose useful log information.

Change-Id: I1f52ae9131760b5e752e136645c19f71b7b166ee
2013-07-09 13:34:55 -07:00
Doug Zongker
fafc85b4ad recovery: move log output to stdout
Recovery currently has a random mix of messages printed to stdout and
messages printed to stderr, which can make logs hard to read.  Move
everything to stdout.

Change-Id: Ie33bd4a9e1272e731302569cdec918e0534c48a6
2013-07-09 12:50:24 -07:00
Doug Zongker
2148133d46 am c870a99c: recovery: write partitions more conservatively
* commit 'c870a99c4aeb9e232ee68951e666b5fa670d1680':
  recovery: write partitions more conservatively
2013-07-09 11:02:07 -07:00
Doug Zongker
c870a99c4a recovery: write partitions more conservatively
Write and verify partitions using write(2) and read(2) rather than the
stdio functions.  Read and write in 4kb blocks.  When writing, fsync()
every 1MB.

Bug: 9602014
Change-Id: Ie98ce38e857786fc0f4ebf36bb5ffc93b41bc96f
2013-07-09 10:42:15 -07:00
Doug Zongker
602c4ebd39 am 0ccaccf7: am 044a0b4d: recovery: try to write EMMC partitions more reliably
* commit '0ccaccf7d0f50bb9555ee13a841c246a1fea80f2':
  recovery: try to write EMMC partitions more reliably
2013-07-08 14:14:24 -07:00
yetta_wu
573e830b27 am 4d4b233e: am 2f6877a0: recovery: init backgroundIcon properly to avoid recovery mode crash
* commit '4d4b233eae51d5580b58cb00d3aa45ecbb1b255e':
  recovery: init backgroundIcon properly to avoid recovery mode crash
2013-07-08 14:14:24 -07:00
Doug Zongker
0ccaccf7d0 am 044a0b4d: recovery: try to write EMMC partitions more reliably
* commit '044a0b4d49a11edfa13471ce20914b0514eb7e0e':
  recovery: try to write EMMC partitions more reliably
2013-07-08 14:09:59 -07:00
Doug Zongker
044a0b4d49 recovery: try to write EMMC partitions more reliably
Nexus 4 has flash errors that manifest during large writes (eg, of the
radio partition).  Writes of some blocks seem to be dropped silently,
without any errors being returned to the user level.

Make two changes to the partition-writing code:

- break it up into 1MB writes instead of writing partitions with a
  single fwrite() call.  Pause for 50ms in between every chunk.

- read the partition back after writing and verify that we read what
  we wrote.  Drop caches before reading so we (hopefully) are reading
  off the actual flash and not some cache.

Neither of these should be necessary.

Bug: 9602014

Change-Id: Ice2e24dd4c11f1a57968277b5eb1468c772f6f63
2013-07-08 12:59:22 -07:00
yetta_wu
5b468fc930 recovery: init backgroundIcon properly to avoid recovery mode crash
We met factory issue that some devices would crash in recovery mode
because the backgroundIcon array did not reset to NULL when initializing.

Bug: 9568624
Change-Id: I13c7a7cc1053a7ffdbadd71740c1a2b4a2af6bba
Signed-off-by: yetta_wu <yetta_wu@asus.com>
Signed-off-by: Iliyan Malchev <malchev@google.com>
2013-07-02 12:35:58 -07:00
Doug Zongker
f24fd7e847 recovery: copy logs to cache more aggressively
Copy logs to /cache immediately upon a package installation failure;
don't wait for recovery to finish.  (If the user reboots without
exiting recovery the "right" way, the logs never get copied at all.)

Change-Id: Iee342944e7ded63da5a4af33d11ebc876f6c0835
2013-07-02 11:43:25 -07:00
yetta_wu
4d4b233eae am 2f6877a0: recovery: init backgroundIcon properly to avoid recovery mode crash
* commit '2f6877a0220475303907203308c018d789ea1a53':
  recovery: init backgroundIcon properly to avoid recovery mode crash
2013-06-25 12:56:12 -07:00
yetta_wu
2f6877a022 recovery: init backgroundIcon properly to avoid recovery mode crash
We met factory issue that some devices would crash in recovery mode
because the backgroundIcon array did not reset to NULL when initializing.

Bug: 9568624
Change-Id: I13c7a7cc1053a7ffdbadd71740c1a2b4a2af6bba
Signed-off-by: yetta_wu <yetta_wu@asus.com>
Signed-off-by: Iliyan Malchev <malchev@google.com>
2013-06-25 12:50:20 -07:00
Todd Poynor
2f2c98869b start healthd in recovery
Change-Id: I16e3e0ddb8ca062431deb4be83c5be5eb786d76f
2013-06-18 17:51:13 -07:00
Doug Zongker
7839f64baf am 8cd12112: am d51bfc9b: Merge "Fix the potential segmentation fault"
* commit '8cd12112e444e01163526fe6ab237f6164b0018b':
  Fix the potential segmentation fault
2013-06-04 12:17:42 -07:00
Doug Zongker
8cd12112e4 am d51bfc9b: Merge "Fix the potential segmentation fault"
* commit 'd51bfc9b1fe89321af3c629e7b23a747050332e1':
  Fix the potential segmentation fault
2013-06-04 12:10:28 -07:00
Doug Zongker
d51bfc9b1f Merge "Fix the potential segmentation fault" 2013-06-04 19:05:59 +00:00
Jin Feng
93ffa7579c Fix the potential segmentation fault
Extral newline can trigger recovery segmentation fault
Test case:
host$ adb shell 'echo -en "--update_package=ota_update.zip\n--show_text\n\n" > /cache/recovery/command'
host$ adb reboot recovery

Change-Id: If1781c1f5ad94a273f1cb122b67cedd9fb562433
Signed-off-by: Jin Feng <jin88.feng@gmail.com>
2013-06-04 17:46:24 +08:00
Doug Zongker
22bdc370b0 am da1ebaef: recovery: save logs from the last few invocations of recovery
* commit 'da1ebaef0aa8e38db6edf8bfc3d96290461a424f':
  recovery: save logs from the last few invocations of recovery
2013-05-21 11:31:09 -07:00
Doug Zongker
4e021c56f3 am 7c3ae45e: recovery: turn on text display for install errors in debug builds
* commit '7c3ae45ef9306d2ff4b491e0488c8849bf15ce90':
  recovery: turn on text display for install errors in debug builds
2013-05-21 11:31:09 -07:00
Doug Zongker
da1ebaef0a recovery: save logs from the last few invocations of recovery
Extends the last_log mechanism to save logs from the last six
invocations of recovery, so that we're more likely to have useful logs
even if the device has repeatedly booted into recovery.

Change-Id: I08ae7a09553ada45f9e0733fe1e55e5a22efd9f9
2013-05-21 11:19:15 -07:00
Doug Zongker
7c3ae45ef9 recovery: turn on text display for install errors in debug builds
Hopefully this will reduce the number of OTA "bugs" reported that are
really just someone having changed their system partition,
invalidating future incremental OTAs.

Also fixes a longstanding TODO about putting LOGE() output in the
on-screen display.

Change-Id: I44e5be65b2dee7ebce2cce28ccd920dc3d6e522e
2013-05-21 11:18:38 -07:00
Doug Zongker
46bee63afc recovery: save logs from the last few invocations of recovery
Extends the last_log mechanism to save logs from the last six
invocations of recovery, so that we're more likely to have useful logs
even if the device has repeatedly booted into recovery.

Change-Id: I08ae7a09553ada45f9e0733fe1e55e5a22efd9f9
2013-05-16 11:25:28 -07:00
Doug Zongker
596b342a04 recovery: turn on text display for install errors in debug builds
Hopefully this will reduce the number of OTA "bugs" reported that are
really just someone having changed their system partition,
invalidating future incremental OTAs.

Also fixes a longstanding TODO about putting LOGE() output in the
on-screen display.

Change-Id: I44e5be65b2dee7ebce2cce28ccd920dc3d6e522e
2013-05-16 10:47:02 -07:00
Doug Zongker
c7a6858dc9 Merge "verifier: update to support certificates using SHA-256" 2013-04-11 22:02:46 +00:00
Doug Zongker
bac7fba027 verifier: update to support certificates using SHA-256
Change-Id: Ifd5a29d459acf101311fa1c220f728c3d0ac2e4e
2013-04-10 11:32:17 -07:00
Ying Wang
e5d37b409f am 4e21482d: Add liblog
* commit '4e21482d979f6f81b34f92e664adf137555d4504':
  Add liblog
2013-04-09 22:21:14 -07:00
Ying Wang
4e21482d97 Add liblog
Bug: 8580410
Change-Id: Ie60dade81c06589cb0daee431611ded34adef8e6
2013-04-09 21:41:29 -07:00
Jean-Baptiste Queru
84a6c0d298 am b5bd4fb7: (-s ours) am 2f50df00: am c09444eb: am f91bd41c: am 1c302caf: (-s ours) am c14a7fbd: (-s ours) Reconcile with jb-mr1-release - do not merge
* commit 'b5bd4fb79544b1939e9f977a88a707bdc90cf66c':
2013-03-11 20:05:35 +00:00