diff --git a/fs_mgr/fs_mgr_fstab.cpp b/fs_mgr/fs_mgr_fstab.cpp index e761e56d4..d3cd459d8 100644 --- a/fs_mgr/fs_mgr_fstab.cpp +++ b/fs_mgr/fs_mgr_fstab.cpp @@ -33,6 +33,7 @@ #include "fs_mgr_priv.h" +using android::base::Split; using android::base::StartsWith; const std::string kDefaultAndroidDtDir("/proc/device-tree/firmware/android"); @@ -850,11 +851,12 @@ struct fstab_rec* fs_mgr_get_entry_for_mount_point(struct fstab* fstab, const st } std::set fs_mgr_get_boot_devices() { - // boot_devices can be specified in device tree. - std::string dt_value; - std::string file_name = get_android_dt_dir() + "/boot_devices"; - if (read_dt_file(file_name, &dt_value)) { - auto boot_devices = android::base::Split(dt_value, ","); + // First check the kernel commandline, then try the device tree otherwise + std::string dt_file_name = get_android_dt_dir() + "/boot_devices"; + std::string value; + if (fs_mgr_get_boot_config_from_kernel_cmdline("boot_devices", &value) || + read_dt_file(dt_file_name, &value)) { + auto boot_devices = Split(value, ","); return std::set(boot_devices.begin(), boot_devices.end()); }