Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1856596
  • 博文数量: 473
  • 博客积分: 13997
  • 博客等级: 上将
  • 技术积分: 5953
  • 用 户 组: 普通用户
  • 注册时间: 2010-01-22 11:52
文章分类

全部博文(473)

文章存档

2014年(8)

2013年(38)

2012年(95)

2011年(181)

2010年(151)

分类: LINUX

2011-09-25 12:27:01

需要udev、还有内核选项配置里的automount
Linux里有个项目叫hotplug的
如果内核支持hotplug,那么在系统中应该有这么一个文件/proc/sys/kernel/hotplug,这是一个链接,指向/sbin/hotplug,这是一个shell脚本文件,对该脚本文件作相应的修改就可以支持热插拔,包括U盘、SD/MMC卡等等。


  1. #!/bin/sh

  2. #
  3. # What to do with this USB hotplug event?
  4. #
  5. # code by T-bagwell
  6. case $ACTION in

  7. add)
  8.   #echo $ACTION>/dev/tts/1
  9.   DIR="/dev/mmc"
  10.   for I in "$DIR/"*;do
  11.     #echo $I>/dev/tts/1
  12.     if [ -d $I -a -e $I/part1 ];then
  13.       #echo "found&mount $I/part1">/dev/tts/1
  14.       mount -t vfat -o sync $I/part1 /tmp/sdcard 2>/dev/tts/1
  15.     else
  16.       #echo "$I/part1 not found">/dev/tts/1
  17.       sleep 1;
  18.       if [ -d $I -a -e $I/part1 ];then
  19.         #echo "found&mount $I/part1">/dev/tts/1
  20.         mount -t vfat -o sync $I/part1 /tmp/sdcard 2>/dev/tts/1
  21.       fi
  22.     fi
  23.   done
  24.     ;;

  25. remove)
  26.   #echo $ACTION>/dev/tts/1
  27.   #echo "umount /tmp/sdcard">/dev/tts/1
  28.   umount /tmp/sdcard 2>/dev/tts/1
  29.     ;;

  30. *)
  31.     exit 1
  32.     ;;

  33. esac

 

如果在嵌入式系统里做USB热插拔/自动挂载的话,稍微麻烦一些,我自己做的方法是使用NETLINK SOCKET来获得内核的设备热插拔信息,然后解析buf里以及df输出的信息,并执行相应的挂载/卸载的脚本。可以做到自动侦测挂载的usb设备名,设备数量,分区类型等,并自动建立对应的设备名的目录,将该设备挂载到对应的目录下。比如说我的手机插上时识别到两个分区,/dev/sda, /dev/sdb1,自动挂载到/mnt/sda, /mnt/sdb1。前提是内核里在热插拔的时候自动加载USB的驱动。

阅读(1410) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~