mirror of
https://git.yoctoproject.org/poky
synced 2026-04-20 00:32:13 +02:00
busybox-mdev: Support automatic mounting of block devices
Upon inserting a USB stick or similar device, mdev will run an automounter script that mounts valid partitions on /media/<device>. 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/<device>.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. (From OE-Core rev: 19073fb991b3e2d2304e55f94e30674adf375197) Signed-off-by: Mike Looijmans <mike.looijmans@topic.nl> Signed-off-by: Ross Burton <ross.burton@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
committed by
Richard Purdie
parent
6695f76a10
commit
973c565a7e
@@ -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
|
||||
|
||||
|
||||
@@ -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 \
|
||||
|
||||
@@ -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 \
|
||||
|
||||
63
meta/recipes-core/busybox/files/mdev-mount.sh
Normal file
63
meta/recipes-core/busybox/files/mdev-mount.sh
Normal file
@@ -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
|
||||
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
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user