uci_set_confdir(ctx, path);
}
- if (uci_load(ctx, "fstab", &pkg))
- {
- char *err;
- uci_get_errorstr(ctx, &err, "fstab");
- ERROR("extroot: failed to load %s/etc/config/%s\n",
- cfg ? cfg : "", err);
- free(err);
- return -1;
+ if (uci_load(ctx, "fstab", &pkg)) {
+ uci_set_confdir(ctx, "/etc/config");
+ if (uci_load(ctx, "fstab", &pkg)) {
+ char *err;
+ uci_get_errorstr(ctx, &err, "fstab");
+ ERROR("extroot: failed to load %s/etc/config/%s\n",
+ cfg ? cfg : "", err);
+ free(err);
+ return -1;
+ }
}
vlist_update(&mounts);
struct stat statbuf;
char *e2fsck = "/usr/sbin/e2fsck";
+ /* UBIFS does not need stuff like fsck */
+ if (!strncmp(pr->id->name, "ubifs", 5))
+ return;
+
if (strncmp(pr->id->name, "ext", 3)) {
ERROR("check_filesystem: %s is not supported\n", pr->id->name);
return;
char tag[64];
char uuid[64] = { 0 };
+ snprintf(tag, sizeof(tag), "%s/etc", path);
+ if (stat(tag, &s))
+ mkdir_p(tag);
+
snprintf(tag, sizeof(tag), "%s/etc/.extroot-uuid", path);
if (stat(tag, &s)) {
fp = fopen(tag, "w+");
pr = find_block_info(m->uuid, m->label, m->device);
}
if (pr) {
- if (strncmp(pr->id->name, "ext", 3)) {
+ if (strncmp(pr->id->name, "ext", 3) &&
+ strncmp(pr->id->name, "ubifs", 5)) {
ERROR("extroot: %s is not supported, try ext4\n", pr->id->name);
return -1;
}