Busybox下mdev配置说明

https://www.cnblogs.com/OpenShiFt/p/6008562.html

mdev说明

mdev是busybox自带的一个简化版的udev,适合嵌入式应用场合。其具有使用简单的特点。它的作用就是在系统启动和热插拔或动态加载驱动程序时,自动产生驱动程序所需要的节点文件。在以busybox为基础构建嵌入式linux根文件系统时,使用它时最优的选择。

mdev原理

mdev不加参数时就是利用hotplug机制来决定创建什么样的设备文件。
mdev -s程序通过扫描/sys/class和/sys/block中所有的类设备目录,利用这些信息在/dev下创建设备节点。

mdev使用

mdev在使用过程中分为两部分,由于系统启动时mdev需要根据/sys目录下的信息来生成设备节点,因此在使用前需要对系统进行一些配置。mdev同过hotplug机制来创建设备节点是根据/etc/mdev.conf文件来生成设备节点的。
系统设置

在系统执行mdev -s前需要执行如下操作:

配置内核

make menuconfig
    General setup ---->
    Configure standard kernel features (for small systems) ---->
   [*] load all symbols for debugging/ksymoops
   [*] Include all symbols in kallsyms
   [*] Support for hot-pluggable devices
   [*] Enable support for printk

配置busybox

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

系统启动时

vi  /etc/init.d/rcS
        mount -t tmpfs tmpfs /dev 
        mkdir /dev/pts
        mount -t devpts devpts /dev/pts
        mount -t proc proc /proc 
        mount -t sysfs sysfs /sys
        echo /sbin/mdev>/proc/sys/kernel/hotplug//启动热插拔事件;
        mdev –s

首先挂载**/dev、/dev/pts、/proc和/sys文件系统**,mdev需要用到这些文件系统。然后告诉系统当有设备热插拔时,使用mdev来处理。最后执行mdev -s来扫描系统中的设备和驱动等。

配置文件/etc/mdev.conf

系统中的hotplug是通过mdev.conf文件来生成设备节点的,该配置文件格式如下:

基本格式

<device regex>   <uid>:<gid>  <octal permissions>
<device regex>       :设备名称,支持正则表达式如hd[a-z][0-9]*等
<uid>:<gid>          :用户ID和组ID
<octal permissions>  :八进制表示的设备属性

执行脚本格式

<device regex>   <uid>:<gid>  <octal permissions> [=|>path] [@|$|*]
[=|>path]:这个选项可以更改设备节点的命名和路径,如:
          <1> =/driver: 可以将设备节点移动到driver目录下
          <2> =newname: 可以讲设备节点改为newname命名
          <3> >/driver/newname: 可以在/driver目录下创建一个设备节点的链接,并命名为newname
[@|$|*]:这个选项当设备匹配成功时,执行指令,这个指令可以是自己编写的脚本。前面的符号含义如下:
          <1>@:在设备节点创建完执行
          <2>$:在设备节点删除前执行
          <3>*:在设备节点创建完和删除前执行

此外在mdev成功匹配设备后会设置两个系统变量 M D E V 和 MDEV和 MDEVACTION。其中 M D E V 用 来 存 放 匹 配 到 的 设 备 名 , MDEV用来存放匹配到的设备名, MDEVACTION用来存放设备插拔状态其值为add和remove。这两个变量可以在脚本中使用。

脚本实例

mdev.conf
# system all-writable devices
full    0:0 0666
null    0:0 0666
ptmx    0:0 0666
random  0:0 0666
tty 0:0 0666
zero    0:0 0666

# console devices
tty[0-9]*   0:5 0660
vc/[0-9]*   0:5 0660

# serial port devices
s3c2410_serial0 0:5 0666    =ttySAC0
s3c2410_serial1 0:5 0666    =ttySAC1
s3c2410_serial2 0:5 0666    =ttySAC2
s3c2410_serial3 0:5 0666    =ttySAC3

# loop devices 
loop[0-9]*  0:0 0660    =loop/

# i2c devices
i2c-0   0:0 0666    =i2c/0
i2c-1   0:0 0666    =i2c/1

# frame buffer devices
fb[0-9] 0:0 0666

# input devices
mice    0:0 0660    =input/
mouse.* 0:0 0660    =input/
event.* 0:0 0660    =input/
ts.*    0:0 0660    =input/

# rtc devices
rtc0    0:0 0644    >rtc
rtc[1-9]    0:0 0644

# misc devices
mmcblk0p1   0:0 0600    =sdcard */bin/hotplug.sh
mmcblk0 0:0 0600    =mmcblk0 */bin/hotplug.sh
sda1    0:0 0600    =udisk * /bin/hotplug.sh

/bin/hotplug.sh
#!/bin/sh

case $MDEV in
sda1)
    DEVNAME=udisk
    MOUNTPOINT=/udisk
    ;;
mmcblk0p1)
    DEVNAME=sdcard
    MOUNTPOINT=/sdcard
    ;;
mmcblk0)
    DEVNAME=mmcblk0
    MOUNTPOINT=/sdcard 
    ;;  
*)
    exit 0
    ;;
esac

case $ACTION in
remove)
    /bin/umount $MOUNTPOINT || true
    rmdir $MOUNTPOINT >/dev/null 2>&1 || true
    ;;
*)
    /bin/mkdir $MOUNTPOINT > /dev/null 2>&1 || true
    /bin/mount -o sync -o noatime -o nodiratime -t vfat /dev/$DEVNAME $MOUNTPOINT > /dev/null 2>&1 || true
    ;;
esac

exit 0

转载请注明地址:http://www.cnblogs.com/OpenShiFt/ 谢谢!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值