udev
是Linux kernel 2.6
系列的设备管理器。它主要的功能是管理/dev
目录底下的设备节点。它同时也是用来接替devfs
及热插拔的功能,这意味着它要在添加/删除硬件时处理/dev
目录以及所有用户空间的行为。
创建/etc/init.d/S01udev
文件,内容如下:
#!/bin/sh
mkdir /dev/pts
mount -t devpts devpts /dev/pts
udevd --daemon
udevstart
配置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"
配置热插拔规则文件,创建/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"
配置热插拔脚本文件,创建/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
消失。
参考文章
脚本实现U盘自动挂载(linux平台)
详解udev
linux下实现U盘和sd卡的自动挂载
udev模型管理hotplug
linux中的热插拔和mdev机制
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。