linux嵌入式系统中mdev的配置

原创 2011年01月15日 14:48:00

1、mdev是什么。

busybox的mdev是一个精简了的udev管理程序,而udev是linux2.6内核引入的一种新的设备文件管理机制,用于取代老的devfs.udev最大的有点就是可以动态的管理/dev目录下的设备文件,而不用再系统初始化时就将可能要用到的设备都创建起来,还可以根据设备具体信息命名设备节点,而不是有内核统一分配。

 

2、如何在嵌入式系统中开启mdev。

  1)在busybox中添加对mdev的支持。

 

  2)在/etc/rc.d/rcS中添加

  #在/sys中挂载sysfs文件系统,它是mdev运行的基础条件之一

  mount -t sysfs sysfs /sys

 

  #设置系统的hotplug程序为mdev

  echo /sbin/mdev > /proc/sys/kernel/hotplug  

  

  #mdev程序检索/sys和/proc中文件系统的设备信息,在/dev中生成相应的设备节点

  mdev –s

 

 

 

  3)确保编译内核时编译如下选项:

  CONFIG_PROC_FS=y

  CONFIG_PROC_SYSCTL=y

  CONFIG_HOTPLUG=y

  CONFIG_NET=y

 

  注:根据udev官方文件的介绍(http://git.kernel.org/?p=linux/hotplug/udev.git;a=blob;hb=HEAD;f=README),编译udev需要配置如下选项;最好采用2.6.27及其以后版本。

  CONFIG_HOTPLUG=y

  CONFIG_UEVENT_HELPER_PATH=""
  CONFIG_NET=y
  CONFIG_UNIX=y
  CONFIG_SYSFS=y
  CONFIG_SYSFS_DEPRECATED*=n
  CONFIG_PROC_FS=y
  CONFIG_TMPFS=y
  CONFIG_INOTIFY_USER=y
  CONFIG_SIGNALFD=y
  CONFIG_TMPFS_POSIX_ACL=y (user ACLs for device nodes)
  CONFIG_BLK_DEV_BSG=y (SCSI devices)
 
  4)建立/etc/uedv/udev.conf文件,一般定义如下几个参数:

udev_root:udev 产生的设备所存放的目录,默认值是 /dev/。建议不要修改该参数,因为很多应用程序默认会从该目录调用设备文件。
udev_db:udev 信息存放的数据库或者所在目录,默认值是 /dev/.udev.tdb。
udev_rules:udev 规则文件的名字或者所在目录,默认值是 /etc/udev/rules.d/。
udev_permissions:udev 权限文件的名字或者所在目录,默认值是 /etc/udev/permissions.d/。
default_mode/ default_owner/ default_group:如果设备文件的权限没有在权限文件里指定,就使用该参数作为默认权限,默认值分别是:0600/root/root。
udev_log:是否需要 syslog记录 udev 日志的开关,默认值是 no。

  

  5)在/etc/udev/rules.d/目录下建立需要的规则文件*.rules,mdev会自动搜索这些文件内容,最终得到设备节点的名称、权限等。关于规则文件的如何撰写,请参见“跟我一起写udev规则” 一文。

 

      

 

  

 

执行mdev -s :以‘-s’为参数调用位于 /sbin目录写的mdev(其实是个链接,作用是传递参数给/bin目录下的busybox程序并调用它),mdev扫描 /sys/class 和 /sys/block 中所有的类设备目录,如果在目录中含有名为“dev”的文件,且文件中包含的是设备号,则mdev就利用这些信息为这个设备在/dev 下创建设备节点文件。一般只在启动时才执行一次 “mdev -s”。

 

热插拔事件:由于启动时运行了命令:echo /sbin/mdev > /proc/sys/kernel/hotplug ,那么当有热插拔事件产生时,内核就会调用位于 /sbin目录的mdev。这时mdev通过环境变量中的 ACTION 和 DEVPATH,来确定此次热插拔事件的动作以及影响了/sys中的那个目录。接着会看看这个目录中是否有“dev”的属性文件,如果有就利用这些信息为这个设备在/dev 下创建设备节点文件。

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

linux中的热插拔和mdev机制(深入理解嵌入式linux文件系统的制作)

mdev是busybox自带的一个简化版的udev。    作用是在系统启动和热插拔 或动态加载驱动程序时,自动产生驱动程序所需的节点文件,在文件系统中的/dev目录下的设备节点都是由mdev创建的 ...
  • ce123
  • ce123
  • 2011-08-09 21:47
  • 5784

嵌入式系统Linux内核开发工程师必须掌握的三十道题

嵌入式系统Linux内核开发工程师必须掌握的三十道题      如果你能正确回答以下问题并理解相关知识点原理,那么你就可以算得上是基本合格的Linux内核开发工程师,试试看!     1)...

ARM9嵌入式系统设计(基于S3C2410与Linux)——第二篇ARM体系结构

1)ARM体系结构特点:1.RISC型处理器结构 2.Thumb指令集 3.多处理状态模式 4.嵌入式在线仿真调试 5.灵活和方便的接口 6.低电压低功耗的设计                   ...

linux嵌入式系统开发之触摸屏---驱动篇(上/硬件原理) .

http://blog.csdn.net/l460602540/article/details/6885790 时间:3月20日 地点:咖啡厅 “小涛哥,你说上节课讲的触摸屏应用的部分,从测...

嵌入式系统Linux内核开发工程师必须掌握的三十道题

转载自:http://blog.csdn.net/uyiwfn/article/details/7636130 1) Linux中主要有哪几种内核锁? 2) Linux中的用户模式和内核模式是什么...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)