本文主要是介绍udev模型管理hotplug,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
udev的本质就是一个设备管理器,如果需要详细了解可以自己去百度百科。该篇日志记录了自己如何通过UDEV模型来实现SD卡的热插拔。配置步骤如下文所示。
1、配置RSC启动项
创建文件/etc/init.d/S01udev ,内容如下
# cat /etc/init.d/S01udev
#!/bin/shmkdir /dev/pts
mount -t devpts devpts /dev/ptsudevd --daemon
udevstart
2、配置udev配置文件
创建文件/etc/udev/udev.conf ,内容如下
# udev.conf
# The initial syslog(3) priority: "err", "info", "debug" or its
# state can be changed with: "udevcontrol log_priority=<value>".
udev_root="/dev/"
udev_rules="/etc/udev/rules.d"
udev_log="err"
3、配置热插拔规则文件
创建文件/etc/udev/rules.d/11-sdcard-hotplug.rules,内容如下
#
# udev rules file for sdcard hotplug
#
ACTION=="add",KERNEL=="mmcblk[0-9]p[0-9]", RUN+="/etc/udev/sdcard_hotplug.sh add /media %k"
ACTION=="remove",KERNEL=="mmcblk[0-9]p[0-9]", RUN+="/etc/udev/sdcard_hotplug.sh remove /media %k"
4、配置热插拔脚本文件
创建文件/etc/udev/sdcard_hotplug.sh,内容如下
#!/bin/shcase $1 inadd)mkdir -p $2mount -t vfat -o iocharset=utf8,rw,sync,umask=0000,dmask=0000,fmask=0000 /dev/$3 $2
# mount -t vfat /dev/$2 /media;;remove)umount $2rm -rf $2;;
esac
# card connected!
mmc0: new SDHC card at address 0001
mmcblk0: mmc0:0001 00000 29.8 GiB
mmcblk0: p1
FAT-fs (mmcblk0p1): utf8 is not a recommended IO charset for FAT filesystems, filesystem will be case sensitive!
通过df命令查看到sd卡的挂载目录为/media
# df -h
Filesystem Size Used Available Use% Mounted on
/dev/root 3.0M 2.7M 308.0K 90% /
tmpfs 16.6M 4.0K 16.6M 0% /dev
/dev/mtdblock3 10.0M 7.0M 3.0M 70% /mnt/mtd
tmpfs 16.6M 0 16.6M 0% /mnt/mtd/dvs/mobile/tmpfs
/dev/mmcblk0p1 29.8G 77.2M 29.7G 0% /media
拔掉SD卡后,目录/media消失。
备注:如果不生效,可能是脚本文件的权限问题,修改文件权限可以解决。
这篇关于udev模型管理hotplug的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!