主题 : 通过mdev规则实现可移动设备的自动挂载 复制链接 | 浏览器收藏 | 打印
*無鈳取玳
级别: 论坛版主
UID: 27
精华: 12
发帖: 5398
金钱: 40120 两
威望: 17929 点
综合积分: 11036 分
注册时间: 2008-01-16
最后登录: 2014-11-22
楼主  发表于: 2010-02-07 14:57

 通过mdev规则实现可移动设备的自动挂载

这是一个通过mdev规则实现可移动设备(U盘,SD卡)自动挂载的例子,它的功能和mini2440文件系统中/sbin/hotplug类似,只是用shell脚本实现。这个脚本来自互联网,借此希望给各位一些设备挂载和hotplug的概念,欢迎各位加入讨论这个话题。

要使用automount.sh脚本,你需要
1. 在/etc/mdev.conf的最后加入下面两行。注意,因为mdev在匹配规则时总是用第一个匹配到的规则,因此新加入的规则不会影响原来对于SD卡和U盘的处理,只是增加了对于原来不支持的情况,比如没有分区表或超过一个分区时候的处理。

复制代码
  1. #automount
  2. mmcblk[0-9]*    0:0    0600    */sbin/automount.sh $MDEV
  3. sd[a-z][0-9]*    0:0    0600    */sbin/automount.sh $MDEV

可以看到,当SD卡或U盘插入/拔出时,mdev都会自动调用/sbin/automount.sh脚本。传入脚本的参数是环境变量MDEV的值,根据busybox源代码目录下docs/mdev.txt中的描述,这个环境变量的值是当前发生变化的设备名称,也就是像"mmcblk0"或者"sda2"这样的设备名称。

2. 在/sbin目录下添加automount.sh脚本,内容如下:
复制代码
  1. #from http://clc168.blogspot.com/2008/04/arm-embedded-linuxautomount.html
  2. #! /bin/sh
  3. if [ "$1" == "" ]; then
  4.     echo "parameter is none" > /tmp/error.txt
  5.     exit 1
  6. fi
  7. mounted=`mount | grep $1 | wc -l`
  8. # mounted, assume we umount
  9. if [ $mounted -ge 1 ]; then
  10.     echo "R/media/$1" >> /tmp/usbmnt.log
  11.     echo "R/media/$1" > /tmp/fifo.1
  12.     if ! umount "/media/$1"; then
  13.         exit 1
  14.     fi
  15.     if ! rmdir "/media/$1"; then
  16.         exit 1
  17.     fi
  18. # not mounted, lets mount under /media
  19. else
  20.     if ! mkdir -p "/media/$1"; then
  21.         exit 1
  22.     fi
  23.     if ! mount "/dev/$1" "/media/$1" 2>> /tmp/error.txt ; then
  24.     # failed to mount, clean up mountpoint
  25.         if ! rmdir "/media/$1"; then
  26.             exit 1
  27.         fi
  28.         exit 1
  29.     fi
  30.     echo "A/media/$1" >> /tmp/usbmnt.log
  31.     echo "A/media/$1" > /tmp/fifo.1
  32. fi
  33. exit 0

这个脚本非常简单,基本上可以是self explanation的了。

这样,插入不包含分区表或者多于一个分区的U盘或者SD卡后,就可以在/media/目录下找到相应的挂载点。
"If you have an apple and I have an apple and we exchange apples, then you and I will
still each have one apple. But if you have an idea and I have an idea and we exchange
these ideas, then each of us will have two ideas."
自由,自强,共享,共创。
级别: 论坛版主
UID: 12573
精华: 27
发帖: 8838
金钱: 46490 两
威望: 9298 点
综合积分: 18216 分
注册时间: 2010-01-09
最后登录: 2019-07-16
1楼  发表于: 2010-02-07 17:39
很有参考价值!
新手如何向我们反馈有效的信息,以便解决问题,见此贴:
http://www.arm9home.net/read.php?tid-14431.html

[注]: 此处签名链接仅为指引方向,而非解答问题本身.
Fighting!
级别: 侠客
UID: 1635
精华: 0
发帖: 111
金钱: 635 两
威望: 135 点
综合积分: 222 分
注册时间: 2008-09-16
最后登录: 2018-02-08
2楼  发表于: 2010-02-07 17:58
正准备做呢,没有想到这里分析得这么的清楚
谢谢了!
QT 的布局怎么搞?
级别: 侠客
UID: 5575
精华: 0
发帖: 81
金钱: 485 两
威望: 193 点
综合积分: 162 分
注册时间: 2009-04-29
最后登录: 2013-12-02
3楼  发表于: 2010-02-23 10:53
感谢分享.
学习,学习!
SBC2410+8' LCD
mini2440+NEt 3.5'
嵌入式致力于物联网,期待结果
级别: 新手上路
UID: 18802
精华: 0
发帖: 32
金钱: 160 两
威望: 32 点
综合积分: 64 分
注册时间: 2010-04-13
最后登录: 2013-03-12
4楼  发表于: 2010-09-11 10:03
正在找资料的  
级别: 新手上路
UID: 1916
精华: 0
发帖: 40
金钱: 205 两
威望: 41 点
综合积分: 80 分
注册时间: 2008-10-11
最后登录: 2012-03-31
5楼  发表于: 2010-09-16 13:37
看看
级别: 侠客
UID: 2535
精华: 0
发帖: 73
金钱: 690 两
威望: 626 点
综合积分: 146 分
注册时间: 2008-11-23
最后登录: 2011-12-15
6楼  发表于: 2011-12-06 13:36
感谢版主,不错