-------------
 MDEV入门
-------------

对于我们这些人知道如何使用的mdev ,底漆可能似乎跛。为
其他人的mdev是一个神秘的黑匣子,他们听到的是真棒,但不能
似乎得到他们的头周围它是如何工作的。因此,引物。

-----------
 基本使用
-----------

MDEV有两个主要用途:初始种群和动态更新。两
需要内核sysfs的支持,且必须挂载到/ sys 。对于动态
更新,你还需要有你的内核中启用热插拔。

下面是一个典型的init脚本的代码片段:

[0] mount -t proc proc /proc
[1] mount -t sysfs sysfs /sys
[2] echo /sbin/mdev > /proc/sys/kernel/hotplug
[3] mdev -s

或者,如果没有上述的procfs变为:

[1] mount -t sysfs sysfs /sys
[2] sysctl -w kernel.hotplug=/sbin/mdev
[3] mdev -s

当然,一个更“全”的设置将需要执行此之前,前
代码片段:

[4] mount -t tmpfs -o size=64k,mode=0755 tmpfs /dev
[5] mkdir /dev/pts
[6] mount -t devpts devpts /dev/pts

这里简单的解释是, [1]你需要有前/系统安装
执行MDEV 。随后你[ 2]命令内核执行/ sbin目录/ MDEV时,
有设备添加或删除,以便可以创建设备节点,或
销毁。然后你[3]种子为/ dev创建所有的设备节点
当系统被启动。

对于“完全”的设置,你要[4]确保/ dev是一个tmpfs文件系统
(假设你正在运行的闪存) 。那么你一定要为[ 5 ]创建
/ dev /点的挂载点,最后[6]挂载devpts文件系统就可以了。

-------------
 MDEV Config中( / etc / mdev.conf中)
-------------

MDEV有一个可选的配置文件,控制所有权/权限
设备节点,如果你的系统需要更多的东西比默认的根/根
660权限。

该文件的格式:
    <device regex> <UID> : <gid> <octal权限
 或@ <maj[,min1[-min2]]> <UID> : <gid> <octal权限

例如:
    HD [ Z] [0-9] * 0:3 660

配置文件解析停止在第一个匹配行。如果没有行
匹配,则使用默认的0:0 660 。要设置自己的默认值,只需
创建自己的比赛总像这样:
* 1:1 777

你可以重命名/移动设备节点使用的下一个可选字段。
<device regex> <UID> : <gid> <octal权限[ =路径]
所以,如果你想将设备放置节点到一个子目录,确保路径
有一个尾随/ 。如果你想要重命名的设备节点,只需将名称。
HDA 0:3 660 =驱动器/
这将朝着“ hda的”驱动器/子目录。
建屋局0:3 660 = CDROM
这将重命名“组屋” “CDROM” 。

同样, “路径”重命名/移动设备,但它也创造
的直接符号连接/ dev / DEVNAME中的改名/移动设备。

如果你也支持执行自己的命令,那么这个文件有
格式:
设备regex> <UID> : <gid> <octal权限[路径] [@ | $ | * <COMMAND> ]
    或
设备regex> <UID> : <gid> <octal权限[路径] [@ | $ | * <COMMAND> ]

例如:
--- 8 < ---
#块设备
([ HS ] D [ - Z] >磁盘/% )根盘660 1/0
([ HS ] D [ - Z] )( [0-9] + )根:磁盘660 >磁盘/% 1 /% 2
mmcblk ([0-9] + )根:磁盘660 >磁盘/ MMC / 1 % / 0
mmcblk ([0-9 ] + ) P( [0-9] + )根盘660盘/ MMC /% 1 /% 2
#网络设备
( TUN |抽头)根:网络660 >净额/ %1
--- 8 < ---

特殊字符的含义:
@创建设备节点后运行。
$运行,然后再删除该设备。
*运行后创建和删除该设备前。

通过执行命令system()函数(这意味着你给人一种
命令外壳) ,所以一定要确保你有一个壳安装在/ bin / sh的。你
还应该记住,内核执行热插拔佣工的标准输入,
stdout和stderr连接到/ dev / null的。

为了您的方便, shell的环境变量$ MDEV会被设置的设备名称。因此,如果
“ HDC ”的移动设备的匹配,将被设置为“ HDC ” MDEV 。

----------
 固件
----------

一些内核设备驱动程序在运行时,需要上传固件以
正确的初始化设备。请将所有的固件文件复制到
/ lib中/固件/目录。在运行时,内核将调用与MDEV
文件名的mdev的固件将加载的/ lib /固件/进入
内核通过sysfs接口。确切的文件名是硬编码在
内核,所以在那里,如果你需要知道如何在用户空间的文件命名。

------------
 序列
------------

内核不热插拔事件序列。增量SEQNUM环境
变每个热插拔历届调用。通常情况下, MDEV不在乎。
这可能会重新排列热插拔和热拔出事件,具有典型症状
有时不能创建设备节点,如预期的那样。

但是,如果被发现/ dev / mdev.seq的文件, MDEV将比较其
内容与SEQNUM 。将重试两秒钟,等待他们的
匹配。如果严丝合缝(甚至没有尾随' \ n'可以) ,
如果两秒钟后, MDEV将照常运行,那么它改写/ dev / mdev.seq的
与+1 SEQNUM 。

IOW :这将并发MDEV调用序列。

如果你想激活此功能,执行“回声>的/ dev / mdev.seq ” ,前
设置MDEV热插拔处理。这写单的'\ n '文件。
注: MDEV识别/ dev / mdev.seq的由单个'\ n“字符
作为一个特殊的情况。 IOW :这不会让你第一热插拔事件
两秒钟来搪塞

最新文章

  1. 遍历一个类的属性--并转换为Dictionary类型
  2. hdu 4756 MST+树形dp ****
  3. std::function,std::bind
  4. gnl总结(#,%,$)
  5. [转载] Linux下多路复用IO接口 epoll select poll 的区别
  6. LabVIEW数据记录和存储—XML文件
  7. 【博弈论】HDU 5754 Life Winner Bo
  8. HoG feature for human detection(HoG 行人识别)
  9. QTcpSocket 及 TCP粘包分析
  10. OS笔记047代理传值和block传值
  11. jQuery选择器---层次选择器总结
  12. iOS Label 自适应高度
  13. 动态规划———最长公共子序列(LCS)
  14. 蓝桥杯第十届真题B组(2019年)
  15. drf6 权限和频率控制组件
  16. dpkg:错误:正在解析文件 &#39;/var/lib/dpkg/updates/0014&#39; 第 0 行附近:在字段名 #padding 中有换行符问题的解决方法
  17. about unit test
  18. abaqus UMAT二次开发能用fortran90吗?
  19. 较老版本 AFNetworking 使用心得
  20. ArcGIS earth 1.0 beta体验报告——给我一个按钮我将转动整个地球

热门文章

  1. Spring集成MyBatis配置文件
  2. a标签的一些特殊使用
  3. 嵌入式开发为什么选择C语言作为开发语言?
  4. LeetCode No.148,149,150
  5. window下如何通过ssh从服务端copy数据文件
  6. 十一、linux-mysql的多种日志和引擎文件实战
  7. LGOJ3975 TJOI2015 弦论
  8. 用C语言实现的轴对称变换
  9. iOS运营级B2B服务平台App、自定义图标库、个人中心页面、识别身份证Demo、瀑布流等源码
  10. sqlserver命令创建数据库和表 demo