History log of /system/update_engine/boot_control_android.cc
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
d18829480c833dd9416a3778900cb4ddaad375b2 30-Jul-2016 Alex Deymo <deymo@google.com> Compile update_engine_sideload as a static recovery program.

This patch converts update_engine_sideload to a statically linked
program and installs it in the recovery image. The resulting program
uses a statically linked boot_control HAL instead of relying in
libhardware to dynamically load it.

The static library or libraries needed for the boot_control HAL need to
be specified by the product with the new make variable
PRODUCT_STATIC_BOOT_CONTROL_HAL. Otherwise, a stub implementation is
included and update_engine_sideload will fail at runtime.

Bug: 27178350
TEST=`make dist` builds a recovery image with update_engine_sideload in it.

(cherry picked from commit 44348e01c0c66e6baf1376f0b712ecae26fc5595)

Change-Id: I34fd1514eecbb2ddd89802891ea606418f28a60f
/system/update_engine/boot_control_android.cc
a918f9daede277d043e5b3b8443d712c88c949da 04-Jun-2016 Alex Deymo <deymo@google.com> Implement powerwash on Android.

Powerwash, the name for the equivalent of a factory reset or /data wipe,
can be triggered in Android by writing the desired command to the
recovery command file and rebooting into recovery.

This patch moves the powerwash scheduling/canceling logic to the
HardwareInterface and implements it on Android.

Bug: 28700985
TEST=Called update_engine_client passing POWERWASH=1, BCB is stored up
to offset 832.

(cherry picked from commit fb905d9b8d49f8fe41297c7aba2dd0942f1be311)

Change-Id: I66f9473c10fbe8f56e9000ce3e605b2bee345db8
/system/update_engine/boot_control_android.cc
12542ace0f43c5afaf1e7112556b71aea8454c79 04-Feb-2016 Alex Deymo <deymo@google.com> boot_control: Relax /misc partition name restriction.

Devices are not required to name the partition mounted on /misc
"misc". This patch relaxes this check to verify that the device is a
symlink, without forcing a particular name.

Bug: 25631949
TEST=Applied an update on a device with different partition name for /misc

Change-Id: I538657bce57f72387fdbe1c3b7f464ac98f29e99
/system/update_engine/boot_control_android.cc
1b03f9f983a22fabb8d53e036abf1b192e7d5811 09-Dec-2015 Alex Deymo <deymo@google.com> Move hardware and boot_control implementation to libupdate_engine.

The implementations of the BootControlInterface and HardwareInterface
are specific to the platform and use case. The delta_generator uses the
DeltaPerformer in the libpayload_consumer to apply a payload to a set
of partitions defined as local files, for example.

This patch move the platform implementations, not available when
building for the host back to the libupdate_engine.

Bug: 24619596
TEST=mma

Change-Id: I16ab06c2e53dfd046e693bdb7310ec26a2d69054
/system/update_engine/boot_control_android.cc
39910dcd1d68987ccee7c3031dc269233a8490bb 10-Nov-2015 Alex Deymo <deymo@google.com> Split payload application code into a subdirectory.

This patch splits from the main libupdate_engine code the part that
is strictly used to download and apply a payload into a new static
library, moving the code to subdirectories. The new library is divided
in two subdirectories: common/ and payload_consumer/, and should not
depend on other update_engine files outside those two subdirectories.
The main difference between those two is that the common/ tools are more
generic and not tied to the payload consumer process, but otherwise they
are both compiled together.

There are still dependencies from the new libpayload_consumer library
into the main directory files and DBus generated files. Those will be
addressed in follow up CLs.

Bug: 25197634
Test: FEATURES=test emerge-link update_engine; `mm` on Brillo.

Change-Id: Id8d0204ea573627e6e26ca9ea17b9592ca95bc23
/system/update_engine/boot_control_android.cc
3f39d5cc753905874d8d93bef94f857b8808f19e 13-Oct-2015 Alex Vakulenko <avakulenko@google.com> update_engine: Rename "chromeos" -> "brillo" in include paths and namespaces

libchromeos is transitioning to libbrillo and chromeos namespaces
and include directory is changing to brillo.

Bug: 24872993
Change-Id: I770659a95be380a50fe3b2ba9f91d65818f40945
/system/update_engine/boot_control_android.cc
31d95ac85d294b2b1bfa293835013e66c010fbcf 17-Sep-2015 Alex Deymo <deymo@google.com> Mark the active slot from update_engine instead of /postinstall.

In Chrome OS, we were reliying on the /postinst script to generate the
verity hashes and mark the new kernel as bootable. This means that we
also need to run /postinst from the other (not verified) slot when
doing a user-initiated rollback. The update_engine already interacts
with the bootloader via the BootControlInterface to mark the other slot
as unbootable and check if there are other slots available for
rollback.

This patch moves the responsibility of marking the new slot as bootable
from the /postinst script to the update_engine, introducing a new
SetActiveBootSlot() method in the BootControlInterface. Chrome OS
builds will continue to mark the new slot as active from /postinstall
in order to be compatible with old builds, resulting in the new slot
marked as active twice during a successful normal update.

Bug: 23523562
Test: cros flash and image to the new daemon; rolled it back

Change-Id: I02502d7b8e85523a6eb9a7721053739e8381d266
/system/update_engine/boot_control_android.cc
aa26f6240865d43f8cecc97bde7828f9b82bc17d 17-Sep-2015 Alex Deymo <deymo@google.com> Move MarkBootSuccessful to BootControlInterface.

Updating the boot flags to mark the current boot as successful is
platform-specific and part of the BootControlInterface's job. This
patch moves this to a new async method in this interface.

Bug: 24077637
Test: FEATURES=test emerge-link update_engine; cros flash in Chrome OS; tested on a dragonboard.

Change-Id: I23c3ed915dd8d2588a90d84b212bb04977957975
/system/update_engine/boot_control_android.cc
753fadc8805f662e5af3a66f694207b04fbef8bb 15-Sep-2015 David Zeuthen <zeuthen@google.com> BootControlAndroid: Implement using libhardware.

This simply calls into the a boot_control HAL implementation loaded with
libhardware. I've tested it with the implementation located in
system/extras/boot_control_copy.

The only non-trivial routine here is GetPartitionDevice() which I've
hand-tested on a device using the following snippet of code:

string names[] = {"boot", "system", "nope_enoent"};
for (string name : names) {
for (int slot = 0; slot <= 2; slot++) {
string device;
if (!GetPartitionDevice(name, slot, &device))
device = "NOTHERE";
LOG(INFO) << "slot:" << slot << " part:" << name << " -> " << device;
}
}

Change-Id: I1280325bd7cd4cf1cc9a33ef13c2f46f215da6e6
/system/update_engine/boot_control_android.cc
b17327ce55e7132da1f64039040df93a8c260fef 04-Sep-2015 Alex Deymo <deymo@google.com> New BootControlInterface implementation for Android.

This patch hides the platform-specific construction of a
BootControlInterface in a factory method shared by both Android and
Chromium OS. This also include a stub implementation for Android.

Bug: 23754584,23084776
TEST=emerge-link update_engine; `mma -i` builds these files without problem.

Change-Id: I43532e5cff1dc474453160f418ddd3c448f31938
/system/update_engine/boot_control_android.cc