Commit 04995881 authored by topjohnwu's avatar topjohnwu

Support androidboot.fstab_suffix cmdline flag

Fix #3187
parent d4d837a5
......@@ -155,6 +155,8 @@ void load_kernel_info(cmdline *cmd) {
strcpy(cmd->hardware, value);
} else if (key == "androidboot.hardware.platform") {
strcpy(cmd->hardware_plat, value);
} else if (key == "androidboot.fstab_suffix") {
strcpy(cmd->fstab_suffix, value);
}
});
......
......@@ -12,6 +12,7 @@ struct cmdline {
bool force_normal_boot;
char slot[3];
char dt_dir[64];
char fstab_suffix[32];
char hardware[32];
char hardware_plat[32];
};
......
......@@ -44,7 +44,7 @@ void FirstStageInit::prepare() {
fstab_file[0] = '\0';
// Find existing fstab file
for (const char *hw : { cmd->hardware, cmd->hardware_plat }) {
for (const char *hw : { cmd->fstab_suffix, cmd->hardware, cmd->hardware_plat }) {
if (hw[0] == '\0')
continue;
sprintf(fstab_file, "fstab.%s", hw);
......@@ -98,14 +98,17 @@ void FirstStageInit::prepare() {
}
}
// Dump dt fstab to fstab file in rootfs
if (fstab_file[0] == '\0') {
const char *hw = cmd->hardware[0] ? cmd->hardware :
(cmd->hardware_plat[0] ? cmd->hardware_plat : nullptr);
if (hw == nullptr) {
LOGE("Cannot determine hardware name!\n");
const char *suffix =
cmd->fstab_suffix[0] ? cmd->fstab_suffix :
(cmd->hardware[0] ? cmd->hardware :
(cmd->hardware_plat[0] ? cmd->hardware_plat : nullptr));
if (suffix == nullptr) {
LOGE("Cannot determine fstab suffix!\n");
return;
}
sprintf(fstab_file, "fstab.%s", hw);
sprintf(fstab_file, "fstab.%s", suffix);
}
// Patch init to force IsDtFstabCompatible() return false
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment