操作系统

Udev(简体中文)
作者 Kathy 2007年07月15日 05:34

    Udev (简体中文)

    

     From ArchWiki

    

     Jump to:

    navigation

    ,

    search

    

    注意: 如果您是从DevFS升级到Udev, 请查看

    DevFS to Udev

    .

    这篇文档将介绍udev的一些新的变化。从084版开始,udev能够代替hotplug和coldplug的所有功能。正因为这样,hotplug包已经从Arch仓库中去掉了。

    Contents

    

     重要提示

    ...切记,在使用udev加载任何modules(内核模块)之前(无论是否是启动时自动加载),您必须在/etc/rc.conf将MOD_AUTOLOAD选项设置为yes ,否则您必须手动加载这些modules。您可以修改rc.conf中的MODULES或者使用modprobe命令来手动加载您所需要的modules。另一种方法是用hwdetect --modules生成系统硬件的modules列表,然后将这个列表添加到rc.conf中让系统启动时自动加载这些modules。

     基本需求

    

     最近更新

    

     模块禁用列表

    udev也会犯错或加载错误的模块。为了防止错误的发生,你可以使用模块禁用列表 。一旦加入该列表的模块,无论是启动时,或者时运行时(如usb硬盘等)udev都不会加载这些模块。

    只需在您在 rc.conf的MODULES中对应模块前加上感叹号(!)就可禁用该模块。

    例如,

    MODULES=(!moduleA !moduleB)

     load_modules: 有用的启动参数

    如果您在内核启动参数中加入load_modules=off,那么udev会停止任何自动加载工作. 如果系统出现问题时,这个功能会十分有用。如果udev加载了有问题的模块导致系统挂起或者其它严重的问题时,你可以使用这个参数来禁用自动加载,以此来防止加载有问题的模块。

     已知的硬件问题

    - BusLogic设备被损坏而且导致启动时死机。

     这是一个内核的Bug目前还没有修正。

    - PCMCIA读卡器被认为是可移除设备.

     把它们加入到/etc/pmount.allow中,使用hal的pmount来读取

     自动加载带来的一些问题

    CPUFreq模块

    我门还没有找到一个很好的方法加载不同的CPUFreq控制器,所以我们把从自动加载进程里把它去掉了。如果您需要测量CPU频率,你必须在rc.conf的MODULES队列中显式的加入合适的模块。

     声音问题和一些不能自动加载的模块

    一些用户跟踪发现问题出在/etc/modprobe.conf中一些旧的部分,试着去掉这些旧的部分再试试看。

     多个同类型设备(网卡,声卡)每次启动的都不同

    因为udev同时加载所有模块,所以一些设备可能初始化顺序不同。例如同时有两个网卡时,它们总是在eth0和eth1之间变来变去。

    常用的解决办法是在您的rc.conf文件中通过修改MODULES队列来指明顺序。这个队列里的模块将在udev自动加载之前由系统加载,因此您可以控制模块在启动时加载顺序。

    # 在e100之前加载8139too

    MODULES=(8139too e100)

    另一个解决网卡的方法是使用udev-sanctified方法为每个网卡静态命名。创建文件/etc/udev/rules.d/10-network.rules然后将不同的网卡通过MAC地址绑定到不同的名字上:

    SUBSYSTEM=="net", SYSFS{address}=="aa:bb:cc:dd:ee:ff", NAME="lan0"

    SUBSYSTEM=="net", SYSFS{address}=="ff:ee:dd:cc:bb:aa", NAME="wlan0"

    同时,您需要注意以下内容:

    

    注意不要忘记修改您的/dec/rc.conf和其它使用ethX命名的配置文件。

     自己编译内核造成的一些已知问题

     Udev无法启动

    请确定您的内核版本大于或等于2.6.15。较早的内核没有udev自动装载所需要的uevent功能。

     CD/DVD符号和权限错误

    如果您使用2.6.15的内核的话,您需要安装ABS的uevent补丁(它从2.6.16内核中抽取了一些uevent功能)。您可以使用abs命令来同步ABS树,然后您就可以在/var/abs/kernels/kernel26/下找到abs补丁。

     Udev小窍门

     自动加载usb设备

    KERNEL=="sd[a-z]", NAME="%k", SYMLINK+="usb%m", GROUP="users", OPTIONS="last_rule"

    ACTION=="add", KERNEL=="sd[a-z][0-9]", SYMLINK+="usb%n", GROUP="users", NAME="%k"

    ACTION=="add", KERNEL=="sd[a-z][0-9]", RUN+="/bin/mkdir -p /mnt/usb%n"

    ACTION=="add", KERNEL=="sd[a-z][0-9]", PROGRAM=="/lib/udev/vol_id -t %N", RESULT=="vfat", RUN+="/bin/mount -t vfat -o rw,noauto,sync,dirsync,noexec,nodev,noatime,dmask=000,fmask=111 /dev/%k /mnt/usb%n", OPTIONS="last_rule"

    ACTION=="add", KERNEL=="sd[a-z][0-9]", RUN+="/bin/mount -t auto -o rw,noauto,sync,dirsync,noexec,nodev,noatime /dev/%k /mnt/usb%n", OPTIONS="last_rule"

    ACTION=="remove", KERNEL=="sd[a-z][0-9]", RUN+="/bin/umount -l /mnt/usb%n"

    ACTION=="remove", KERNEL=="sd[a-z][0-9]", RUN+="/bin/rmdir /mnt/usb%n", OPTIONS="last_rule"

    把这些udev规则放到/etc/udev/rules.d/下任何一个文件名以.rules结尾的文件中,例如/etc/udev/rules.d/sda.rules。

    如果想同时建立/media到/mnt符号连接,可以使用下面的版本:

    KERNEL=="sd[a-z]", NAME="%k", SYMLINK+="usbhd-%k", GROUP="users", OPTIONS="last_rule"

    ACTION=="add", KERNEL=="sd[a-z][0-9]", SYMLINK+="usbhd-%k", GROUP="users", NAME="%k"

    ACTION=="add", KERNEL=="sd[a-z][0-9]", RUN+="/bin/mkdir -p /media/usbhd-%k"

    ACTION=="add", KERNEL=="sd[a-z][0-9]", RUN+="/bin/ln -s /media/usbhd-%k /mnt/usbhd-%k"

    ACTION=="add", KERNEL=="sd[a-z][0-9]", PROGRAM=="/lib/udev/vol_id -t %N", RESULT=="vfat", RUN+="/bin/mount -t vfat -o rw,noauto,sync,dirsync,noexec,nodev,noatime,dmask=000,fmask=111 /dev/%k /media/usbhd-%k", OPTIONS="last_rule"

    ACTION=="add", KERNEL=="sd[a-z][0-9]", RUN+="/bin/mount -t auto -o rw,noauto,sync,dirsync,noexec,nodev,noatime /dev/%k /media/usbhd-%k", OPTIONS="last_rule"

    ACTION=="remove", KERNEL=="sd[a-z][0-9]", RUN+="/bin/rm -f /mnt/usbhd-%k"

    ACTION=="remove", KERNEL=="sd[a-z][0-9]", RUN+="/bin/umount -l /media/usbhd-%k"

    ACTION=="remove", KERNEL=="sd[a-z][0-9]", RUN+="/bin/rmdir /media/usbhd-%k", OPTIONS="last_rule"

    注意!如果你是用的其它的固定设备(例如SATA的硬盘,您可以从/etc/fstab中查看)被识别为/dev/sdX,您必须从sd[a-z]

    中去掉你的那个sdX。例如,如果您的SATA硬盘被是识别为/dev/sda,您就需要把所有的“sd[a-z]”替换成“sd[b-z]”。

    在规则文件的文件名前加上数字(如:010.udev.rules)是个很好的主意,这样udev在读取标准规则前,将会读取这个规则文件。

    这些规则设置后不需要修改/etc/fstab文件。请查看mount命令的参数来修改权限等特性(您可以从论坛搜索查看mount命令的参数,然后根据

    您的需要修改它们)。

    

    

    

    

    本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/28407/showart_340455.html

打开APP阅读全文

Udev(简体中文)

Udev(简体中文)

长按识别二维码 进入IT168查看全文

请长按保存图片
{{data.thematic.text}}

相关文章

加载中...

分享到

请使用浏览器的分享功能
分享到微信等