From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from p3plsmtpa08-06.prod.phx3.secureserver.net (p3plsmtpa08-06.prod.phx3.secureserver.net [173.201.193.107]) by mail.openembedded.org (Postfix) with ESMTP id A621A60809 for ; Thu, 1 Jan 2015 13:08:14 +0000 (UTC) Received: from [192.168.65.10] ([75.72.225.8]) by p3plsmtpa08-06.prod.phx3.secureserver.net with id ad8D1p00K0BVjqb01d8DjB; Thu, 01 Jan 2015 06:08:14 -0700 Message-ID: <54A546C0.8040101@pabigot.com> Date: Thu, 01 Jan 2015 07:08:16 -0600 From: "Peter A. Bigot" Organization: Peter Bigot Consulting, LLC User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.3.0 MIME-Version: 1.0 To: openembedded-core@lists.openembedded.org References: <1417688866-8329-1-git-send-email-mike.looijmans@topic.nl> <1418912251-3313-1-git-send-email-mike.looijmans@topic.nl> <1418912251-3313-5-git-send-email-mike.looijmans@topic.nl> <54A50E3A.5010707@topic.nl> In-Reply-To: <54A50E3A.5010707@topic.nl> Subject: Re: [PATCH v2 4/4] busybox-mdev: Support automatic mounting of block devices X-BeenThere: openembedded-core@lists.openembedded.org X-Mailman-Version: 2.1.12 Precedence: list List-Id: Patches and discussions about the oe-core layer List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 01 Jan 2015 13:08:17 -0000 Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 8bit On 01/01/2015 03:07 AM, Mike Looijmans wrote: > On 01/01/2015 03:49 AM, Khem Raj wrote: >> >>> On Dec 18, 2014, at 6:17 AM, Mike Looijmans >>> wrote: >>> >>> Upon inserting a USB stick or similar device, mdev will run >>> an automounter script that mounts valid partitions on >>> /media/. The script first checks /etc/fstab entries >>> so that mounting on UUID or LABEL or using custom mount options >>> is still possible. If /etc/fstab does not contain particular >>> mount options, the script will create (and remove) the mountpoint >>> automatically. >>> The script also supports full disk partitions (devices without >>> partition table). >>> >>> The following environments can be set in /etc/default/mdev: >>> MDEV_AUTOMOUNT=n (Disables automounting completely) >>> MDEV_AUTOMOUNT_ROOT=/media (Change the mount root location) >>> >>> Automatic mounting for a particular device can be disabled by >>> creating a file "/dev/.nomount". This is helpful in >>> scripts that create partitions for example, and want to perform >>> specific actions which require the device to remain unmounted. >>> >>> A more complex variation (using LABEL based mounts) on this script >>> has been in use in OpenPLi for many years now, and I've used this >>> one on many projects already, so it's about time to push this to >>> mainline. >>> >>> Signed-off-by: Mike Looijmans >>> --- >>> meta/recipes-core/busybox/busybox.inc | 1 + >>> meta/recipes-core/busybox/busybox_1.22.1.bb | 1 + >>> meta/recipes-core/busybox/busybox_git.bb | 1 + >>> meta/recipes-core/busybox/files/mdev-mount.sh | 63 >>> +++++++++++++++++++++++++ >>> meta/recipes-core/busybox/files/mdev.conf | 3 ++ >>> 5 files changed, 69 insertions(+) >>> create mode 100644 meta/recipes-core/busybox/files/mdev-mount.sh >>> >>> diff --git a/meta/recipes-core/busybox/busybox.inc >>> b/meta/recipes-core/busybox/busybox.inc >>> index deb2ee4..0769d92 100644 >>> --- a/meta/recipes-core/busybox/busybox.inc >>> +++ b/meta/recipes-core/busybox/busybox.inc >>> @@ -270,6 +270,7 @@ do_install () { >>> install -m 644 ${WORKDIR}/mdev.conf >>> ${D}${sysconfdir}/mdev.conf >>> install -d ${D}${sysconfdir}/mdev >>> install -m 0755 >>> ${WORKDIR}/find-touchscreen.sh ${D}${sysconfdir}/mdev >>> + install -m 0755 ${WORKDIR}/mdev-mount.sh >>> ${D}${sysconfdir}/mdev >>> fi >>> fi >>> >>> diff --git a/meta/recipes-core/busybox/busybox_1.22.1.bb >>> b/meta/recipes-core/busybox/busybox_1.22.1.bb >>> index 82f7f68..f379bb6 100644 >>> --- a/meta/recipes-core/busybox/busybox_1.22.1.bb >>> +++ b/meta/recipes-core/busybox/busybox_1.22.1.bb >>> @@ -20,6 +20,7 @@ SRC_URI = >>> "http://www.busybox.net/downloads/busybox-${PV}.tar.bz2;name=tarball \ >>> file://busybox-syslog.default \ >>> file://mdev \ >>> file://mdev.conf \ >>> + file://mdev-mount.sh \ >>> file://umount.busybox \ >>> file://defconfig \ >>> file://busybox-syslog.service.in \ >>> diff --git a/meta/recipes-core/busybox/busybox_git.bb >>> b/meta/recipes-core/busybox/busybox_git.bb >>> index f2cc119..f91b552 100644 >>> --- a/meta/recipes-core/busybox/busybox_git.bb >>> +++ b/meta/recipes-core/busybox/busybox_git.bb >>> @@ -24,6 +24,7 @@ SRC_URI = "git://busybox.net/busybox.git \ >>> file://busybox-syslog.default \ >>> file://mdev \ >>> file://mdev.conf \ >>> + file://mdev-mount.sh \ >>> file://umount.busybox \ >>> file://defconfig \ >>> file://busybox-syslog.service.in \ >>> diff --git a/meta/recipes-core/busybox/files/mdev-mount.sh >>> b/meta/recipes-core/busybox/files/mdev-mount.sh >>> new file mode 100644 >>> index 0000000..d5d66d6 >>> --- /dev/null >>> +++ b/meta/recipes-core/busybox/files/mdev-mount.sh >>> @@ -0,0 +1,63 @@ >>> +#!/bin/sh >>> +MDEV_AUTOMOUNT=y >>> +MDEV_AUTOMOUNT_ROOT=/run/media >>> +[ -f /etc/default/mdev ] && . /etc/default/mdev >>> +if [ "${MDEV_AUTOMOUNT}" = "n" ] ; then >>> + exit 0 >>> +fi >>> + >>> +case "$ACTION" in >>> + add|"") >>> + ACTION="add" >>> + # check if already mounted >>> + if grep -q "^/dev/${MDEV} " /proc/mounts ; then >>> + # Already mounted >>> + exit 0 >>> + fi >>> + DEVBASE=`expr substr $MDEV 1 3` >>> + if [ "${DEVBASE}" == "mmc" ] ; then >>> + DEVBASE=`expr substr $MDEV 1 7` >>> + fi >>> + # check for "please don't mount it" file >>> + if [ -f "/dev/nomount.${DEVBASE}" ] ; then >>> + # blocked >>> + exit 0 >>> + fi >>> + # check for full-disk partition >>> + if [ "${DEVBASE}" == "${MDEV}" ] ; then >> >> bashism, get rid of it. > > please explain? >From http://www.gnu.org/software/bash/manual/html_node/Bash-Conditional-Expressions.html: string1 == string2 string1 = string2 True if the strings are equal. ‘=’ should be used with the test command for POSIX conformance. > >> >>> + if [ -d /sys/block/${DEVBASE}/${DEVBASE}*1 ] ; then >>> + # Partition detected, just quit >>> + exit 0 >>> + fi >>> + if [ ! -f /sys/block/${DEVBASE}/size ] ; then >>> + # No size at all >>> + exit 0 >>> + fi >>> + if [ `cat /sys/block/${DEVBASE}/size` == 0 ] ; then >>> + # empty device, bail out >>> + exit 0 >>> + fi >>> + fi >>> + # first allow fstab to determine the mountpoint >>> + if ! mount /dev/$MDEV > /dev/null 2>&1 >>> + then >>> + MOUNTPOINT="${MDEV_AUTOMOUNT_ROOT}/$MDEV" >>> + mkdir "$MOUNTPOINT" >>> + mount -t auto /dev/$MDEV "$MOUNTPOINT" >>> + fi >>> + ;; >>> + remove) >>> + MOUNTPOINT=`grep "^/dev/$MDEV\s" /proc/mounts | cut -d' ' >>> -f 2` >>> + if [ ! -z "$MOUNTPOINT" ] >>> + then >>> + umount "$MOUNTPOINT" >>> + rmdir "$MOUNTPOINT" >>> + else >>> + umount /dev/$MDEV >>> + fi >>> + ;; >>> + *) >>> + # Unexpected keyword >>> + exit 1 >>> + ;; >>> +esac >>> diff --git a/meta/recipes-core/busybox/files/mdev.conf >>> b/meta/recipes-core/busybox/files/mdev.conf >>> index 6dfd161..17e93da 100644 >>> --- a/meta/recipes-core/busybox/files/mdev.conf >>> +++ b/meta/recipes-core/busybox/files/mdev.conf >>> @@ -37,3 +37,6 @@ input/mice 0:0 0660 >>> input/mouse.* 0:0 0660 >>> >>> tun[0-9]* 0:0 0660 =net/ >>> + >>> +[hs]d[a-z][0-9]? 0:0 660 */etc/mdev/mdev-mount.sh >>> +mmcblk[0-9].* 0:0 660 */etc/mdev/mdev-mount.sh >>> -- >>> 1.7.9.5 >>> >>> -- >>> _______________________________________________ >>> Openembedded-core mailing list >>> Openembedded-core@lists.openembedded.org >>> http://lists.openembedded.org/mailman/listinfo/openembedded-core >> > >