udev模型管理hotplug

udev的本质就是一个设备管理器,如果需要详细了解可以自己去百度百科。该篇日志记录了自己如何通过UDEV模型来实现SD卡的热插拔。配置步骤如下文所示。

1、配置RSC启动项

创建文件/etc/init.d/S01udev ,内容如下

# cat /etc/init.d/S01udev 

#!/bin/sh

mkdir /dev/pts
mount -t devpts devpts /dev/pts

udevd --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/sh

case $1 in
        add)
                mkdir -p $2
                mount -t vfat -o iocharset=utf8,rw,sync,umask=0000,dmask=0000,fmask=0000 /dev/$3 $2
#               mount -t vfat /dev/$2 /media
        ;;
        remove)
                umount $2
                rm -rf $2
        ;;
esac


按以上步骤配置完,插上SD卡,串口打印信息如下

# 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消失。


备注:如果不生效,可能是脚本文件的权限问题,修改文件权限可以解决。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值