udev-FAQ 中文翻译

news/2024/7/3 4:27:46
udev-FAQ 中文翻译
原文出处 http://www.kernel.org/pub/linux/util...tplug/udev-FAQ
中文翻译 王旭 http://gnawux.blogchina.com
本文档遵循 GPL 2 及以后版本发布,修改、发布请保持许可证不变

问: udev是什么? 它的目的何在?
答: 看看那篇 OLS 2003 上的有关 udev 的文章吧,可以在 docs 目录里找到,也能在这
里找到:

OLS 2003 上还有一个关于 udev 的幻灯片,可以在这里找到:


问: udev 和 devfs 是什么关系
答: udev 完全在用户态 (userspace) 工作,利用设备加入或移除时内核所发送的
hotplug 事件 (event) 来工作。关于设备的详细信息是由内核输出 (export) 到位
于 /sys 的 sysfs 文件系统的。所有的设备命名策略、权限控制和事件处理都是在
用户态下完成的。与此相反,devfs 是作为内核的一部分工作的。

问: 如果 udev 不能完成所有 devfs 的工作的话,为什么把 devfs 标记为
OBSOLETE/removed?
答: 引用 Al Viro (Linux VFS 内核维护者):
- devfs 所做的工作被确信可以在用户态来完成。
- devfs 被加入内核之时,大家寄望它的质量可以迎头赶上。
- devfs 被发现了一些可修复和无法修复的 bug。
- 对于可修复的 bug,几个月前就已经被修复了,其维护者认为一切良好。
- 对于后者,同样是相当常一段时间以来没有改观了。
- devfs 的维护者和作者对它感到失望并且已经停止了对代码的维护工作。

问: 但是当一个并不存在的 /dev 节点被打开的时候,udev 并不能如 devfs 一样自动加
载驱动程序。
答: 的确如此,但 Linux 的设计是在设备被发现的时候加载模块,而不是当它被访问的时
候。

问: 不过等等,我确实希望 udev 可以在不存在的节点被打开的时候自动加载驱动。这是
我使用 devfs 的唯一原因了。给 udev 增加这个功能吧。
答: 不,udev 是用来管理 /dev 的,不是用来加载内核驱动的。

问: 嗨,求你们了。这不难做到的。
答: 这么个功能对于一个配置正确的计算机是多余的。系统中所有的设备都应该产生
hotplug 事件、加载恰当的驱动,而 udev 将会注意到这点并且为它创建对应的
设备节点。如果你不想让所有的设备驱动停留在内存之中,应该使用其它东西来
管理你的模块 (如脚本, modules.conf, 等等) 这不是 udev 的工作。

问: 但是我真的喜欢那个功能,还是加上吧
答: devfs 用的方法导致了大量无用的 modprobe 尝试,以此程序探测设备是否存在。
每个试探性探测都新建一个运行 modprobe 的进程,而几乎所有这些都是无用的。

问: 我喜欢 devfs 的设备文件命名方式,udev 可以这样命名么?
答: 可以,udev 可以使用 /dev 的命名策略来创建节点。通过一个配置文件,可以把内
核缺省的名字映射到 devfs 的名字。可以看看 udev 中带的 udev.rules.devfs 文
件。
注意: devfs 的命名方式是不被建议并且不被官方支持的,因为它所用的简单枚举设
备的方式在设备可能被随时加入或删除的情况下确实是一个比较笨的方法。这些编号
代给你的将只有麻烦,而并不能用来确定设备。看看那个永久性磁盘 (persistent
disk) 的规则就知道如何在用户态下正确的做这件事,而不是傻傻地列出设备。

问: udev 可以为哪些设备创建节点?
答: 所有在 sysfs 中显示的设备都可以由 udev 来创建节点。如果内核中增加了其它设
备的支持,udev 也就自动地可以为它们工作了。现在所有的块设备都在被支持之列,
大部分的主字符设备也是被支持的。内核开发者们正致力于让所有的字符设备都被支
持。可以到 linux-kernel 邮件列表上寻找补丁或是查看补丁的状态。

问: udev 是否会去掉匿名设备数量的限制?
答: udev 完全工作于用户态。如果内核支持了更多的匿名设备,udev 就会支持。

问: udev 是否会支持符号链接?
答: udev 现在就支持符号链接,每个设备节点拥有多个符号链接也是被支持的。

问: udev 如何处理 /dev 文件系统?
答: 建议使用一个每次启动系统的时候重新创建的 tmpfs 作为 /dev 的文件系统。不过
实际上 udev 并不关心那种文件系统在被使用。

问: 在 init 运行之前,udev 如何处理设备?
答: udev 可以被放入 initramfs 之中,并在每个设备被发现的时候运行。也可以让
udev 工作在一个真的根分区被加载之后根据 /sys 的内容创建的初始 /dev 目录
之中。

问: 我是否可以利用 udev 在一个 USB 设备被加载的时候自动加载上这个设备?
答: 技术上讲是可以的,但是 udev 不是用于这个工作的。所有的主流发布版 (distro)
都包含了 HAL ( http://freedesktop.org/wiki/Software_2fhal) 用于这个工作,它
也是专门用于监视设备变更的,并且集成进入了桌面软件。

换个角度说,这可以简单的通过 fstab 来实现:
/dev/disk/by-label/PENDRIVE /media/PENDRIVE vfat user,noauto 0 0

这样,用户可以用如下命令来访问设备:
$mount /media/PENDRIVE
同样不需要管理员权限,但却拥有了设备的全部访问权限。使用永久性磁盘链接
(label, uuid) 将可以指定同一设备,无论其实际上的内核名字是什么。

问: 有什么我需要注意的安全问题么?
答: 当使用动态设备编号的时候,一个给定的主/从设备号可能在不同时间对应不同的设
备,如果一个用户拥有对这个节点的访问权限,并且可以创建一个到这个节点的硬链
接,他就可以如此得到一个这个设备节点的拷贝。当设备被移除之后,udev 删除了
设备节点,但硬链接依然存在。如果这个设备节点之后被重新使用不同的访问权限被
创建的时候,其硬链接仍然可以使用先前的访问权限来访问。
(同样的问题也存在在使用 PAM 改变访问权限的 login 上。)

简单的解决方案就是通过把 /dev 放在 tmpfs 这样的单独的文件系统之上来防止建
立硬链接。

问: 我有其他的关于 udev 的问题,我应该问谁?
答: linux-hotplug-devel 正是问这些的地方。邮件列表的地址是
linux-hotplug-devel@lists.sourceforge.net
加入邮件列表的相关信息可以在如下地址找到
[post]https://lists.sourceforge.net/lists/listinfo/linux-hotplug-devel[/post]
邮件列表的上的既往讨论记录可以在下面地址找到
[post]http://marc.theaimsgroup.com/?l=linux-hotplug-devel[/post][@more@]

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/7507082/viewspace-858998/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/7507082/viewspace-858998/


http://www.niftyadmin.cn/n/4441553.html

相关文章

数字银行OakNorth获软银投资,成欧洲估值最高金融科技独角兽 ...

据美国财经媒体CNBC消息,英国数字银行OakNorth在近日确认,该公司已在日本软银集团领投的一个投资回合中筹集到了4.4亿美元资金。 据悉,这个投资回合对OakNorth的估值为28亿美元,这意味着OakNorth从一家年轻的金融科技初创企业一举…

RHEL3复习点和RHEL4知识点补充(转)

RHEL3复习点和RHEL4知识点补充(以RHEL4为基础)补充部分是参考JACKSON兄和SUDDENLY5171兄的总结大作!链接在此:http://www.linuxsir.org/bbs/showthread.php?t200208[ TROUBLESHOOTING ] 1.各重要命令与文件的RPM包出处表。&#…

[20190211]简单测试端口是否打开.txt

[20190211]简单测试端口是否打开.txt--//昨天看一个链接,提到如果判断一个端口是否打开可以简单执行如下:--//参考链接:https://dba010.com/2019/02/04/check-if-a-port-on-a-remote-system-is-reachable-without-telnet/1.测试:# cat < /dev/tcp/192.168.100.40/1521# echo…

linux/unix实用基本命令

linux/unix实用基本命令完整版 用户在登录前&#xff0c;首先要向系统管理员申请一个用户注册名&#xff0c;不论用户从哪台计 算机登录到ITPNET上都将访问相同的文件系统。 1.1 登录 当屏幕上出现Login提示符时&#xff0c;用户可以输入自己的用户注册名&#xff0c;并按回车键…

CNCF案例研究:京东

京东如何在超大规模的电子商务中率先采用Kubernetes 公司&#xff1a;京东地点&#xff1a;中国北京行业&#xff1a;电子商务 挑战 京东有超过3亿活跃用户&#xff0c;2017年总收入超过550亿美元&#xff0c;是中国最大的零售商&#xff0c;其业务是超大规模的缩影。例如&…

windows文件关联的奇招酷技

1.这个文件该用什么程序打开&#xff1f; 如果你不知道doc后缀的文件类型用什么程序打开&#xff0c;可以访问http://shell.windows.com/fileassoc/0409/xml/redir.asp?Extdoc&#xff0c;当然&#xff0c;实际使用时&#xff0c;请将“”号后面的扩展名换成自己想要查询的扩…

Linux学习基础02_N36032

1、将当前系统登录用户的信息转换为大写后保存至/tmp/who.out文件中。tr a-z A-Z < /etc/issue >/tmp/who.out或者cat /etc/issue |tr a-z A-Z >/tmp/who.out 2、计算123..99100的总和。echo {1..100} | tr |bc 3、常用的用户及文件管理命令有哪些&#xff0c;并演示…

GRUB引导进单用户模式的三种方式

作为一个Linux系统管理员&#xff0c;你可能会把Linux 超级用户密码遗忘了&#xff0c;把/etc/inittab或/etc/rc.d/rc.sysinit之类文件误编辑&#xff0c;导致系统不能正常启动的恼人错误&#xff1f;而为了解决以上问题&#xff0c;你就需要进到linux根文件系统处于可读写状态…