Chinaunix首页 | 论坛 | 博客
  • 博客访问: 686260
  • 博文数量: 152
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1793
  • 用 户 组: 普通用户
  • 注册时间: 2013-09-12 12:26
个人简介

相信自己,只有不想做的,没有做不到的。

文章分类

全部博文(152)

文章存档

2021年(1)

2015年(2)

2014年(74)

2013年(75)

分类: LINUX

2013-11-15 23:52:44

原理先不讲,先给各位看官看一下实现的过程:

第一步:

配置内核Makefile 【2.6.22.6版本内核】

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  【1.7.0版本】支持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盘:


嵌入式linux的mdev机制【实现U盘自动挂载和卸载】 - 穆 - 穆
 


    拔掉U盘后:

嵌入式linux的mdev机制【实现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

那么如果我们想要执行我们自己的命令应该怎么办呢?那就需要用下面的格式了:
: [<@|$|*> ]
@ 创建了设备之后运行
$   删除设备之前运行
*    在创建设备之后和删除设备之前运行



也可以通过其他的方式来实现比如运行自己编写的脚本文件:我在其他的文章里介绍;

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