概述
首先给出udev的主页:http://www.kernel.org/pub/linux/utils/kernel/hotplug/udev.html
1.启动错误信息
使用NFS挂载minimal根文件系统,启动时出现mount nbd*设备失败信息。
分析应该是NFS文件系统注册了多个nbd*设备(可以从/sys/block/目录下查看到),而udev在coldplug处理阶段,会去mount这些设备,导致出现失败信息。
"etc/udev/rules.d/60-persistent-storage.rules"中有这么几行
"etc/udev/rules.d/local.rules"中有这么几行
"etc/udev/scripts/mount.sh"中有这么几行
显然可以在mount.blacklist中解决这个问题,如下所示
主要增加了最后一行。。。
2.udev的coldplug模式
内核在启动时已经检测到了系统的硬件设备,并把硬件设备信息通过sysfs内核虚拟文件系统导出。sysfs文件系统由系统初始化脚本挂载到/sys上。
udev是用户空间程序而且在内核启动后才start,因此需要基于sysfs文件系统来模拟热插拔事件。在boot 时,内核在sysfs下为所有的硬件设备创建名为uevent的文件,当udev启动时,它可以读取/sys下面所有的uevent文件并为每个冷插拔设备产生热插拔事件,然后udev再读取这些事件,生成对应的硬件设备文件。由于没有实际的硬件插拔动作,所以这一过程被称为coldplug。
3.udev的启动流程
详见"etc/rcS.d/S03udev"脚本。
对该脚本的分析有一点需要注意,就是shell编程中命令的成功执行用'0'表示,而执行失败用'1'表示,在命令行可以使用"echo $?"来获得上一个命令的返回值。与C编程最相悖的是,条件测试语句(譬如if then else)以'0'为真,'1'为假。
4.write udev rules
详见udev源码包的"docs/writing_udev_rules/index.html"
"find /sys -name dev" 可以找到需要为之建立规则的硬件设备。
利用udevinfo工具可以获得建立规则时需要的一些详细匹配信息。
最后
以上就是舒服树叶为你收集整理的minimal之udev的全部内容,希望文章能够帮你解决minimal之udev所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复