Boot control HAL based on the A/B headers.

The added bootctrl.bcb module implement the legacy interface for the
bootctrl HAL based on the Boot Control Block (BCB) and the headers
already specified in the booloader_message library.

This serves as a reference implementation of the boot_control HAL.

Bug: 32707546
Test: Tested internally that a device can use this HAL to flip slots and
recovery from a /misc wipe.

Change-Id: Ic02e5aaf4de7d0a1780eac4e8705dae20d0b3e10
5 files changed
tree: fefc73cfbdd105a6330396cc526b7a0ab1902df7
  1. applypatch/
  2. boot_control/
  3. bootloader_message/
  4. edify/
  5. etc/
  6. fonts/
  7. minadbd/
  8. minui/
  9. otafault/
  10. otautil/
  11. res-hdpi/
  12. res-mdpi/
  13. res-xhdpi/
  14. res-xxhdpi/
  15. res-xxxhdpi/
  16. tests/
  17. tools/
  18. uncrypt/
  19. update_verifier/
  20. updater/
  21. .clang-format
  22. adb_install.cpp
  23. adb_install.h
  25. asn1_decoder.cpp
  26. asn1_decoder.h
  27. bootloader.h
  29. common.h
  30. default_device.cpp
  31. device.cpp
  32. device.h
  33. error_code.h
  34. fuse_sdcard_provider.cpp
  35. fuse_sdcard_provider.h
  36. fuse_sideload.cpp
  37. fuse_sideload.h
  38. install.cpp
  39. install.h
  41. mounts.cpp
  42. mounts.h
  43. NOTICE
  44. print_sha1.h
  46. recovery-persist.cpp
  47. recovery-persist.rc
  48. recovery-refresh.cpp
  49. recovery-refresh.rc
  50. recovery.cpp
  51. roots.cpp
  52. roots.h
  53. rotate_logs.cpp
  54. rotate_logs.h
  55. screen_ui.cpp
  56. screen_ui.h
  57. stub_ui.h
  58. ui.cpp
  59. ui.h
  60. verifier.cpp
  61. verifier.h
  62. wear_touch.cpp
  63. wear_touch.h
  64. wear_ui.cpp
  65. wear_ui.h

The Recovery Image

Quick turn-around testing

mm -j && m ramdisk-nodeps && m recoveryimage-nodeps

# To boot into the new recovery image
# without flashing the recovery partition:
adb reboot bootloader
fastboot boot $ANDROID_PRODUCT_OUT/recovery.img

Running the tests

# After setting up environment and lunch.
mmma -j bootable/recovery

# Running the tests on device.
adb root
adb sync data

# 32-bit device
adb shell /data/nativetest/recovery_unit_test/recovery_unit_test
adb shell /data/nativetest/recovery_component_test/recovery_component_test

# Or 64-bit device
adb shell /data/nativetest64/recovery_unit_test/recovery_unit_test
adb shell /data/nativetest64/recovery_component_test/recovery_component_test

Running the manual tests

recovery-refresh and recovery-persist executables exist only on systems without /cache partition. And we need to follow special steps to run tests for them.

  • Execute the test on an A/B device first. The test should fail but it will log some contents to pmsg.

  • Reboot the device immediately and run the test again. The test should save the contents of pmsg buffer into /data/misc/recovery/inject.txt. Test will pass if this file has expected contents.

ResourceTest validates whether the png files are qualified as background text image under recovery.

1. `adb sync data` to make sure the test-dir has the images to test.
2. The test will automatically pickup and verify all `_text.png` files in
   the test dir.