2006年4月29日 星期六

hotplug 舊時代的產物?udev 才有未來!

Standard
什麼是 hotplug ﹝熱插拔﹞?傳統的 PCI 、 ISA ,都需要在電腦處於冷機的時候,才能插上裝置,因為這些規格都不具備 hotplug 的能力。hotplug 意味著不必讓電腦關機、切斷電源後就能插上你的裝置。我們常見的隨身碟就是最好的例子。

常常我們文件完後想要儲存帶走,就會拿起隨身碟插入 USB 連接孔,一般狀況下,系統馬上就能偵測到新的儲存裝置,並做新增配置,讓你可以立刻將資料存放於隨身碟裡。用完後,只要將隨身碟拔起,就可將資料帶走。這種在電腦熱機狀態就增減硬體的機制就是 hotplug。

在 Linux 裡,過去大家都是用 hotplug 套件包來達成動態增減裝置的功能,還必須設定 /proc/sys/kernel/hotplug ,讓核心在偵測到有新的 hotplug 裝置時,會通知 hotplug 套件包去做相關配置。

稍微有注意的人都知道,Linux 2.6 版核心後,全面採用 udev 取代過去的 devfs ,裝置檔現在都改用 udev 自動產生。原因是 udev 在設計理念上比過去的 devfs 擁有更大的格局,他不只是一個設備檔產生器,而是一個核心訊息的監聽器,它總在隨時監聽核心是否有新增裝置或是載入新的模組,並做出相對應的處理。在 udev 發展的過渡時期,由於對新裝置的對應處理機制並沒有設計的很完善,暫時只能充當設備檔產生器,而在 hotplug 機制的部份,設計了一個小程式 udevsend 與過去的 hotplug 套件包做整合。

udev 發展到今天,已逐漸成熟,hotplug 機制已不必過度仰賴舊的 hotplug 套件包,udevsend 這支程式已經在新版的 udev 中拿掉了,關於這部份可以在 Fedora Core 5 的系統中看到實作。