免费观看又色又爽又黄的小说免费_美女福利视频国产片_亚洲欧美精品_美国一级大黄大色毛片

UDEV規(guī)則參數(shù)詳細(xì)解釋使用-創(chuàng)新互聯(lián)

Udev 的使用--linux系統(tǒng)創(chuàng)建設(shè)備節(jié)點(diǎn)

Linux 里都是以設(shè)備文件的形式存在。在早期的 Linux 版本中,/dev目錄包含了所有可能出現(xiàn)的設(shè)備的設(shè)備文件。但因?yàn)檫@樣 Linux 用戶很難在這些大量的設(shè)備文件中找到匹配條件的設(shè)備文件。現(xiàn)在 udev 只為那些連接到 Linux 操作系統(tǒng)的設(shè)備產(chǎn)生設(shè)備文件。并且 udev 能通過定義一個(gè) udev 規(guī)則 (rule) 來產(chǎn)生匹配設(shè)備屬性的設(shè)備文件,這些設(shè)備屬性可以是內(nèi)核設(shè)備名稱、總線路徑、廠商名稱、型號、序列號或者磁盤大小等等。

動態(tài)自動管理設(shè)備信息:當(dāng)有設(shè)備添加 / 刪除時(shí),udev 的守護(hù)進(jìn)程偵聽到來自內(nèi)核的 uevent 的事件,用來添加或者刪除 /dev下的設(shè)備文件,所以 udev 可以只為已經(jīng)連接的設(shè)備產(chǎn)生設(shè)備文件,而不會象 2.4 內(nèi)核一樣在 /dev下產(chǎn)生大量設(shè)備文件。另外可以使用這個(gè)功能 ,當(dāng)有設(shè)備加入時(shí)運(yùn)行外部的程序,比如鼠標(biāo)加入時(shí)自動禁用觸摸板之類
使用自定義命名和管理設(shè)備:使用 Udev 規(guī)則文件,udev 在 /dev/ 里為所有的設(shè)備定義了內(nèi)核設(shè)備名稱,比如 /dev /sda、/dev/hda、/dev/fd等等。由于 udev 是在用戶空間 (user space) 運(yùn)行,Linux 用戶可以接下來對這些信息進(jìn)行操作,比如可以通過自定義的規(guī)則文件,生成人性的設(shè)備標(biāo)識,比如 /dev/my_disk、/dev/nameusb 等,還能對設(shè)置進(jìn)行參數(shù)成員用戶組權(quán)限之類的修改。

開始之類需要了解
  ? sysfs:sysfs是 Linux 2.6 內(nèi)核里的一個(gè)虛擬文件系統(tǒng) (/sys)。它把設(shè)備和驅(qū)動的信息從內(nèi)核的設(shè)備模塊導(dǎo)出到用戶空間 (userspace)。從該文件系統(tǒng)中,Linux 用戶可以獲取很多設(shè)備的屬性。
  ? devpath:本文的 devpath是指一個(gè)設(shè)備在 sysfs文件系統(tǒng) (/sys)下的相對路徑,該路徑包含了該設(shè)備的屬性文件。udev 里的多數(shù)命令都是針對 devpath操作的。例如:sda的 devpath是 /block/sda,sda2 的 devpath是 /block/sda/sda2。
  ? 內(nèi)核設(shè)備名稱:設(shè)備在 sysfs里的名稱,是 udev 默認(rèn)使用的設(shè)備文件名。

udev 主配置文件

主要的udev 主配置文件是 /etc/udev/udev.conf。這個(gè)文件通常很短,他可能只是包含幾行#開頭的注釋,然后有幾行選項(xiàng):
 

創(chuàng)新互聯(lián)建站從2013年創(chuàng)立,先為吉安等服務(wù)建站,吉安等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為吉安企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。

 

 

udev_root=/dev/  # 設(shè)置的絕對路徑,相當(dāng)于創(chuàng)建 chroot 的根。

udev_rules=/etc/udev/rules.d/    #規(guī)則的存放地址

udev_log=err      # 日志的輸入級別
 



udev 的規(guī)則配置文件實(shí)例

默認(rèn)的規(guī)則配置文件存放在 /etc/udev/rules.d/ 中,我們進(jìn)入這個(gè)可以看到 RedHat 默認(rèn)對設(shè)備建好的一些規(guī)則和一些硬件公司寫好的規(guī)則。
進(jìn)入目錄,可以見到以二位數(shù)字開頭的前綴的配置文件,可以使用 vi 進(jìn)入配置文件中查看,一行是一條規(guī)則,默認(rèn)是從小數(shù)字到大數(shù)字,這些表示生效的順序。

我們在使用 udev 寫規(guī)則前,先來看一個(gè)例子
 

 

 KERNEL==sd*, PROGRAM=/lib/udev/scsi_id -g -s %p, RESULT==123456, SYMLINK=%k_%c

 



該規(guī)則的執(zhí)行:如果有一個(gè)內(nèi)核設(shè)備名稱以 sd 開頭,且 SCSI ID 為 123456,則為設(shè)備文件產(chǎn)生一個(gè)符號鏈接“sda_123456”.  %p %k %c 請看后面的“udev 的值和可調(diào)用的替換操作符 ”

udev 的規(guī)則配置文件

在規(guī)則文件里,除了以“#”開頭的行(注釋),所有的非空行都被視為一條規(guī)則,但是一條規(guī)則不能擴(kuò)展到多行。規(guī)則都是由多個(gè) 鍵值對(key-value pairs)組成,并由逗號隔開,鍵值對可以分為 條件匹配鍵值對( 以下簡稱“匹配鍵 ”) 和 賦值鍵值對( 以下簡稱“賦值鍵 ”),一條規(guī)則可以有多條匹配鍵和多條賦值鍵。匹配鍵是匹配一個(gè)設(shè)備屬性的所有條件,當(dāng)一個(gè)設(shè)備的屬性匹配了該規(guī)則里所有的匹配鍵,就認(rèn)為這條規(guī)則生效,然后按照賦值鍵的內(nèi)容,執(zhí)行該規(guī)則的賦值。
規(guī)則文件里的規(guī)則有一系列的鍵/值對組成,鍵/值對之間用逗號(,)分割。

通過上面例子中也能看出,這些配置,但我想大家可能會產(chǎn)生疑惑,為什么 KERNEL 是匹配鍵,而 NAME 和 MODE 是賦值鍵呢?這由中間的操作符 (operator) 決定。

僅當(dāng)操作符是“==”或者“!=”時(shí),其為匹配鍵;若為其他操作符時(shí),都是賦值鍵。

匹配鍵和賦值鍵操作符解釋見下表:
 

 

 操作符     匹配或賦值t                         解釋
----------------------------------------
==            匹配              相等比較
!=            匹配             不等比較
=            賦值              分配一個(gè)特定的值給該鍵,他可以覆蓋之前的賦值。
+=          賦值              追加特定的值給已經(jīng)存在的鍵
:=            賦值                  分配一個(gè)特定的值給該鍵,后面的規(guī)則不可能覆蓋它。

 

udev 規(guī)則的匹配鍵 :
 

 

 

鍵        含義

----------------------------------------

ACTION         事件 (uevent) 的行為,例如:add( 添加設(shè)備 )、remove( 刪除設(shè)備 )。

KERNEL         在內(nèi)核里看到的設(shè)備名字,比如sd*表示任意SCSI磁盤設(shè)備

DEVPATH       內(nèi)核設(shè)備錄進(jìn),比如/devices/*

SUBSYSTEM       子系統(tǒng)名字,例如:sda 的子系統(tǒng)為 block。

BUS         總線的名字,比如IDE,USB

DRIVER         設(shè)備驅(qū)動的名字,比如ide-cdrom

ID           獨(dú)立于內(nèi)核名字的設(shè)備名字

SYSFS{ value}       sysfs屬性值,他可以表示任意

ENV{ key}       環(huán)境變量,可以表示任意

PROGRAM       可執(zhí)行的外部程序,如果程序返回0值,該鍵則認(rèn)為為真(true)

RESULT         上一個(gè)PROGRAM調(diào)用返回的標(biāo)準(zhǔn)輸出。

NAME         根據(jù)這個(gè)規(guī)則創(chuàng)建的設(shè)備文件的文件名。

注意:僅僅第一行的NAME描述是有效的,后面的均忽略。  

    如果你想使用使用兩個(gè)以上的名字來訪問一個(gè)設(shè)備的話,可以考慮SYMLINK鍵。

SYMLINK       為 /dev/下的設(shè)備文件產(chǎn)生符號鏈接。由于 udev 只能為某個(gè)設(shè)備產(chǎn)生一個(gè)設(shè)備文件,

    所以為了不覆蓋系統(tǒng)默認(rèn)的 udev 規(guī)則所產(chǎn)生的文件,推薦使用符號鏈接。

OWNER         設(shè)備文件的屬組

GROUP         設(shè)備文件所在的組。

MODE         設(shè)備文件的權(quán)限,采用8進(jìn)制

RUN         為設(shè)備而執(zhí)行的程序列表

LABEL         在配置文件里為內(nèi)部控制而采用的名字標(biāo)簽(下下面的GOTO服務(wù))

GOTO         跳到匹配的規(guī)則(通過LABEL來標(biāo)識),有點(diǎn)類似程序語言中的GOTO

IMPORT{ type}     導(dǎo)入一個(gè)文件或者一個(gè)程序執(zhí)行后而生成的規(guī)則集到當(dāng)前文件

WAIT_FOR_SYSFS   等待一個(gè)特定的設(shè)備文件的創(chuàng)建。主要是用作時(shí)序和依賴問題。

PTIONS         特定的選項(xiàng):

last_rule 對這類設(shè)備終端規(guī)則執(zhí)行;

ignore_device 忽略當(dāng)前規(guī)則;

ignore_remove 忽略接下來的并移走請求。

all_partitions 為所有的磁盤分區(qū)創(chuàng)建設(shè)備文件。

----------------------------------------

udev 的重要賦值鍵

引用
NAME:在 /dev下產(chǎn)生的設(shè)備文件名。只有第一次對某個(gè)設(shè)備的 NAME 的賦值行為生效,之后匹配的規(guī)則再對該設(shè)備的 NAME 賦值行為將被忽略。如果沒有任何規(guī)則對設(shè)備的 NAME 賦值,udev 將使用內(nèi)核設(shè)備名稱來產(chǎn)生設(shè)備文件。
SYMLINK:為 /dev/下的設(shè)備文件產(chǎn)生符號鏈接。由于 udev 只能為某個(gè)設(shè)備產(chǎn)生一個(gè)設(shè)備文件,所以為了不覆蓋系統(tǒng)默認(rèn)的 udev 規(guī)則所產(chǎn)生的文件,推薦使用符號鏈接。
OWNER, GROUP, MODE:為設(shè)備設(shè)定權(quán)限。
ENV{key}:導(dǎo)入一個(gè)環(huán)境變量。

----------------------------------------

 我們給出一個(gè)列子來解釋如何使用這些鍵。下面的例子來自Fedora Core 5系統(tǒng)的標(biāo)準(zhǔn)配置文件。

KERNEL==”*”, OWNER=”root” GROUP=”root”, MODE=”0600″
KERNEL==”tty”, NAME=”%k”, GROUP=”tty”, MODE=”0666″, OPTIONS=”last_rule”
KERNEL==”scd[0-9]*”, SYMLINK+=”cdrom cdrom-%k”
KERNEL==”hd[a-z]”, BUS==”ide”, SYSFS{removable}==”1″, SYSFS{device/media}==”cdrom”, SYMLINK+=”cdrom cdrom-%k”
ACTION==”add”, SUBSYSTEM==”scsi_device”, RUN+=”/sbin/modprobe sg”

上面的例子給出了5個(gè)規(guī)則,每一個(gè)都是KERNEL或者ACTION鍵開頭:

*第一個(gè)規(guī)則是缺省的,他匹配任意被內(nèi)核識別到的設(shè)備,然后設(shè)定這些設(shè)備的屬組是root,組是root,訪問權(quán)限模式是0600(-rw——-)。這也是一個(gè)安全的缺省設(shè)置保證所有的設(shè)備在默認(rèn)情況下只有root可以讀寫。
*第二個(gè)規(guī)則也是比較典型的規(guī)則了。它匹配終端設(shè)備(tty),然后設(shè)置新的權(quán)限為0600,所在的組是tty。它也設(shè)置了一個(gè)特別的設(shè)備文件名:%K。在這里例子里,%k代表設(shè)備的內(nèi)核名字。那也就意味著內(nèi)核識別出這些設(shè)備是什么名字,就創(chuàng)建什么樣的設(shè)備文件名。

*第三行開始的KERNEL==”scd[0-9]*”,表示 SCSI CD-ROM 驅(qū)動. 它創(chuàng)建一對設(shè)備符號連接:cdrom和cdrom-%k。

*第四行,開始的 KERNEL==”hd[a-z]“, 表示ATA CDROM驅(qū)動器。這個(gè)規(guī)則創(chuàng)建和上面的規(guī)則相同的符號連接。ATA CDROM驅(qū)動器需要sysfs值以來區(qū)別別的ATA設(shè)備,因?yàn)镾CSI CDROM可以被內(nèi)核唯一識別。.

*第五行以 ACTION==”add”開始,它告訴udev增加 /sbin/modprobe sg 到命令列表,當(dāng)任意SCSI設(shè)備增加到系統(tǒng)后,這些命令將執(zhí)行。其效果就是計(jì)算機(jī)應(yīng)該會增加sg內(nèi)核模塊來偵測新的SCSI設(shè)備。

當(dāng)然,上面僅僅是一小部分例子,如果你的系統(tǒng)采用了udev方式,那你應(yīng)該可以看到更多的規(guī)則。如果你想修改設(shè)備的權(quán)限或者創(chuàng)建信的符號連接,那么你需要熟讀這些規(guī)則,特別是要仔細(xì)注意你修改的那些與之相關(guān)的設(shè)備。

udev 的值和可調(diào)用的替換操作符

 

 

 

在鍵值對中的鍵和操作符都介紹完了,最后是值 (value)。Linux 用戶可以隨意地定制 udev 規(guī)則文件的值。

例如:my_root_disk, my_printer。同時(shí)也可以引用下面的替換操作符:

----------------------------------------

$kernel, %k:設(shè)備的內(nèi)核設(shè)備名稱,例如:sda、cdrom。

$number, %n:設(shè)備的內(nèi)核號碼,例如:sda3 的內(nèi)核號碼是 3。

$devpath, %p:設(shè)備的 devpath路徑。

$id, %b:設(shè)備在 devpath里的 ID 號。

$sysfs{file}, %s{file}:設(shè)備的 sysfs里 file 的內(nèi)容。其實(shí)就是設(shè)備的屬性值。

例如:$sysfs{size} 表示該設(shè)備 ( 磁盤 ) 的大小。

$env{key}, %E{key}:一個(gè)環(huán)境變量的值。

$major, %M:設(shè)備的 major 號。

$minor %m:設(shè)備的 minor 號。

$result, %c:PROGRAM 返回的結(jié)果

$parent, %P:父設(shè)備的設(shè)備文件名。

$root, %r:udev_root的值,默認(rèn)是 /dev/。

$tempnode, %N:臨時(shí)設(shè)備名。

%%:符號 % 本身。

$$:符號 $ 本身。
 


 



udev 規(guī)則所需要信息的查詢

常用的查上面匹配鍵信息的命令
 

 

 

udevinfo -a -p $(udevinfo  -q path -n /dev/sda1 )

上面的命令兩次使用udevinfo:

  第一次是返回sysfs設(shè)備路徑(他通常和我們看到的Linux設(shè)備文件名所在路徑--/dev/hda--不同);

  第二次才是查詢這個(gè)設(shè)備路徑,結(jié)果將是非常常的syfs信息匯總

udevinfo -a -p /sys/class/net/eth0

scsi_id -g -s /block/sda

scsi_id -g -x -s /block/sda/sda3

ata_id /dev/hda
 


 



udev 信息的測試和生效

查出來后,根據(jù)上面文件中的內(nèi)容寫規(guī)則后,怎么測試
 

 

udevtest /block/sda

start_dev #命令重啟 udev守護(hù)進(jìn)程

本操作會對所有的設(shè)備重新查詢規(guī)則目錄下所有的規(guī)則文件,然后執(zhí)行所匹配的規(guī)則里的行為。

通常使用該命令讓新的規(guī)則文件立即生效。
 ------------------------------------   資料整理網(wǎng)絡(luò)   ---------------------------------------------

 

分享名稱:UDEV規(guī)則參數(shù)詳細(xì)解釋使用-創(chuàng)新互聯(lián)
轉(zhuǎn)載源于:http://m.newbst.com/article24/hjjje.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站內(nèi)鏈外貿(mào)建站虛擬主機(jī)App設(shè)計(jì)軟件開發(fā)網(wǎng)站排名

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都做網(wǎng)站