RedHat6 Udev设备管理
实验目的:
了解Udev概念
掌握Udev配置
实验步骤:
步骤一、Udev概念
dev代表设备,Udev代表用户自定义设备的别名
在linux系统中插入一个设备,/proc目录会反应这个设备的状态及详细信息,相当于windos中的进程。关机之后,/proc目录里的内容会被清空,系统启动之后硬件和系统程序的详细信息加载到内存中去,/proc目录内容不能改
/sys和/proc目录内容一样,/sys目录里的内容是可以修改的
[root@boy ~]# cd /sys/block 查看到所有的设备
[root@boy block]# ls
loop0 loop2 loop4 loop6 ram0 ram10 ram12 ram14 ram2 ram4 ram6 ram8 sda
loop1 loop3 loop5 loop7 ram1 ram11 ram13 ram15 ram3 ram5 ram7 ram9 sr0
HAL:Hardware Abstraction Layes 硬件抽象层
相当于windows的设备管理器,windows设备管理器你只能看到很少的信息,你是看不到cpu型号,网卡型号的核心参数的,而HAL却都可以看到
[root@boy ~]#hal-device-manager 这个是红帽5的命令显示出HAL的图形化界面
当内核读到一个设备的加入,它将这个设备的信息传给/sys目录,Udev机制就会在它设置的策略中来进行Udev的匹配,然后把所有的结果传到HAL,最后让用户直接的使用。
步骤二、Udev配置
[root@boy ~]#udevmonitor 红帽5的udev管理命令
[root@boy ~]#udevadm monitor 这是红帽6的Udev管理命令,你插入一个设备,会显示插入这个设备的所有信息,设备有什么改变,都会在这个命令下显示
Udev的主配置文件:
/etc/udev/udev.conf
这个主配置文件只有一句话,意思是只会记录报错的日志
[root@boy ~]#vim /etc/udev/udev.conf
Udev_log=”err”
Udev级别:err、info、debug
Udev_root=“/tmp“ 你插入U盘,U盘的设备路径就变成了/tmp/sdd1了
Udev_rules 规定着udev策略文件的存放路径,默认为/etc/udev/rule.d/
Udev策略文件的存放路径是:
/etc/udev/rule.d/*.rules
存放的策略文件名字必须以数字开头,以.rules结尾,而数字代表优先级,1最小,99最大高优先级会被系统线读到。
=号表示 是 ,==号表示 如果、有可能、可能是 , !=号表示 反选、不是它
BUS表示电脑上的总线,总线可以判断设备是否存在
SYSFS{serial}==“20043512321411d3472”表示硬件唯一标识码,硬件唯一标识码只能在linux中查看,windos是查看不到的,因为windos是避源的,硬件唯一标识码是不能改的
%n是变量,$tempnode也是变量
[root@boy ~]# cd /etc/udev/rules.d/
[root@boy rules.d]# ls
60-fprint-autosuspend.rules 60-raw.rules 90-alsa.rules 98-kexec.rules
60-openct.rules 70-persistent-cd.rules 90-hal.rules 99-fuse.rules
60-pcmcia.rules 70-persistent-net.rules 97-bluetooth-serial.rules
[root@boy rules.d]# vim 99-myusb.rules
BUS==“usb”,ATTRS{SERIAL}==“1612120003653307”,NAME=“myusb%n”
如果电脑中的总线判断出新加入的设备可能是硬盘,硬件唯一标识码是1612120003653307,那么就为这个设备起个别名叫myusb。
然后什么都不做,插入U盘 df一下。
[root@boy ~]#df
/dev/sda2 50395844 3613892 44221952 8% /
tmpfs 255464 76 255388 1% /dev/shm
/dev/sda1 198337 27124 160973 15% /boot
/dev/sr0 3080782 3080782 0 100% /media/RHEL_6.4 i386 Disc 1
/dev/myusb 10319364 154100 9641072 /media/disk
查看硬件唯一标示码:
Udevinfo -a -p $(udevinfo -q path -n /dev/
[root@boy ~]#Udevadm info -q path -n /dev/sdd
[root@boy ~]#udevadm info -a -p /block/sdd
红帽6查看硬件所有参数的命令(包括硬件唯一标识码)
NAME=“myusb%n”和SYSLINK+=“myusb%n”区别:
NAME=“myusb%n”就是把那个设备变成了myusb
SYSLINK+=“myusb%n”只是在那个设备上做个链接,链接名字为myusb,原先的设备名字还在
我们可以在做一件坏事情:
假设有个间谍到盗取的信息,你的信息非常重要,可以做什么了?
[root@boy ~]# cd /etc/udev/rules.d/
[root@boy rules.d]# vim 99-example.rules
BUS==“usb”, ATTRS{SERIAL}!=“1612120003653307”,RUN=“shutdown –r now”
你插入的U盘一旦不是1612120003653307这个,那么就让服务器立刻关机
或者了你可以更狠一点
RUN=“dd if=/dev/zero of=/dev/sdb”
你插入的U盘一旦不是1612120003653307这个,那么U盘就被毁掉。当然你也可以做什么格式话之类的动作。
这个命令是在红帽5上专门做查看远程挂载过来的硬盘唯一标识码
[root@boy ~]# Scsi_id -g -x -s /block/sdX
红帽6专门查看远程挂载过来的硬盘唯一标识码
/lib/udev/scsi_id --whatelisted --replace-whitespace --device=/dev/sda (--device $tempnode)
集群坏境中的Udev使用:
[root@boy ~]# cd /etc/udev/rules.d/
[root@boy rules.d]# vim 99-cluster.rules
KERNEL==“sd*”,BUS==“scsi”,PROGRAM==“/lib/udev/scsi_id --whatelisted --replace-whitespace --device $tempnode” , RESULT==“1IET_00011001”,SYMLINK+=“example%n”
”