Merge "Set libavb version into system property for Treble OTA"
This commit is contained in:
commit
e8311491da
3 changed files with 12 additions and 3 deletions
|
|
@ -493,6 +493,10 @@ FsManagerAvbUniquePtr FsManagerAvbHandle::Open(const std::string& device_file_by
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Sets the MAJOR.MINOR for init to set it into "ro.boot.avb_version".
|
||||||
|
avb_handle->avb_version_ =
|
||||||
|
android::base::StringPrintf("%d.%d", AVB_VERSION_MAJOR, AVB_VERSION_MINOR);
|
||||||
|
|
||||||
// Verifies vbmeta images against the digest passed from bootloader.
|
// Verifies vbmeta images against the digest passed from bootloader.
|
||||||
if (!avb_verifier->VerifyVbmetaImages(*avb_handle->avb_slot_data_)) {
|
if (!avb_verifier->VerifyVbmetaImages(*avb_handle->avb_slot_data_)) {
|
||||||
LERROR << "VerifyVbmetaImages failed";
|
LERROR << "VerifyVbmetaImages failed";
|
||||||
|
|
|
||||||
|
|
@ -72,7 +72,8 @@ class FsManagerAvbHandle {
|
||||||
// Otherwise, returns false.
|
// Otherwise, returns false.
|
||||||
bool SetUpAvb(fstab_rec* fstab_entry, bool wait_for_verity_dev);
|
bool SetUpAvb(fstab_rec* fstab_entry, bool wait_for_verity_dev);
|
||||||
|
|
||||||
bool AvbHashtreeDisabled() { return status_ == kFsManagerAvbHandleHashtreeDisabled; }
|
bool hashtree_disabled() const { return status_ == kFsManagerAvbHandleHashtreeDisabled; }
|
||||||
|
const std::string& avb_version() const { return avb_version_; }
|
||||||
|
|
||||||
FsManagerAvbHandle(const FsManagerAvbHandle&) = delete; // no copy
|
FsManagerAvbHandle(const FsManagerAvbHandle&) = delete; // no copy
|
||||||
FsManagerAvbHandle& operator=(const FsManagerAvbHandle&) = delete; // no assignment
|
FsManagerAvbHandle& operator=(const FsManagerAvbHandle&) = delete; // no assignment
|
||||||
|
|
@ -92,6 +93,7 @@ class FsManagerAvbHandle {
|
||||||
private:
|
private:
|
||||||
AvbSlotVerifyData* avb_slot_data_;
|
AvbSlotVerifyData* avb_slot_data_;
|
||||||
FsManagerAvbHandleStatus status_;
|
FsManagerAvbHandleStatus status_;
|
||||||
|
std::string avb_version_;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif /* __CORE_FS_MGR_AVB_H */
|
#endif /* __CORE_FS_MGR_AVB_H */
|
||||||
|
|
|
||||||
|
|
@ -1010,10 +1010,11 @@ static bool vboot_2_0_mount_partitions(const std::vector<fstab_rec*>& fstab_recs
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
setenv("INIT_AVB_VERSION", avb_handle->avb_version().c_str(), 1);
|
||||||
for (auto rec : fstab_recs) {
|
for (auto rec : fstab_recs) {
|
||||||
bool need_create_dm_device = false;
|
bool need_create_dm_device = false;
|
||||||
if (fs_mgr_is_avb(rec)) {
|
if (fs_mgr_is_avb(rec)) {
|
||||||
if (avb_handle->AvbHashtreeDisabled()) {
|
if (avb_handle->hashtree_disabled()) {
|
||||||
LOG(INFO) << "avb hashtree disabled for '" << rec->mount_point << "'";
|
LOG(INFO) << "avb hashtree disabled for '" << rec->mount_point << "'";
|
||||||
} else if (avb_handle->SetUpAvb(rec, false /* wait_for_verity_dev */)) {
|
} else if (avb_handle->SetUpAvb(rec, false /* wait_for_verity_dev */)) {
|
||||||
need_create_dm_device = true;
|
need_create_dm_device = true;
|
||||||
|
|
@ -1362,12 +1363,14 @@ int main(int argc, char** argv) {
|
||||||
property_set("ro.boottime.init.selinux", getenv("INIT_SELINUX_TOOK"));
|
property_set("ro.boottime.init.selinux", getenv("INIT_SELINUX_TOOK"));
|
||||||
|
|
||||||
// Set libavb version for Framework-only OTA match in Treble build.
|
// Set libavb version for Framework-only OTA match in Treble build.
|
||||||
property_set("ro.boot.init.avb_version", std::to_string(AVB_MAJOR_VERSION).c_str());
|
const char* avb_version = getenv("INIT_AVB_VERSION");
|
||||||
|
if (avb_version) property_set("ro.boot.avb_version", avb_version);
|
||||||
|
|
||||||
// Clean up our environment.
|
// Clean up our environment.
|
||||||
unsetenv("INIT_SECOND_STAGE");
|
unsetenv("INIT_SECOND_STAGE");
|
||||||
unsetenv("INIT_STARTED_AT");
|
unsetenv("INIT_STARTED_AT");
|
||||||
unsetenv("INIT_SELINUX_TOOK");
|
unsetenv("INIT_SELINUX_TOOK");
|
||||||
|
unsetenv("INIT_AVB_VERSION");
|
||||||
|
|
||||||
// Now set up SELinux for second stage.
|
// Now set up SELinux for second stage.
|
||||||
selinux_initialize(false);
|
selinux_initialize(false);
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue