This helper simplifies mounting ubifs filesystems via /etc/fstab. This helper already exists upstream, is not released yet, though.
Signed-off-by: Uwe Kleine-König <[email protected]> --- .../0002-Add-an-ubifs-mount-helper.patch | 142 ++++++++++++++++++ patches/mtd-utils-2.1.2/series | 3 +- rules/mtd-utils.in | 6 + rules/mtd-utils.make | 4 + 4 files changed, 154 insertions(+), 1 deletion(-) create mode 100644 patches/mtd-utils-2.1.2/0002-Add-an-ubifs-mount-helper.patch diff --git a/patches/mtd-utils-2.1.2/0002-Add-an-ubifs-mount-helper.patch b/patches/mtd-utils-2.1.2/0002-Add-an-ubifs-mount-helper.patch new file mode 100644 index 000000000000..f45b660ee2d1 --- /dev/null +++ b/patches/mtd-utils-2.1.2/0002-Add-an-ubifs-mount-helper.patch @@ -0,0 +1,142 @@ +From: =?UTF-8?q?Uwe=20Kleine-K=C3=B6nig?= <[email protected]> +Date: Tue, 6 Oct 2020 11:19:13 +0200 +Subject: [PATCH] Add an ubifs mount helper +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +This abstracts away attaching of the right ubi and then selecting the right +ubi device and volume to mount. + +As described in the comment at the top this allows to mount ubifs volumes +directly from /etc/fstab without having to use hardcoded numbers (which +depend on mount order and so are unreliable) and extra magic to care for +attaching. + +Signed-off-by: Uwe Kleine-König <[email protected]> +Signed-off-by: David Oberhollenzer <[email protected]> +Origin: upstream, commit:efeba0875ed181e7c1c7915742a3868799604d0c +--- + ubifs-utils/Makemodule.am | 2 + + ubifs-utils/mount.ubifs | 101 ++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 103 insertions(+) + create mode 100755 ubifs-utils/mount.ubifs + +diff --git a/ubifs-utils/Makemodule.am b/ubifs-utils/Makemodule.am +index 59109ccd613c..5c5d99f7572b 100644 +--- a/ubifs-utils/Makemodule.am ++++ b/ubifs-utils/Makemodule.am +@@ -47,4 +47,6 @@ UBIFS_EXTRA = \ + + EXTRA_DIST += $(UBIFS_HEADER) $(UBIFS_EXTRA) + ++dist_sbin_SCRIPTS = ubifs-utils/mount.ubifs ++ + sbin_PROGRAMS += $(UBIFS_BINS) +diff --git a/ubifs-utils/mount.ubifs b/ubifs-utils/mount.ubifs +new file mode 100755 +index 000000000000..b94ddc5649f4 +--- /dev/null ++++ b/ubifs-utils/mount.ubifs +@@ -0,0 +1,101 @@ ++#!/bin/sh ++ ++# This script should be installed as /sbin/mount.ubifs. The benefit is that an ++# fstab entry like: ++# ++# mtd=mtddev:home /home ubifs defaults 0 0 ++# ++# results in the ubi contained in the mtd named "mtddev" to be attached (if not ++# already done) and then the volume named "home" being mounted to /home. ++ ++# This is called by mount with the following options: ++# /sbin/mount.ubifs spec dir [-sfnv] [-N namespace] [-o options] [-t type.subtype] ++ ++spec="$1" ++shift ++ ++mtdname2num() { ++ local name ++ ++ name="$1" ++ ++ for d in $(find /sys/class/mtd/ -regex '.*/mtd[0-9]*'); do ++ case "$d" in ++ *ro) ++ continue ++ ;; ++ esac ++ ++ if test "$name" = "$(cat "$d/name")"; then ++ local dev mtdnum ++ ++ dev="$(basename "$d")" ++ mtdnum="${dev#mtd}" ++ echo "$mtdnum" ++ return ++ fi ++ done ++ ++ return 1 ++} ++ ++mtdnum2ubi() { ++ local mtdnum ++ ++ mtdnum="$1" ++ ++ for d in $(find /sys/class/ubi/ -regex '.*/ubi[0-9]*'); do ++ case "$d" in ++ *_[0-9]*) ++ continue ++ ;; ++ esac ++ ++ if test "$mtdnum" = "$(cat "$d/mtd_num")"; then ++ local ubi ++ ++ ubi="$(basename "$d")" ++ echo "$ubi" ++ return; ++ fi ++ done ++ ++ return 1 ++} ++ ++mtdnum2ubi_autoattach() { ++ local mtdnum ubi ++ ++ mtdnum="$1" ++ ++ ubi="$(mtdnum2ubi "$mtdnum")" && { echo "$ubi"; return; } ++ ++ # ubiattach might fail with "mtdX is already attached to ubiY" if there ++ # is more than one mount to do in the same mtd partition. So ignore errors. ++ ubiattach -m "$mtdnum" >&2 || true ++ ++ mtdnum2ubi "$mtdnum" ++} ++ ++case "$spec" in ++ mtd=*:*) ++ spec="${spec#mtd=}" ++ mtd="${spec%:*}" ++ rspec="${spec#*:}" ++ ++ mtdnum="$(mtdname2num "$mtd")" || { ++ echo "Failed to find mtdnum for mtd \"$mtd\"" ++ exit 1 ++ } ++ ++ ubi="$(mtdnum2ubi_autoattach "$mtdnum")" || { ++ echo "Failed to find ubi for mtd \"$mtd\"" ++ exit 1 ++ } ++ ++ spec="$ubi:$rspec" ++ ++ ;; ++esac ++ ++/bin/mount -i -t ubifs "$spec" "$@" diff --git a/patches/mtd-utils-2.1.2/series b/patches/mtd-utils-2.1.2/series index 92dc1b94f4ca..7a5eec8b0eeb 100644 --- a/patches/mtd-utils-2.1.2/series +++ b/patches/mtd-utils-2.1.2/series @@ -1,4 +1,5 @@ # generated by git-ptx-patches #tag:base --start-number 1 0001-nandmarkbad-new-util-to-mark-blocks-as-bad.patch -# 407ded52b82ffa3ff91d50cf6b2388e0 - git-ptx-patches magic +0002-Add-an-ubifs-mount-helper.patch +# 096af547b18d202f08576089a0cee058 - git-ptx-patches magic diff --git a/rules/mtd-utils.in b/rules/mtd-utils.in index cdf8b15adfac..2cb2b88eb0c3 100644 --- a/rules/mtd-utils.in +++ b/rules/mtd-utils.in @@ -288,6 +288,12 @@ config MTD_UTILS_UBIFORMAT help Format an MTD device +config MTD_UTILS_UBIFS_MOUNTHELPER + bool + prompt "mount.ubifs" + help + Simplifies attaching an ubi and mounting an ubifs via /etc/fstab. + config MTD_UTILS_UBIHEALTHD bool prompt "ubihealthd" diff --git a/rules/mtd-utils.make b/rules/mtd-utils.make index a5a12b3d14a9..248443b85345 100644 --- a/rules/mtd-utils.make +++ b/rules/mtd-utils.make @@ -197,6 +197,10 @@ ifdef PTXCONF_MTD_UTILS_UBICRC32 @$(call install_copy, mtd-utils, 0, 0, 0755, -, \ /usr/sbin/ubicrc32) endif +ifdef PTXCONF_MTD_UTILS_UBIFS_MOUNTHELPER + @$(call install_copy, mtd-utils, 0, 0, 0755, -, \ + /usr/sbin/mount.ubifs) +endif ifdef PTXCONF_MTD_UTILS_UBIHEALTHD @$(call install_copy, mtd-utils, 0, 0, 0755, -, \ /usr/sbin/ubihealthd) -- 2.30.0 _______________________________________________ ptxdist mailing list [email protected] To unsubscribe, send a mail with subject "unsubscribe" to [email protected]
