acbcd5f5b5
Similar to the rootfs hacks on NOR flash devices, this series introduces support for auto-attaching (ubi device), auto-creating (ubiblock device) and mounting the "rootfs" (ubifs or squashfs) volume. This is needed so OpenWrt can start without relying on the bootloader to pass the ubi.mtd, ubi.block, rootfs and rootfstype parameters, but instead auto-detect the root filesystem according to a simple convention. OpenWrt-specific: 490-ubi-auto-attach-mtd-device-named-ubi-or-data-on-boot.patch 491-ubi-auto-create-ubiblock-device-for-rootfs.patch 492-try-auto-mounting-ubi0-rootfs-in-init-do_mounts.c.patch 493-ubi-set-ROOT_DEV-to-ubiblock-rootfs-if-unset.patch sent upstream: 552-ubifs-respect-silent-mount-flag.patch http://lists.infradead.org/pipermail/linux-mtd/2014-May/053893.html v2: actually retry with MS_RDONLY when mounting read-only ubifs root Signed-off-by: Daniel Golle <daniel@makrotopia.org> SVN-Revision: 41119
58 lines
1.3 KiB
Diff
58 lines
1.3 KiB
Diff
From eea9e1785e4c05c2a3444506aabafa0ae958538f Mon Sep 17 00:00:00 2001
|
|
From: Daniel Golle <daniel@makrotopia.org>
|
|
Date: Sat, 17 May 2014 03:35:02 +0200
|
|
Subject: [PATCH 4/5] try auto-mounting ubi0:rootfs in init/do_mounts.c
|
|
To: openwrt-devel@lists.openwrt.org
|
|
|
|
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
|
|
---
|
|
init/do_mounts.c | 26 +++++++++++++++++++++++++-
|
|
1 file changed, 25 insertions(+), 1 deletion(-)
|
|
|
|
diff --git a/init/do_mounts.c b/init/do_mounts.c
|
|
index 82f2288..faba9c6 100644
|
|
--- a/init/do_mounts.c
|
|
+++ b/init/do_mounts.c
|
|
@@ -432,7 +432,27 @@ 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++;
|
|
+ default:
|
|
+ return err;
|
|
+ }
|
|
+ }
|
|
+
|
|
+ return -EINVAL;
|
|
+}
|
|
+
|
|
#ifdef CONFIG_ROOT_NFS
|
|
|
|
#define NFSROOT_TIMEOUT_MIN 5
|
|
@@ -526,6 +546,10 @@ void __init mount_root(void)
|
|
change_floppy("root floppy");
|
|
}
|
|
#endif
|
|
+#ifdef CONFIG_MTD_ROOTFS_ROOT_DEV
|
|
+ if (!mount_ubi_rootfs())
|
|
+ return;
|
|
+#endif
|
|
#ifdef CONFIG_BLOCK
|
|
create_dev("/dev/root", ROOT_DEV);
|
|
mount_block_root("/dev/root", root_mountflags);
|
|
--
|
|
1.9.2
|
|
|