Gentoo udev 指南(轉)

amyz發表於2007-08-10
Gentoo udev 指南(轉)[@more@]

  原文更新:2004年5月27日

  內容簡介:這份檔案說明什麼是 udev 還有您如何使用 udev 來達成您的需求。

  1. 什麼是 udev?

  


  /dev 目錄 

  當 Linux 使用者談到他們系統上的硬體時,對周圍那些認為 Linux 是一種病毒或是一種咖啡的牌子的人,'斜線 dev 斜線 某個東西'的用法他們一定會投給您一個奇怪的眼光。但是對於那些幸運的使用者(包括您),使用 /dev/hda1 就是一種快速的表達方法,而不用說第一個 IDE 插槽上主硬碟的第一個分割區,不是嗎?

  我們都知道什麼是裝置檔。一些人更瞭解為什麼我們在 /dev 中輸入 ls -l 仔細檢視時那些裝置檔會有特別的數字。但是我們一直認為 /dev/hda 代表第一個 IDE 插槽上主硬碟是理所當然的。您或許並不知道,但這只是設計上一個瑕疵。

  考慮一下可熱插拔的裝置,例如說 USB,IEEE1394,可抽換的 PCI,...什麼是第一個裝置?他會維持多久?當第一個裝置消失後其他的裝置要如何命名?這會不會影響進行中的傳輸工作?如果說因為您媽媽決定插上 inkjet 使它變成第一臺印表機,而讓您的列印工作從爆新的雷射印表機變成快壞的矩陣印表機在列印,這會很有趣嗎?

  進入 udev。udev 計畫的目標有趣而且迫切需要:

  • 在 userspace 中執行
  • 動態建立/移除裝置檔
  • 提供固定的名稱
  • 提供 user-space API

  為了提供這些功能,udev 以三個分割的子計畫發展: namedev,libsysfs,還有不用說就是udev。

  namedev 

  Namedev 允許您從 udev 之外自行定義裝置的名稱。這讓您輸入多個段落來設定有彈性的命名規則以及方案。這個裝置命名子系統提供 udev 可以使用的標準介面。

  目前 namedev 只有提供一個命名方案,由 LANANA 提供。目前這被大部分的 Linux 系統使用,因此適合大多數的 Linux 使用者。

  Namedev 使用下面五個步驟來決定指定裝置的名稱。如果債這些步驟的其中一個找到了這個裝置的名稱,就會使用它。這五個步驟是: are:

  • 標籤或序號
  • 匯流排裝置編號
  • 匯流排拓樸
  • 靜態指定名稱
  • 核心提供的名稱

  標籤或序號 這一步檢查裝置是否有唯一的識別記號。例如說 USB 裝置有唯一的 USB 序號。SCSI 有唯一的 UUID。如果 namedev 找到與這種唯一編號相對應的設定檔,他將或使用設定檔提供的名稱。

  匯流排裝置編號 這一步會檢查匯流排裝置編號,對於不可熱抽換的環境,這一步足以辨識裝置。例如說 PCI 匯流排編號在系統的使用期限內很少變更。同樣的,如果 namedev 找到相對應的設定檔,設定檔中的名稱就會被使用。

  類似的,匯流排拓樸 相對來說也是夠穩定而可以辨識裝置,只要使用者不抽換裝置。當裝置的位置滿足使用者提供的設定,就會使用指定的名稱。

  第四個步驟,靜態指定名稱,是一個簡單的字串取代。當核心提供的名稱(預設名稱)符合指定的取代字串,就會使用取代後的名稱。

  最後一步(核心提供的名稱)一定會找到符合的:由核心提供的預設名稱。在大部份的情況下這足以在目前的 Linux 系統中找到對應的名稱。

  libsysfs 

  udev 使用虛擬的 sysfs 檔案系統和核心溝通。libsysfs 計畫提供通用的 API 以一般方式取得 sysfs 提供的資訊。這讓查詢任何硬體時不用先知道他們是哪種硬體。

  udev 

  每當核心注意到硬體結構有更新時,他會呼叫 /sbin/hotplug 這個程式。 Hotplug 會執行連結到 /etc/hotplug.d/default 目錄下的程式。在哪裡面您也會找到 udev 程式的連結。Hotplug 送出核心提供的資訊給 udev 程式,以便執行必要的動作修改 /dev 結構(建立或刪除裝置檔)。

  2. 在 Gentoo 使用 udev

  


  需求 

  udev 需要與 2.6 核心共同使用(例如 development-sources 或 gentoo-dev-sources)。如果您已經用這類核心,您只要確定您的 sys-apps/baselayout 是最新的。這就是所有您需要的。

程式碼 2.1: 安裝 udev

# emerge udev

  udev 會安裝 hotplug-base,因為這是他的相依套件其中之一。如果您想要用 hotplug 當您插入 USB 或 IEEE1394 裝置時執行特定的工作,您也要安裝完整的 hotplug 指令搞。

程式碼 2.2: 自由選擇:安裝 hotplug

# emerge hotplug

  在核心的設定方面,如果您使用 genkernel 的預設設定,那相關設定都設定好了。否則確定您有啟動下列選項:

程式碼 2.3: 需要的核心設定

General setup ---&gt

 [*] Support for hot-pluggable devices

File systems ---&gt

 Pseudo filesystems ---&gt

  [*] /proc file system support

  [*] Virtual memory file system support (former shm fs)

  如果您想的話,也可以啟動 /dev file system support (OBSOLETE)。

  設定 

  如果您像要在 Gentoo 使用調整過的 udev 讓您的生活更加快樂,那您讀到這就可以了。您已經把該設定的都設好了。 Gentoo init scripts 不會執行 devfsd 服務,而且當您開機時會關閉 devfs。

  但如果您是頑固的傢伙,想要執行只使用 udev,未經調整過的系統,就如同 udev 發展過程中所做的事(包括一些困難,像是因為 udev 不支援而遺失的裝置),那就讀下去吧 :)

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752019/viewspace-941275/,如需轉載,請註明出處,否則將追究法律責任。

相關文章