Busybox下mdev配置说明
[TOC]
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成功匹配设备后会设置两个系统变量$MDEV和$ACTION。其中$MDEV用来存放匹配到的设备名,$ACTION用来存放设备插拔状态其值为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
相关推荐
tianhuak 2020-11-24
86276537 2020-11-19
大牛牛 2020-10-30
flycappuccino 2020-09-27
卢从利 2020-10-10
无忧老猪 2020-10-09
学峰的学习笔记 2020-10-05
85216033 2020-09-16
兄dei努力赚钱吧 2020-09-06
89334799 2020-08-12
ruanhongbiao 2020-08-16
邓博学习笔记 2020-08-03
ningningmingming 2020-07-28
zhongzhiwei 2020-07-27
Jiajinjin 2020-07-27
manimnchn 2020-07-26
xiyoukeke 2020-07-19
ooouuuooouuu 2020-07-19
Proudoffaith 2020-07-18