4、RedHat6 Udev裝置管理
RedHat6 Udev裝置管理
實驗目的:
瞭解Udev概念
掌握Udev配置
實驗步驟:
步驟一、Udev概念
dev代表裝置,Udev代表使用者自定義裝置的別名
在linux系統中插入一個裝置,/proc目錄會反應這個裝置的狀態及詳細資訊,相當於windos中的程序。關機之後,/proc目錄裡的內容會被清空,系統啟動之後硬體和系統程式的詳細資訊載入到記憶體中去,/proc目錄內容不能改
/sys和/proc目錄內容一樣,/sys目錄裡的內容是可以修改的
[[email protected] ~]# cd /sys/block 檢視到所有的裝置
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卻都可以看到
當核心讀到一個裝置的加入,它將這個裝置的資訊傳給/sys目錄,Udev機制就會在它設定的策略中來進行Udev的匹配,然後把所有的結果傳到HAL,最後讓使用者直接的使用。
步驟二、Udev配置
[[email protected] ~]#udevmonitor 紅帽5的udev管理命令
[[email protected] ~]#udevadm monitor 這是紅帽6的Udev管理命令,你插入一個裝置,會顯示插入這個裝置的所有資訊,裝置有什麼改變,都會在這個命令下顯示
Udev的主配置檔案:
/etc/udev/udev.conf
這個主配置檔案只有一句話,意思是隻會記錄報錯的日誌
[[email protected] ~]#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也是變數
[[email protected] ~]# cd /etc/udev/rules.d/
[[email protected] 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
[[email protected] rules.d]# vim 99-myusb.rules
BUS==“usb”,ATTRS{SERIAL}==“1612120003653307”,NAME=“myusb%n”
如果電腦中的匯流排判斷出新加入的裝置可能是硬碟,硬體唯一標識碼是1612120003653307,那麼就為這個裝置起個別名叫myusb。
然後什麼都不做,插入U盤 df一下。
[[email protected] ~]#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/<device>)這是紅帽5檢視硬體唯一標識碼的命令
[[email protected] ~]#Udevadm info -q path -n /dev/sdd
[[email protected] ~]#udevadm info -a -p /block/sdd
紅帽6檢視硬體所有引數的命令(包括硬體唯一標識碼)
NAME=“myusb%n”和SYSLINK+=“myusb%n”區別:
NAME=“myusb%n”就是把那個裝置變成了myusb
SYSLINK+=“myusb%n”只是在那個裝置上做個連結,連結名字為myusb,原先的裝置名字還在
我們可以在做一件壞事情:
假設有個間諜到盜取的資訊,你的資訊非常重要,可以做什麼了?
[[email protected] ~]# cd /etc/udev/rules.d/
[[email protected] 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上專門做檢視遠端掛載過來的硬碟唯一標識碼
[[email protected] ~]# Scsi_id -g -x -s /block/sdX
紅帽6專門檢視遠端掛載過來的硬碟唯一標識碼
/lib/udev/scsi_id --whatelisted --replace-whitespace --device=/dev/sda (--device $tempnode)
叢集壞境中的Udev使用:
[[email protected] ~]# cd /etc/udev/rules.d/
[[email protected] 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”
”