arm开发板实现U盘自动挂载和卸载
第一步:
配置内核Makefile
make menuconfig
General setup ---->
Configure standard kernel features (for small systems) ---->
| | --- Load all symbols for debugging/ksymoops
| | [ ] Include all symbols in kallsyms
| | [ ] Do an extra kallsyms pass
第二步:
配置busybox Makefile 支持mdev机制和.conf 配置文件
make menuconfig
Linux System Utilities ---->
[*] mdev
[*] Support /etc/mdev.conf
[*] Support subdirs/symlinks
[*] Support regular expressions substitutions when renaming device
[*]Support command execution at device addition/removal
[*] Support loading of firmwares
第三步:
查看启动自动执行脚本文件rcS:
# cat /etc/init.d/rcS
#!/bin/sh
ifconfig eth0 192.168.1.17
mount -a
mkdir /dev/pts
mount -t devpts devpts /dev/pts
echo /sbin/mdev > /proc/sys/kernel/hotplug //命令内核在增删设备时执行/sbin/mdev,使设备节点会被创建和删除
mdev -s //设置mdev,让它在系统启动时创建所有的设备节点
#
第四步:
查看mount -a 命令能够挂载的文件系统 /etc/fstab:
# cat /etc/fstab
# device mount-point type options dump fsck order
proc /proc proc defaults 0 0
tmpfs /tmp tmpfs defaults 0 0
sysfs /sys sysfs defaults 0 0 //执行mdev前要挂载 /sys
tmpfs /dev tmpfs defaults 0 0
mdev /dev tmpfs defaults 0 0
#
第五步:之前都是内核和文件系统的对mdev的支持准备工作,下面是具体的实现过程:[都是在2440开发板上执行]
1:首先创建一个用来显示USB里面内容的文件夹,我把他创建在/mnt目录下:mkdir /mnt/usb
2: 在/etc目录下面创建mdev.conf文件,并且编辑,内容如下:
sd[a-z]*[0-9] 0:0 0660 @(mount -t vfat -o iocharset=cp936 /dev/sd[a-z][0-9] /mnt/usb)
sd[a-z] 0:0 0660 $(umount /mnt/usb)
上面的内容是遵照所谓的正则表达式编写的,注意卸载部分,没有*[0-9],不然卸载会出问题。
通过以上五步可以实现U盘的自动挂载和卸载,现象如下:
系统启动后,插上U盘:
拔掉U盘后:
总结:
a:上面的mount -t vfat -o iocharset=cp936 ,其中vfat指定U盘的格式,-o iocharset=cp936可以把里面的中文文 件显示出来。
b: 正则表达式规则:
device regex:正则表达式,表示哪一个设备。
uid:owner
gid:组ID
octal permissions:以八进制表示的属性
比如:hd[a-z][0-9]* 0:3 660
当发现第一个匹配项时,就会根据这个匹配项进行配置。如果没有匹配项的话就会采用默认配置,默认的默认配置是:
0:0 660,当然我们我也可以自己定义,比如:.* 1:1 777
那么如果我们想要执行我们自己的命令应该怎么办呢?那就需要用下面的格式了:
@ 创建了设备之后运行
$ 删除设备之前运行
* 在创建设备之后和删除设备之前运行
arm开发板U盘自动挂载卸 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)