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机制

mdev是busybox自带的一个简化版的udev。     作用是在系统启动和热插拔 或动态加载驱动程序时,自动产生驱动程序所需的节点文件,在文件系统中的/dev目录下的设备节点都是由mdev创建的...
  • qq_21792169
  • qq_21792169
  • 2015年12月12日 11:18
  • 15493

hotplug_uevent机制_修改mdev配置支持U盘自动挂载学习笔记

1、接入U盘,看输出打印信息并分析 (1)输出信息 自动创建设备节点 (2)用ls命令查看 这里/dev/sda表示整个U盘,/dev/sda1表示这个U盘的第一个分区。 (3)手动挂载,查看...
  • qingkongyeyue
  • qingkongyeyue
  • 2016年11月26日 17:01
  • 697

Linux 设备文件的创建和mdev

本文是嵌入式企鹅圈开篇--《linux字符设备驱动剖析》的姐妹篇,在上述文章里面我们详细描述了字符设备驱动框架涉及的驱动注册、通过设备文件来访问驱动等知识,并明确通过device_create接口并结...
  • yueqian_scut
  • yueqian_scut
  • 2015年07月06日 10:43
  • 3414

linux_ping_mdev

在运行 ping 命令的时候,里面有一项输出叫 mdev,如下所示:   ~% ping www.google.pt PING www.l.google.com (72.14.203.103) ...
  • mikyz
  • mikyz
  • 2017年04月06日 17:29
  • 189

mdev的使用方法和原理。

 mdev的使用方法和原理mdev是busybox自带的一个简化版的udev,适合于嵌入式的应用埸合。其具有使用简单的特点。它的作用,就是在系统启动和热插拔或动态加载驱动程序时,自动产生驱动程序所需的...
  • hugerat
  • hugerat
  • 2008年12月03日 14:08
  • 33685

通过mdev实现Linux下U盘自动挂载(笔记)

系统环境:Loongson-1B开发板(mips32指令集)、busybox1.19.2、Linux2.6.21、文件系统配置参照本博客文章《移植Busybox与构建根文件系统》编译环境:ubuntu...
  • liukun321
  • liukun321
  • 2014年10月15日 10:45
  • 6277

udev和mdev学习总结

Udev介绍 Udev分为三个子计划:namedev,libsysfs和udev。Namedev为设备命名子系统,libsysfs提供访问sysfs文件系统,从中获取信息的标准接口。Udev是提...
  • michaelcao1980
  • michaelcao1980
  • 2014年09月16日 11:12
  • 2535

mdev 的使用方法和原理

mdev 的使用方法和原理 原文网址:http://blog.csdn.net/hugerat/archive/2008/12/03/3437099.aspx mdev 是busybox 自带的一...
  • ssdsafsdsd
  • ssdsafsdsd
  • 2013年04月04日 14:45
  • 6555

mdev.c分析(二)

/* mknod in /dev based on a path like "/sys/block/hda/hda1"  * NB1: path parameter needs to have SC...
  • u010445505
  • u010445505
  • 2014年10月22日 22:32
  • 697

arm linux下使用mdev vs udev

1.mdev 2.udev
  • songqqnew
  • songqqnew
  • 2013年12月22日 22:32
  • 1716
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:linux嵌入式系统中mdev的配置
举报原因:
原因补充:

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