the 'block' cmd has some hidden options (not shown with block -h):
block extroot
block hotplug
so I assume that in the startup scripts for AR71xx there is a missing call for that?
just 'block mount' will not mount an extroot FS, I looked into the source code of ubox:
if (!strcmp(argv[1], "mount"))
return main_mount(argc, argv);
that one goes into
static int mount_device(struct blkid_struct_probe *pr, int hotplug)
{
struct mount *m;
char *device = basename(pr->dev);
if (!pr)
return -1;
if (!strcmp(pr->id->name, "swap")) {
if (hotplug && !auto_swap)
return -1;
m = find_swap(pr->uuid, device);
if (m || anon_swap)
swapon(pr->dev, (m) ? (m->prio) : (0));
return 0;
}
if (hotplug && !auto_mount)
return -1;
if (find_mount_point(pr->dev)) {
fprintf(stderr, "%s is already mounted\n", pr->dev);
return -1;
}
m = find_block(pr->uuid, pr->label, device, NULL);
if (m && m->extroot)
return -1;
so no / or /overlay targets can ever be mounted with 'block mount' - instead 'block extroot' must be used. IMO.
can someone check that this call is done on startup on AR71xx? I have no clue where to look.