如何使用busybox精简版本udev程序--mdev动态创建插入的u盘和鼠标等设备

busybox的mdev是一个精简了的udev管理程序,它可以间接的以hotplug方式被内核调用,进而在arm平台上/dev目录下动态创建设备节点,因为hotplug会被内核发送uevent之前调用,所以如果动态可插拔设备很多,很频繁,那么每次内核都会调用elf格式的用户空间的 hotplug,生成一个独立的hotplug程序来处理,所以hotplug是一个非常笨重的实现方法,但是在我们的arm开发板上,可插拔设备并没有想象中的频繁

目前还没有必要移植完全版的udev,所以完全可以在不复杂的嵌入式设备上使用mdev来管理动态节点,

方法也很简单,就是在rcS脚本中加入下面一句,将用户空间的应用程序路径传递给内核,

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

之后kernel会在每次设备出现变动时调用上面一句传递进去的用户空间应用程序/sbin/mdev来处理对应的信息,进而mdev应用程序操作/dev目录下的设备,进行添加或删除,可以参考添加hotplug函数到内核,监控uevent信息

mdev的另外一个很有用的地方是,他可以通过proc和sys文件系统来动态整理出注册的设备,进而到/dev/下生成他们对应的节点,

使用该功能之前必须mount上proc和sys文件系统,然后简单的执行下面的一句就弯成了:

mdev -s

如果需要编译udev,下面是udev的下载地址:http://www.us.kernel.org/pub/linux/utils/kernel/hotplug/udev-145.tar.bz2

这个哥们也说得比较详细:

http://203.208.39.132/search?q=cache:c8dPpXQD5HwJ:jimmy-lee.blog.hexun.com/31155612_d.html+busybox+hotplug&cd=9&hl=zh-CN&ct=clnk&gl=cn&st_usg=ALhdy28vvvlS7owkZsMZfoX5oCEEE3l8aA

1, busybox 添加mdev支持

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

#mount filesystem

/bin/mount -a

#start mdev

#设置系统的hotplug 程序为mdev

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

#扫描并创建节点,这一步可不能少

mdev –s

/etc/fstab的内容如下:

proc    /proc   proc    defaults    0       0

none    /tmp    ramfs   defaults 0       0

mdev    /dev    ramfs   defaults 0       0

sysfs   /sys    sysfs   defaults    0       0

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

解决使用mdev时“cannot create /proc/sys/kernel/hotplug :nonexistent directory”错误

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

CONFIG_PROC_FS=y

CONFIG_PROC_SYSCTL=y

CONFIG_HOTPLUG=y

CONFIG_NET=y

如果CONFIG_HOTPLUG和CONFIG_NET不选或没全选上的话,/proc/sys/kernel下将不会创建 hotplug文件.(参见kernel/sysctl.c)

mdev动态创建插入硬件设备相关推荐

  1. Jetson AGX Orin 连接自定义硬件设备(pinmux + 设备树)

    环境信息 Ubuntu 20.04.4 LTS 64-bit Linux kernel: tegra 5.10.65 JetPack 5.0.1-b118 目标 在Jetson AGX Orin上接入 ...

  2. js学习-DOM之动态创建元素的三种方式、插入元素、onkeydown与onkeyup两个事件整理...

    动态创建元素的三种方式: 第一种: Document.write(); <body> <input type="button" id="btn" ...

  3. 驱动中动态创建设备号、设备节点

    在Linux驱动(三)字符设备驱动框架中,我们简要介绍了如何编写一个简单的驱动框架,并总结了步骤 1.生成设备号 2.向内核注册该设备号 3.初始化设备对象,完成操作方法集 4.向内核注册该设备对象 ...

  4. D3D11设备接口的动态创建方法

    在微软的例子中,提供了一种动态创建ID3D11Device接口指针的方法,发在这里,供大家参考.该方法的优势就是可以方便的判定系统中是否支持D3D11,并且针对可能的情况,通过MessageBox的方 ...

  5. gpg加密命令 linux_用 PGP 保护代码完整性(五):将子密钥移到一个硬件设备中 | Linux 中国...

    在这个系列教程中,将为你提供使用 PGP 和保护你的私钥的最佳体验.-- Konstantin Ryabitsev致谢译自 | linux.com 作者 | Konstantin Ryabitsev译 ...

  6. Javascript:DOM动态创建元素实例应用

    <!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8" ...

  7. Angular动态创建组件之Portals

    本文主要介绍使用Angular api 和 CDK Portals两种方式实现动态创建组件,另外还会讲一些跟它相关的内容.如:Angular多级依赖注入.ViewContainerRef,Portal ...

  8. mysql 存储过程 动态建表_MySQL存储过程动态创建表,数据分表

    BEGIN DECLARE `@i` int(11); DECLARE `@siteCount` int(11); DECLARE `@sqlstr` VARCHAR(2560); DECLARE ` ...

  9. Atitit.获取主板与bios序列号获取硬件设备信息  Wmi wmic 的作用

    Atitit.获取主板与bios序列号获取硬件设备信息  Wmi wmic 的作用 1 获取硬件核心基础核心基础Wmi1 2 其他资料2 3 Wmic WMI 命令行接口2 4 Atitit.获取主板 ...

最新文章

  1. byte endian(biglittle endian)
  2. windows上安装zipMongoDB安装包
  3. 玩转双核CPU:左手画圆,右手画方
  4. Xilinx_ISE和ModelSim的联合使用方法 / 从Xilinx ISE 14.7启动ModelSim时遇到的问题
  5. 网站重新解析换服务器,更换解析服务器地址
  6. 基于SSM的学生社团管理系统
  7. 用火箭送快递?淘宝宣布联合蓝箭航天起启动“宝箭”计划...
  8. 蒙德里安的梦想 状态压缩DP (1)
  9. CPU T9500-p9500-T9400-T9300-p8700各种小黑主流处理器对比分析
  10. 旋转木马图片效果图,轮播图
  11. 亲水性小分子PEG DBCO-PEG4-酸,1416711-60-8可以进行点击化学反应
  12. Python中的 len() 是什么?如何使用 len() 函数查找字符串的长度
  13. FMDB與SQLite 數據庫應用示範:打做一隻簡單的電影資料庫 App
  14. 一种自动将3DMax模型转换为UE4直接可用的模型资源的方法与流程
  15. 抖音电商副总裁木青:抖音电商正在成为服饰行业的增量风口
  16. 免费修复受损的mp4视频文件
  17. Eigrp恶意插入路由和致瘫攻击测试(一)
  18. 关闭联通游戏代扣费的功能
  19. LeetCode存在重复 的五种解法
  20. Python列表(获取列表中指定元素的索引、获取列表中的多个元素、判断指定元素是否在列表中存在、列表元素的遍历、列表元素的增加操作、 列表元素的删除操作、列表元素的修改操作、列表元素的排序操作)

热门文章

  1. Springboot:拦截器和过滤器
  2. 【转摘】著名画家毕建勋 学画笔记
  3. Java修饰符都有什么
  4. 无延时直播/超低延时直播画面同步性测试(实测组图)
  5. RAID磁盘阵列、mdadm、群晖软RAID
  6. mysql如何启动和配置
  7. STM32常用协议之串口通信详解
  8. 华院计算|切比雪夫,他带起了俄罗斯现代数学的发展
  9. BT下载到底是什么意思啊?
  10. 那些让你“相见恨晚”的数据分析软件,一般人我不告诉他