分类: LINUX
2012-11-29 10:40:27
udev一般包含两个程序udevd及udevadm,这两个包分别是负责创建/dev下面的设备文件各大udev的管理。udevd是一个守护进程,要使用udev则必须启动该进程。Centos的启动是在/etc/rc.sysinit中执行/sbin/start_udev脚本来启动的,
udevd的守护进程
下面简单地模拟一下udev的创建设备节点的过程:
1.首先kill掉udevd进程:pkill udevd,然后用ps -aux |grep udev查看是否已经kill成功。
2.挂载udev的根目录:mount -t tmpfs none /dev,挂载后该目录为空。
3.启动udevd进程,运行udevd命令。
4.通过udevadm trigger --action=add触发内核的设备添加事件。这样可以将内核的文件设备节点信息读取出来。
5.现在可以通过ls 查看dev目录,现在目录里面就有相应的文件设备:
现在模拟一下在将sda设备文件改为juvi设备文件:
首先在etc/udev/rules.d目录下创建一个测试规则文件:33-juvi.rules,然后用vim打开,加入下面的规则:ACTION=="add", KERNEL=="sda",NAME="juvi" , SYMLINK+="juvi-test"
上面ACTION表示内核事件,KERNEL中表示dev的设备文件名,NAME表示你自己要创建的名字,SYMLINK表示要建立的一个快捷方式。设置好规则后运行udevadm trigger --action=add命令,便可以发现在/dev下面的sda不存在了,而变为了juvi文件。
设置这些规则是要根据设备的信息来设置,因此可以通过udevadm info --export-db命令显示所有的文件设备节点信息。下面是sda的设备节点信息:
P: /devices/pci0000:00/0000:00:10.0/host2/target2:0:1/2:0:1:0/block/sda
N: juvi
W: 538
S: juvi-test
S: block/8:0
S: disk/by-path/pci-0000:00:10.0-scsi-0:0:1:0
E: UDEV_LOG=3
E: DEVPATH=/devices/pci0000:00/0000:00:10.0/host2/target2:0:1/2:0:1:0/block/sda
E: MAJOR=8
E: MINOR=0
E: DEVNAME=/dev/juvi
E: DEVTYPE=disk
E: SUBSYSTEM=block
E: ID_SCSI=1
E: ID_VENDOR=VMware_
E: ID_VENDOR_ENC=VMware\x2c\x20
E: ID_MODEL=VMware_Virtual_S
E: ID_MODEL_ENC=VMware\x20Virtual\x20S
E: ID_REVISION=1.0
E: ID_TYPE=disk
E: ID_BUS=scsi
E: ID_PATH=pci-0000:00:10.0-scsi-0:0:1:0
E: ID_PART_TABLE_TYPE=dos
E: DEVLINKS=/dev/juvi-test /dev/block/8:0 /dev/disk/by-path/pci-0000:00:10.0-scsi-0:0:1:0