_cache_load("/dev/vd*");
_cache_load("/dev/xvd*");
_cache_load("/dev/dm-*");
+ _cache_load("/dev/fit*");
}
}
#endif
-static int find_root_dev(char *buf, int len)
+static int find_dev(const char *path, char *buf, int len)
{
DIR *d;
dev_t root;
struct stat s;
struct dirent *e;
- if (stat("/", &s))
+ if (stat(path, &s))
return -1;
if (!(d = opendir("/dev")))
return -1;
}
+static int find_root_dev(char *buf, int len)
+{
+ int err = find_dev("/", buf, len);
+ if (err)
+ err = find_dev("/rom", buf, len);
+
+ return err;
+}
+
static int test_fs_support(const char *name)
{
char line[128], *p;
FILE *fp;
int err;
- err = find_block_mtd("\"rootfs\"", devpath, sizeof(devpath));
+ snprintf(tag, sizeof(tag), "%s/etc/.extroot-default", path);
+ if (stat(tag, &s))
+ return 0;
+
+ err = find_root_dev(devpath, sizeof(devpath));
+ if (err)
+ err = find_block_mtd("\"rootfs\"", devpath, sizeof(devpath));
#ifdef UBIFS_EXTROOT
if (err) {
libubi_t libubi;
libubi_close(libubi);
}
#endif
- if (err) {
- err = find_root_dev(devpath, sizeof(devpath));
- }
if (err) {
ULOG_ERR("extroot: unable to determine root device\n");
return -1;
/* enable LOG_INFO messages */
ulog_threshold(LOG_INFO);
+ /* try the currently mounted overlay if exists */
+ err = mount_extroot("/tmp/overlay");
+ if (!err)
+ return err;
+
/*
* Look for "rootfs_data". We will want to mount it and check for
* extroot configuration.