Support patching fstab in ramdisk for A-only 2SI
This commit is contained in:
parent
a52a3e38ed
commit
748a35774f
@ -384,26 +384,7 @@ void SARBase::patch_rootdir() {
|
|||||||
close(dest);
|
close(dest);
|
||||||
}
|
}
|
||||||
|
|
||||||
#define FSR "/first_stage_ramdisk"
|
static void patch_fstab(const string &fstab) {
|
||||||
|
|
||||||
void ABFirstStageInit::prepare() {
|
|
||||||
// Find fstab
|
|
||||||
DIR *dir = xopendir(FSR);
|
|
||||||
if (!dir)
|
|
||||||
return;
|
|
||||||
dirent *de;
|
|
||||||
string fstab(FSR "/");
|
|
||||||
while ((de = readdir(dir))) {
|
|
||||||
if (strstr(de->d_name, "fstab")) {
|
|
||||||
fstab += de->d_name;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
closedir(dir);
|
|
||||||
if (fstab.length() == sizeof(FSR))
|
|
||||||
return;
|
|
||||||
|
|
||||||
// Patch fstab
|
|
||||||
string patched = fstab + ".p";
|
string patched = fstab + ".p";
|
||||||
FILE *fp = xfopen(patched.data(), "we");
|
FILE *fp = xfopen(patched.data(), "we");
|
||||||
file_readline(fstab.data(), [=](string_view l) -> bool {
|
file_readline(fstab.data(), [=](string_view l) -> bool {
|
||||||
@ -437,6 +418,26 @@ void ABFirstStageInit::prepare() {
|
|||||||
// Replace old fstab
|
// Replace old fstab
|
||||||
clone_attr(fstab.data(), patched.data());
|
clone_attr(fstab.data(), patched.data());
|
||||||
rename(patched.data(), fstab.data());
|
rename(patched.data(), fstab.data());
|
||||||
|
}
|
||||||
|
|
||||||
|
#define FSR "/first_stage_ramdisk"
|
||||||
|
|
||||||
|
void ABFirstStageInit::prepare() {
|
||||||
|
DIR *dir = xopendir(FSR);
|
||||||
|
if (!dir)
|
||||||
|
return;
|
||||||
|
string fstab(FSR "/");
|
||||||
|
for (dirent *de; (de = readdir(dir));) {
|
||||||
|
if (strstr(de->d_name, "fstab")) {
|
||||||
|
fstab += de->d_name;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
closedir(dir);
|
||||||
|
if (fstab.length() == sizeof(FSR))
|
||||||
|
return;
|
||||||
|
|
||||||
|
patch_fstab(fstab);
|
||||||
|
|
||||||
// Move stuffs for next stage
|
// Move stuffs for next stage
|
||||||
xmkdir(FSR "/system", 0755);
|
xmkdir(FSR "/system", 0755);
|
||||||
@ -449,6 +450,15 @@ void ABFirstStageInit::prepare() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void AFirstStageInit::prepare() {
|
void AFirstStageInit::prepare() {
|
||||||
|
DIR *dir = xopendir("/");
|
||||||
|
for (dirent *de; (de = readdir(dir));) {
|
||||||
|
if (strstr(de->d_name, "fstab")) {
|
||||||
|
patch_fstab(de->d_name);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
closedir(dir);
|
||||||
|
|
||||||
// Move stuffs for next stage
|
// Move stuffs for next stage
|
||||||
xmkdir("/system", 0755);
|
xmkdir("/system", 0755);
|
||||||
xmkdir("/system/bin", 0755);
|
xmkdir("/system/bin", 0755);
|
||||||
|
Loading…
Reference in New Issue
Block a user