介绍了在arch中使用udev的一些技巧。
关于udev的信息可以在下列地址中找到:
http://www.kernel.org/pub/linux/utils/kernel/hotplug/udev-FAQ
http://bbs.archlinux.org/viewtopic.php?t=5702&start=0
As of initscripts 0.7,Arch现在有官方的Udev支持。Arch下的Udev需要以下条件:
initscripts v 0.7或更新版本
pacman -Qs initscripts
2.6内核
uname -r
转到Udev需做好几步工作。
更改内核启动行
Arch默认会mount devfs,你必须加上"devfs=nomount",告诉它不要这样做:
GRUB: /boot/grub/menu.lst
kernel (hd0,0)/vmlinuz26 root=/dev/discs/disc0/part3 devfs=nomount vga=773 ro
LILO: /etc/lilo.conf
boot=/dev/discs/disc0/disc append="devfs=nomount"
(don't forget to run /sbin/lilo afterwards)
安装udev软件包
pacman -S udev
修改/etc/fstab
sysfs要被注释掉,"usbdevfs"需要改为"usbfs"(两个在一行中)。改完后,看起来就像这样了:
#sysfs /sys sysfs defaults 0 0
usbfs /proc/bus/usb usbfs defaults 0 0
重启
修改权限及规则
Udev使用的规则集位于/etc/udev/*,如果你修改过,别忘了为这些文件在pacman.conf中加入NoUpgrade规则。
简单一点的方法就是建立自己的规则和权限文件。对于设备,Udev是根据其找到的第一个符合的规则来管理的。在你自己的文件名上加上"00-"(是数字0,不是字母o)前缀,你的规则就会是第一个被发现。文件名必须以.rules或.permissions结束,否则就会被忽略。
permissions文件的例子(/etc/udev/permissions.d/00-myrules.permissions):
# audio devices
dsp*:root:users:0660
audio*:root:users:0660
midi*:root:users:0660
mixer*:root:users:0660
sequencer*:root:users:0660
sound/*:root:users:0660
snd/*:root:users:0660
beep:root:users:0660
admm*:root:users:0660
adsp*:root:users:0660
aload*:root:users:0660
amidi*:root:users:0660
dmfm*:root:users:0660
dmmidi*:root:users:0660
sndstat:root:users:0660
# disk devices for having access to audioripping and burning
hdc:root:users:660
hdd:root:users:660
# v4l devices for tv and radio cards
video*:root:users:0660
radio*:root:users:0660
winradio*:root:users:0660
vtx*:root:users:0660
vbi*:root:users:0660
video/*:root:users:0660
vttuner:root:users:0660
v4l/*:root:users:0660
# scsi devices, for scsi scanners or cd writers
sg*:root:users:0660
pg*:root:users:0660
cdwriter:root:users:0660
其他需注意的:
声卡
即使你已设置了正确的权限,但系统还是不出声,试试以root身份运行alsaconf,这将在modprobe.conf中加入alias。然后运行alsamixer,查一下是不是什么”特别“的功能,如3D环绕是打开的;再检查一下音量。最后,在rc.conf的modules中加入:
snd-card-0 snd-pcm-oss
这样应该就可以了。
光驱
如果要抓轨或烧录,你必须改变“真正的”设备(hd*)权限。仅仅改变符号连接的权限是不行的。
调制解调器
如果pppd是以root粘滞位运行的,就不需要设置权限。
打印机
什么都不需要改。CUPS是以root身份运行的。
硬盘和USB闪存
硬盘和USB闪存在fstab中通常都有入口,如果在fstab中设置了"users"用户组,那就没问题了。
USB扫描仪
不需修改。大多数扫描仪的应用程序都是使用libusb,并不需与设备节点打交道。你只需设置好hotplug就行了。如果之前可以工作,那么在udev下也可以正常工作。
Symlinking设备(我不明白)
这儿只有一个例子,但也能很清楚地说明其如何工作的了。将这个加入到/etc/udev/rules.d/00-myrules.rules:
# cdrom/cdrw links
KERNEL="hdc", SYMLINK="dvd"
KERNEL="hdd", SYMLINK="cdrom cdrecorder"
#important for modem users, change to ttyS1 if serial port 2 is used
KERNEL="ttyS0", SYMLINK="modem"
检查symlimks是否正常工作,不行的话,就重启udev:
/etc/./start_udev
mount /dev/pts
mount /dev/shm
有关规则的更多信息参见:http://www.reactivated.net/udevrules.php