LZ搞定没有,我的貌似hotplug没
起作用。
我在 v3s 主线 linux 试过 https://whycan.cn/t_2753.html
可以热插拔 u 盘和 tf卡
]]>晕哥 说:上面脚本是我用在V3s产品的,如果不行检查一下别的问题
我刚才测试了下了 就要间隔一下 就是下一次不能挂载 在插拔下就可以了 挂载了 很有规律
mmcblk([0-9]+)p([0-9]+) 0:0 660 */sbin/automount.sh $MDEV X${ACTION}
mmcblk([0-9]+) 0:0 660 */sbin/automount.sh $MDEV X${ACTION}
sd([a-z]+)([0-9]+) 0:0 660 */sbin/automount.sh $MDEV X${ACTION}
sd([a-z]+) 0:0 660 */sbin/automount.sh $MDEV X${ACTION}
这个我是只接放在/etc/mdev.conf这里文件中
到 autosound.sh 加一些调试语句跟踪一下。
]]>上面脚本是我用在V3s产品的,如果不行检查一下别的问题
我刚才测试了下了 就要间隔一下 就是下一次不能挂载 在插拔下就可以了 挂载了 很有规律
mmcblk([0-9]+)p([0-9]+) 0:0 660 */sbin/automount.sh $MDEV X${ACTION}
mmcblk([0-9]+) 0:0 660 */sbin/automount.sh $MDEV X${ACTION}
sd([a-z]+)([0-9]+) 0:0 660 */sbin/automount.sh $MDEV X${ACTION}
sd([a-z]+) 0:0 660 */sbin/automount.sh $MDEV X${ACTION}
这个我是只接放在/etc/mdev.conf这里文件中
]]>晕哥 说:/sbin/automount.sh:
#! /bin/sh
# debugging message
#echo "MDEV=$1 : ACTION=$2 : SUBSYSTEM=$SUBSYSTEM : DEVPATH=$DEVPATH : DEVNAME=$DEVNAME" >> /dev/consoleif [ "$1" == "" ]; then
echo "parameter is none" > /tmp/error.txt
exit 1
fiMNT=$1
#if [ $(echo $1 | grep mmcblk) ]; then
# if [ $(echo $1 | grep p[25]) ]; then
# MNT=sdcard2
# else
# MNT=sdcard
# fi
#elif [ $(echo $1 | grep sd) ]; then
# if [ $(echo $1 | grep p[25]) ]; then
# MNT=nandcard2
# else
# MNT=nandcard
# fi
#fi# there is no ACTION, it is for initial population
if [ "$2" = "X" ]; then
mounted=`mount | grep $1 | wc -l`
if [ $mounted -ge 1 ]; then
# mounted, assume the ACTION is remove
#ACT=Xremove
# only set add for initial population
ACT=Xadd
else
# not mounted, assume the ACTION is add
ACT=Xadd
fi
else
ACT=$2
fiif [ "$ACT" = "Xremove" ]; then
# umount the device
echo "$ACT /mnt/udisk" >> /tmp/mdev.log
if ! umount -l "/mnt/udisk"; then
exit 1
else
rm -f "/mnt/udisk"
echo "[Umount FS]: /dev/$1 -X-> /mnt/udisk" > /dev/console
fiif ! rmdir "/mnt/udisk"; then
exit 1
fi
else
# mount the device
mounted=`mount | grep $1 | wc -l`
#echo "par=$1,mounted=$mounted,MNT=$MNT" > /dev/console
if [ $mounted -ge 1 ]; then
#echo "device $1 is already mounted" > /dev/console
exit 0
fiif ! mkdir -p "/mnt/udisk"; then
exit 1
fiif [ $(echo $1 | grep mtd) ]; then
if mount -t jffs2 "/dev/$1" "/mnt/udisk"; then
echo "[Mount JFFS2]: /dev/$1 --> /mnt/udisk" > /dev/console
echo "$ACT /mnt/udisk" >> /tmp/mdev.log
elif mount -t yaffs2 -o"inband-tags" "/dev/$1" "/mnt/$1"; then
echo "[Mount YAFFS2]: /dev/$1 --> /mnt/udisk" > /dev/console
echo "$ACT /mnt/$1" >> /tmp/mdev.log
elif mount -t ubifs "/dev/$1" "/mnt/udisk"; then
echo "[Mount UBIFS]: /dev/$1 --> /mnt/udisk" > /dev/console
echo "$ACT /mnt/udisk" >> /tmp/mdev.log
else
# failed to mount, clean up mountpoint
if ! rmdir "/mnt/udisk"; then
exit 1
fi
fi
else
# try vfat only
if mount -t vfat -o noatime,shortname=mixed,utf8 "/dev/$1" "/mnt/udisk"; then
# ln -s /mnt/$1 /mnt/udisk
echo "[Mount VFAT]: /dev/$1 --> /mnt/udisk" > /dev/console
echo "$ACT /mnt/udisk" >> /tmp/mdev.log
else
# failed to mount, clean up mountpoint
if ! rmdir "/mnt/udisk"; then
exit 1
fi
exit 1
fi
fi
fi/etc/mdev.conf:
mmcblk([0-9]+)p([0-9]+) 0:0 660 */sbin/automount.sh $MDEV X${ACTION}
mmcblk([0-9]+) 0:0 660 */sbin/automount.sh $MDEV X${ACTION}
sd([a-z]+)([0-9]+) 0:0 660 */sbin/automount.sh $MDEV X${ACTION}
sd([a-z]+) 0:0 660 */sbin/automount.sh $MDEV X${ACTION}上面两个文件是新唐SDK里面的, 用起来还不错, 你试一试, /sbin/automount.sh 这个要加可执行属性。
mmcblk([0-9]+)p([0-9]+) 0:0 660 */sbin/automount.sh $MDEV X${ACTION}
mmcblk([0-9]+) 0:0 660 */sbin/automount.sh $MDEV X${ACTION}
sd([a-z]+)([0-9]+) 0:0 660 */sbin/automount.sh $MDEV X${ACTION}
sd([a-z]+) 0:0 660 */sbin/automount.sh $MDEV X${ACTION}
不支持热插拔 就必须要重启上电后 中途热插拔还是有点是问题
/sbin/automount.sh:
#! /bin/sh
# debugging message
#echo "MDEV=$1 : ACTION=$2 : SUBSYSTEM=$SUBSYSTEM : DEVPATH=$DEVPATH : DEVNAME=$DEVNAME" >> /dev/consoleif [ "$1" == "" ]; then
echo "parameter is none" > /tmp/error.txt
exit 1
fiMNT=$1
#if [ $(echo $1 | grep mmcblk) ]; then
# if [ $(echo $1 | grep p[25]) ]; then
# MNT=sdcard2
# else
# MNT=sdcard
# fi
#elif [ $(echo $1 | grep sd) ]; then
# if [ $(echo $1 | grep p[25]) ]; then
# MNT=nandcard2
# else
# MNT=nandcard
# fi
#fi# there is no ACTION, it is for initial population
if [ "$2" = "X" ]; then
mounted=`mount | grep $1 | wc -l`
if [ $mounted -ge 1 ]; then
# mounted, assume the ACTION is remove
#ACT=Xremove
# only set add for initial population
ACT=Xadd
else
# not mounted, assume the ACTION is add
ACT=Xadd
fi
else
ACT=$2
fiif [ "$ACT" = "Xremove" ]; then
# umount the device
echo "$ACT /mnt/udisk" >> /tmp/mdev.log
if ! umount -l "/mnt/udisk"; then
exit 1
else
rm -f "/mnt/udisk"
echo "[Umount FS]: /dev/$1 -X-> /mnt/udisk" > /dev/console
fiif ! rmdir "/mnt/udisk"; then
exit 1
fi
else
# mount the device
mounted=`mount | grep $1 | wc -l`
#echo "par=$1,mounted=$mounted,MNT=$MNT" > /dev/console
if [ $mounted -ge 1 ]; then
#echo "device $1 is already mounted" > /dev/console
exit 0
fiif ! mkdir -p "/mnt/udisk"; then
exit 1
fiif [ $(echo $1 | grep mtd) ]; then
if mount -t jffs2 "/dev/$1" "/mnt/udisk"; then
echo "[Mount JFFS2]: /dev/$1 --> /mnt/udisk" > /dev/console
echo "$ACT /mnt/udisk" >> /tmp/mdev.log
elif mount -t yaffs2 -o"inband-tags" "/dev/$1" "/mnt/$1"; then
echo "[Mount YAFFS2]: /dev/$1 --> /mnt/udisk" > /dev/console
echo "$ACT /mnt/$1" >> /tmp/mdev.log
elif mount -t ubifs "/dev/$1" "/mnt/udisk"; then
echo "[Mount UBIFS]: /dev/$1 --> /mnt/udisk" > /dev/console
echo "$ACT /mnt/udisk" >> /tmp/mdev.log
else
# failed to mount, clean up mountpoint
if ! rmdir "/mnt/udisk"; then
exit 1
fi
fi
else
# try vfat only
if mount -t vfat -o noatime,shortname=mixed,utf8 "/dev/$1" "/mnt/udisk"; then
# ln -s /mnt/$1 /mnt/udisk
echo "[Mount VFAT]: /dev/$1 --> /mnt/udisk" > /dev/console
echo "$ACT /mnt/udisk" >> /tmp/mdev.log
else
# failed to mount, clean up mountpoint
if ! rmdir "/mnt/udisk"; then
exit 1
fi
exit 1
fi
fi
fi/etc/mdev.conf:
mmcblk([0-9]+)p([0-9]+) 0:0 660 */sbin/automount.sh $MDEV X${ACTION}
mmcblk([0-9]+) 0:0 660 */sbin/automount.sh $MDEV X${ACTION}
sd([a-z]+)([0-9]+) 0:0 660 */sbin/automount.sh $MDEV X${ACTION}
sd([a-z]+) 0:0 660 */sbin/automount.sh $MDEV X${ACTION}上面两个文件是新唐SDK里面的, 用起来还不错, 你试一试, /sbin/automount.sh 这个要加可执行属性。
mmcblk([0-9]+)p([0-9]+) 0:0 660 */sbin/automount.sh $MDEV X${ACTION}
mmcblk([0-9]+) 0:0 660 */sbin/automount.sh $MDEV X${ACTION}
sd([a-z]+)([0-9]+) 0:0 660 */sbin/automount.sh $MDEV X${ACTION}
sd([a-z]+) 0:0 660 */sbin/automount.sh $MDEV X${ACTION}
这个我直接放到/etc/mdev.comf 没有自己创建文件 里面有这个文件
但是我热插拔的时候还是没有挂载上去就好像这个automount脚本根本就没有执行样
#! /bin/sh
# debugging message
#echo "MDEV=$1 : ACTION=$2 : SUBSYSTEM=$SUBSYSTEM : DEVPATH=$DEVPATH : DEVNAME=$DEVNAME" >> /dev/consoleif [ "$1" == "" ]; then
echo "parameter is none" > /tmp/error.txt
exit 1
fiMNT=$1
#if [ $(echo $1 | grep mmcblk) ]; then
# if [ $(echo $1 | grep p[25]) ]; then
# MNT=sdcard2
# else
# MNT=sdcard
# fi
#elif [ $(echo $1 | grep sd) ]; then
# if [ $(echo $1 | grep p[25]) ]; then
# MNT=nandcard2
# else
# MNT=nandcard
# fi
#fi# there is no ACTION, it is for initial population
if [ "$2" = "X" ]; then
mounted=`mount | grep $1 | wc -l`
if [ $mounted -ge 1 ]; then
# mounted, assume the ACTION is remove
#ACT=Xremove
# only set add for initial population
ACT=Xadd
else
# not mounted, assume the ACTION is add
ACT=Xadd
fi
else
ACT=$2
fiif [ "$ACT" = "Xremove" ]; then
# umount the device
echo "$ACT /mnt/udisk" >> /tmp/mdev.log
if ! umount -l "/mnt/udisk"; then
exit 1
else
rm -f "/mnt/udisk"
echo "[Umount FS]: /dev/$1 -X-> /mnt/udisk" > /dev/console
fiif ! rmdir "/mnt/udisk"; then
exit 1
fi
else
# mount the device
mounted=`mount | grep $1 | wc -l`
#echo "par=$1,mounted=$mounted,MNT=$MNT" > /dev/console
if [ $mounted -ge 1 ]; then
#echo "device $1 is already mounted" > /dev/console
exit 0
fiif ! mkdir -p "/mnt/udisk"; then
exit 1
fiif [ $(echo $1 | grep mtd) ]; then
if mount -t jffs2 "/dev/$1" "/mnt/udisk"; then
echo "[Mount JFFS2]: /dev/$1 --> /mnt/udisk" > /dev/console
echo "$ACT /mnt/udisk" >> /tmp/mdev.log
elif mount -t yaffs2 -o"inband-tags" "/dev/$1" "/mnt/$1"; then
echo "[Mount YAFFS2]: /dev/$1 --> /mnt/udisk" > /dev/console
echo "$ACT /mnt/$1" >> /tmp/mdev.log
elif mount -t ubifs "/dev/$1" "/mnt/udisk"; then
echo "[Mount UBIFS]: /dev/$1 --> /mnt/udisk" > /dev/console
echo "$ACT /mnt/udisk" >> /tmp/mdev.log
else
# failed to mount, clean up mountpoint
if ! rmdir "/mnt/udisk"; then
exit 1
fi
fi
else
# try vfat only
if mount -t vfat -o noatime,shortname=mixed,utf8 "/dev/$1" "/mnt/udisk"; then
# ln -s /mnt/$1 /mnt/udisk
echo "[Mount VFAT]: /dev/$1 --> /mnt/udisk" > /dev/console
echo "$ACT /mnt/udisk" >> /tmp/mdev.log
else
# failed to mount, clean up mountpoint
if ! rmdir "/mnt/udisk"; then
exit 1
fi
exit 1
fi
fi
fi
/etc/mdev.conf:
mmcblk([0-9]+)p([0-9]+) 0:0 660 */sbin/automount.sh $MDEV X${ACTION}
mmcblk([0-9]+) 0:0 660 */sbin/automount.sh $MDEV X${ACTION}
sd([a-z]+)([0-9]+) 0:0 660 */sbin/automount.sh $MDEV X${ACTION}
sd([a-z]+) 0:0 660 */sbin/automount.sh $MDEV X${ACTION}
上面两个文件是新唐SDK里面的, 用起来还不错, 你试一试, /sbin/automount.sh 这个要加可执行属性。
]]>参考: https://git.busybox.net/busybox/plain/docs/mdev.txt
Here's a typical code snippet from the init script:
[0] mount -t proc proc /proc
[1] mount -t sysfs sysfs /sys
[2] echo /sbin/mdev > /proc/sys/kernel/hotplug
[3] mdev -s还需要一个 /etc/mdev.conf 文件:
# block devices
([hs]d[a-z]) root:disk 660 >disk/%1/0
([hs]d[a-z])([0-9]+) root:disk 660 >disk/%1/%2
mmcblk([0-9]+) root:disk 660 >disk/mmc/%1/0
mmcblk([0-9]+)p([0-9]+) root:disk 660 >disk/mmc/%1/%2
# network devices
(tun|tap) root:network 660 >net/%1上面的mdev.conf不一定能用,网上找一个能用的吧。
echo /sbin/mdev > /proc/sys/kernel/hotplug这个我已经加了 在rcS中 然后其中的#blockdevice这些也要加是吧
试了之后也是一样
Here's a typical code snippet from the init script:
[0] mount -t proc proc /proc
[1] mount -t sysfs sysfs /sys
[2] echo /sbin/mdev > /proc/sys/kernel/hotplug
[3] mdev -s
还需要一个 /etc/mdev.conf 文件:
# block devices
([hs]d[a-z]) root:disk 660 >disk/%1/0
([hs]d[a-z])([0-9]+) root:disk 660 >disk/%1/%2
mmcblk([0-9]+) root:disk 660 >disk/mmc/%1/0
mmcblk([0-9]+)p([0-9]+) root:disk 660 >disk/mmc/%1/%2
# network devices
(tun|tap) root:network 660 >net/%1
上面的mdev.conf不一定能用,网上找一个能用的吧。
]]>无情一刀 说:然后那个mdev 应该是灭有启动成功
https://whycan.cn/files/members/1116/medv.pngmdev 不是后台启动驻留的进城,而是一个hotplug信号激活的进城。
那就是比如我在热插拔的时候 就会有一个hotplugx信号激活了
Linux System Utilities --->
mdev
Support /etc/mdev.conf
Support command execution at device addition/removal
这里的配置我没有配置 确实是找了很久不知道在哪里配置
然后那个mdev 应该是灭有启动成功
https://whycan.cn/files/members/1116/medv.png
mdev 不是后台启动驻留的进城,而是一个hotplug信号激活的进城。
]]>