diff --git a/fs_mgr/fs_mgr_boot_config.cpp b/fs_mgr/fs_mgr_boot_config.cpp index 75d1e0db6..e3ef2321a 100644 --- a/fs_mgr/fs_mgr_boot_config.cpp +++ b/fs_mgr/fs_mgr_boot_config.cpp @@ -91,6 +91,12 @@ bool fs_mgr_get_boot_config_from_bootconfig(const std::string& bootconfig, if (key == bootconfig_key) { *out_val = value; return true; + } else if (android_key == "hardware" && android_key == key) { + // bootconfig doesn't allow subkeys and values to coexist, so + // "androidboot.hardware" cannot be used. It is replaced in + // bootconfig with "hardware" + *out_val = value; + return true; } } diff --git a/fs_mgr/tests/fs_mgr_test.cpp b/fs_mgr/tests/fs_mgr_test.cpp index bcd518089..5887641e3 100644 --- a/fs_mgr/tests/fs_mgr_test.cpp +++ b/fs_mgr/tests/fs_mgr_test.cpp @@ -127,7 +127,7 @@ const std::string bootconfig = "androidboot.serialno = \"BLAHBLAHBLAH\"\n" "androidboot.slot_suffix = \"_a\"\n" "androidboot.hardware.platform = \"sdw813\"\n" - "androidboot.hardware = \"foo\"\n" + "hardware = \"foo\"\n" "androidboot.revision = \"EVT1.0\"\n" "androidboot.bootloader = \"burp-0.1-7521\"\n" "androidboot.hardware.sku = \"mary\"\n" @@ -159,7 +159,7 @@ const std::vector> bootconfig_result_space = {"androidboot.serialno", "BLAHBLAHBLAH"}, {"androidboot.slot_suffix", "_a"}, {"androidboot.hardware.platform", "sdw813"}, - {"androidboot.hardware", "foo"}, + {"hardware", "foo"}, {"androidboot.revision", "EVT1.0"}, {"androidboot.bootloader", "burp-0.1-7521"}, {"androidboot.hardware.sku", "mary"}, diff --git a/init/property_service.cpp b/init/property_service.cpp index b7227020d..404a99c4c 100644 --- a/init/property_service.cpp +++ b/init/property_service.cpp @@ -1184,6 +1184,10 @@ static void ProcessBootconfig() { ImportBootconfig([&](const std::string& key, const std::string& value) { if (StartsWith(key, "androidboot.")) { InitPropertySet("ro.boot." + key.substr(12), value); + } else if (key == "hardware") { + // "hardware" in bootconfig replaces "androidboot.hardware" kernel + // cmdline parameter + InitPropertySet("ro.boot." + key, value); } }); }