From: Daniel Golle Subject: try auto-mounting ubi0:rootfs in init/do_mounts.c Signed-off-by: Daniel Golle --- init/do_mounts.c | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) --- a/init/do_mounts.c +++ b/init/do_mounts.c @@ -474,7 +474,28 @@ retry: out: put_page(page); } - + +static int __init mount_ubi_rootfs(void) +{ + int flags = MS_SILENT; + int err, tried = 0; + + while (tried < 2) { + err = do_mount_root("ubi0:rootfs", "ubifs", flags, \ + root_mount_data); + switch (err) { + case -EACCES: + flags |= MS_RDONLY; + tried++; + break; + default: + return err; + } + } + + return -EINVAL; +} + #ifdef CONFIG_ROOT_NFS #define NFSROOT_TIMEOUT_MIN 5 @@ -567,6 +588,10 @@ void __init mount_root(void) return; } #endif +#ifdef CONFIG_MTD_ROOTFS_ROOT_DEV + if (!mount_ubi_rootfs()) + return; +#endif #ifdef CONFIG_BLOCK { int err = create_dev("/dev/root", ROOT_DEV);