微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > arm开发板实现U盘自动挂载和卸载

arm开发板实现U盘自动挂载和卸载

时间:11-11 来源:互联网 点击:
原理先不讲,先给各位看官看一下实现的过程:

第一步:

配置内核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: 正则表达式规则:

: issions>

device regex:正则表达式,表示哪一个设备。

uid:owner

gid:组ID

octal permissions:以八进制表示的属性

比如:hd[a-z][0-9]* 0:3 660

当发现第一个匹配项时,就会根据这个匹配项进行配置。如果没有匹配项的话就会采用默认配置,默认的默认配置是:

0:0 660,当然我们我也可以自己定义,比如:.* 1:1 777

那么如果我们想要执行我们自己的命令应该怎么办呢?那就需要用下面的格式了:
: [<@|$|*> ]

@ 创建了设备之后运行

$ 删除设备之前运行

* 在创建设备之后和删除设备之前运行


Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top