diff options
Diffstat (limited to 'recipes-core/udev/udev-extraconf')
-rw-r--r-- | recipes-core/udev/udev-extraconf/mount.patch | 109 |
1 files changed, 73 insertions, 36 deletions
diff --git a/recipes-core/udev/udev-extraconf/mount.patch b/recipes-core/udev/udev-extraconf/mount.patch index 71ccc56..1b475f3 100644 --- a/recipes-core/udev/udev-extraconf/mount.patch +++ b/recipes-core/udev/udev-extraconf/mount.patch @@ -1,44 +1,81 @@ -diff -Naru old/mount.sh new/mount.sh ---- old/mount.sh 2018-05-15 09:07:02.814673114 -0500 -+++ new/mount.sh 2018-05-15 09:06:30.862674060 -0500 -@@ -4,7 +4,6 @@ - # - # Attempt to mount any added block devices and umount any removed devices +diff -Naru orig/mount.blacklist new/mount.blacklist +--- orig/mount.blacklist 2019-10-24 17:08:59.796796272 -0500 ++++ new/mount.blacklist 2019-10-24 17:16:31.768782892 -0500 +@@ -3,3 +3,16 @@ + /dev/mtdblock + /dev/md + /dev/dm-* ++# These should all be mounted in fstab or not at all. ++[PARTLABEL=uboot] ++[PARTLABEL=root] ++[PARTLABEL=root1] ++[PARTLABEL=root2] ++[PARTLABEL=uboot] ++[PARTLABEL=oem] ++[PARTLABEL=oem1] ++[PARTLABEL=oem2] ++[PARTLABEL=config] ++[PARTLABEL=config1] ++[PARTLABEL=config2] ++[PARTLABEL=user_data] +diff -Naru orig/mount.sh new/mount.sh +--- orig/mount.sh 2019-10-24 17:09:11.344795931 -0500 ++++ new/mount.sh 2019-10-24 18:11:38.612684994 -0500 +@@ -25,9 +25,32 @@ + fi -- - MOUNT="/bin/mount" PMOUNT="/usr/bin/pmount" - UMOUNT="/bin/umount" -@@ -21,6 +20,10 @@ - name="`basename "$DEVNAME"`" - - ! test -d "/run/media/$name" && mkdir -p "/run/media/$name" -+ if [ "$name" = mmcblk0p1 ] ; -+ then -+ ln -sf /run/media/$name /run/media/card -+ fi - # Silent util-linux's version of mounting auto - if [ "x`readlink $MOUNT`" = "x/bin/mount.util-linux" ] ; +- +-for line in `grep -h -v ^# /etc/udev/mount.blacklist /etc/udev/mount.blacklist.d/*` ++for line in `grep -h -v '^#$' /etc/udev/mount.blacklist /etc/udev/mount.blacklist.d/* 2>/dev/null` + do ++ if [[ $line =~ ^\[([^=]*)=([^\]]*)\] ]] ; then ++ fsspectype=${BASH_REMATCH[1]} ++ tmp="$(lsblk -o $fsspectype $DEVNAME | sed -e '1d')" ++ case $fsspectype in ++ PARTLABEL) ++ if [[ ${BASH_REMATCH[2]} == $tmp ]] ; then ++ logger "udev/mount.sh $DEVNAME is blacklisted, ignoring" ++ logger "$line" ++ exit 0 ++ fi ++ ;; ++ ++ PARTUUID) ++ if [[ ${BASH_REMATCH[2]^^} == $tmp ]] ; then ++ logger "udev/mount.sh $DEVNAME is blacklisted, ignoring" ++ logger "$line" ++ exit 0 ++ fi ++ ;; ++ *) ++ logger "[$fsspectype] is unsupported in blacklist -- ignoring blacklist item" ++ ;; ++ esac ++ fi + if [ ` expr match "$DEVNAME" "$line" ` -gt 0 ]; then -@@ -31,7 +34,7 @@ - # grant it with w/r/x permissions. - case $ID_FS_TYPE in - vfat|fat) -- MOUNT="$MOUNT -o umask=007,gid=`awk -F':' '/^disk/{print $3}' /etc/group`" -+ MOUNT="$MOUNT -o errors=continue -o umask=007,gid=`awk -F':' '/^disk/{print $3}' /etc/group`" - ;; - # TODO - *) -@@ -66,7 +69,11 @@ + logger "udev/mount.sh" "[$DEVNAME] is blacklisted, ignoring" +@@ -49,6 +72,10 @@ + + [ -d "/run/media/$name" ] || mkdir -p "/run/media/$name" + ++ if [ "$name" = mmcblk0p1 ] ; then ++ ln -sf /run/media/$name /run/media/card ++ fi ++ + MOUNT="$MOUNT -o silent" + + # If filesystemtype is vfat, change the ownership group to 'disk', and +@@ -78,7 +105,11 @@ if [ -x "$PMOUNT" ]; then $PMOUNT $DEVNAME 2> /dev/null elif [ -x $MOUNT ]; then -- $MOUNT $DEVNAME 2> /dev/null -+ if [[ $ID_FS_TYPE =~ fat ]] ; then -+ $MOUNT -o umask=002,gid=disk $DEVNAME 2> /dev/null -+ else -+ $MOUNT $DEVNAME 2> /dev/null -+ fi ++ if [[ $ID_FS_TYPE =~ fat ]] ; then ++ $MOUNT -o umask=002,gid=disk $DEVNAME 2> /dev/null ++ else + $MOUNT $DEVNAME 2> /dev/null ++ fi fi - + # If the device isn't mounted at this point, it isn't |