现在的位置: 首页 > 综合 > 正文

linux嵌入式系统中mdev的配置

2017年11月24日 ⁄ 综合 ⁄ 共 1820字 ⁄ 字号 评论关闭

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 下创建设备节点文件。


抱歉!评论已关闭.