戴文的Linux內核專題:21 配置內核 (17)
你好!這篇文章會覆蓋不同的驅動。
首先"virtio console"是一種用於hypervisors的虛擬控制台驅動。
"IPMI top-level message handler"是用於IPMI系統的消息管理器。IPMI代表的是"Intelligent Platform Management Interface"(智能平台管理系統)。IPMI是一種不需要shell通過網路管理系統的介面。
"/dev/nvram support"允許系統讀取和寫入實時時鐘的內存。通常上,這個特性用於在掉電時保存數據。
下面一個驅動支持Siemens R3964包驅動(Siemens R3964 line discipline)。這個是設備對設備協議
現在,我們可以進入PCMCIA字元設備驅動。然而,大多數這裡的驅動是供貨商/設備特定的。
原始塊設備驅動允許塊設備綁定到設備文件上/dev/raw/rawN(RAW driver (/dev/raw/rawN))。這麼做的好處是高效的零拷貝。然而,大多數軟體更偏好通過/dev/sd 或者 /dev/hd訪問存儲設備。
下面,可以設置支持的原始設備的最大數量。
下面的驅動可以生成設備文件/dev/hpet (HPET - High Precision Event Timer)。
注意:你們中很多人可能會想知道為什麼要啟用這些設備文件問題。好的,這些設備文件充當了一個軟體和硬體之間的介面。
通過這個驅動可以映射HPET驅動(Allow mmap of HPET)。映射是一個生成設備和文件在內存中的地址列表。文件接著可以通過內存地址更快地找到並且接著指揮硬碟從地址中得到數據。
"Hangcheck timer"用於檢測系統是否被鎖定。這個定時器監視著鎖定進程。當一個進程被凍結了,定時器就開啟。當定時器停止後,如果進程還沒有重啟或者關閉,那麼定時器會強迫進程關閉。
引用Linus Torvalds的話:可移植性是對於那些無法寫新程序的人而言的。
使用Trusted Computing Group(可信賴計算組)規範的TPM安全晶元會需要這個驅動(TPM Hardware Support)。
現在,我們可以進入I2C設備。I2C代表的是"Inter-Integrated Circuit"(內部集成電路)並經常被成為"eye two see"。然而,一些人會說"eye squared see"。I2C是一種串列匯流排標準。
一些舊的軟體將I2C適配器作為類設備,但是如今的軟體不會這麼做(Enable compatibility bits for old user-space)。所以,這個驅動會提供對舊軟體的向後支持。
接下來,可以生成I2C設備文件(I2C device interface)。
I2C可以通過這個驅動提供復用支持(I2C bus multiplexing support)。
I2C可以通過這個驅動支持GPIO控制的復用(GPIO-based I2C multiplexer)。
對於開發者用這個驅動可以在I2C和SMBus上執行不同的測試(I2C/SMBus Test Stub)。
I2C系統啟用這個特性可以生成調試信息(I2C Core debugging messages)。
下一個驅動生成額外的I2C調試信息(I2C Algorithm debugging messages)。
引用Linus Torvalds的話:Linux中沒有原始設備的原因似乎我個人任何原始設備是一個愚蠢的注意。
下面的驅動會使I2C驅動生成調試信息(I2C Bus debugging messages)。
接下來,我們有串列外設介面(Serial Peripheral Interface)支持(SPI support)。SPi是一種用於SPI匯流排的同步串列協議。
在這之後,有一個驅動用於高速同步串列介面(High speed synchronous Serial Interface support)支持(HSI support)。HSI是一種同步串列協議。
PPS同樣在Linux內核中支持(PPS support)。
"IP-over-InfiniBand"驅動支持IP包通過InfiniBand(譯註:一種無限帶寬技術)傳輸。
在這之後,有一個調試驅動用於IP-over-InfiniBand(IP-over-InfiniBand debugging)。
SCSI的RDMA協議同樣可以通過InfiniBand傳輸(InfiniBand SCSI RDMA Protocol)。
這裡同樣有一種通過InfiniBand傳輸iSCSI協議的擴展(iSCSI Extensions for RDMA (iSER))。
有時候,錯誤發生在了整個系統必須知道的核心系統中(EDAC (Error Detection And Correction) reporting)。這個驅動發送核心給系統。通常地,這類底層錯誤由處理器中報告並接著由這個驅動讓其他系統進程知道或者處理錯誤。
這個驅動提供了在老版本中的sysfs中使用的過時EDAC的支持(EDAC legacy sysfs)。
EDAC可以用來設置發送調試信息給Linux的日誌系統(Debugging)。
引用Linus Torvalds的話:沒有人可以第一次創造如此好的代碼,除了我。
"Machine Check Exceptions"(機器檢測異常)(MCEs)通過這個驅動被轉化成可讀的信息(Decode MCEs in human-readable form (only on AMD for now))。MCEs是由CPU檢測到的硬體錯誤。MCEs通常觸發內核錯誤。
將MCE解碼成可讀的形式的過程可以被注射用於測試錯誤處理(Simple MCE injection interface over /sysfs)。
下一個驅動允許錯誤在內存中被檢測到並糾正(Main Memory EDAC (Error Detection And Correction) reporting)。
下面,還有很多用於特定設備組的檢測和糾正錯誤的驅動。
引用Linus Torvalds的話:理論和實踐有時會衝突。那這個發生時,理論輸了。每次都是。
現在我們可以進入實時時鐘("Real Time Clock")。這通常縮寫為"RTC"。RTC一直跟隨著時間。
下面的設定允許用戶在Linux系統中使用RTC時間作為"掛鐘"時間(Set system time from RTC on startup and resume)。這個掛鐘是我們在桌面上或者通過"date"命令看到的時間。
另外,掛鐘可以通過NTP伺服器得到時間並與RTC同步(Set the RTC time based on NTP synchronization)。
一些系統有幾個RTC,所以用戶必須設置哪一個是默認 (RTC used to set the system time)。最好設置第一個(/dev/rtc0)為主時鐘。
可以設置RTC系統的調試特性(RTC debug support)。
RTC可以使用不同的介面給予操作系統當前時間。使用sysfs會需要這個驅動(/sys/class/rtc/rtcN (sysfs)),而似乎用proc需要這個驅動 (/proc/driver/rtc (procfs for rtcN))。特殊的RTC字元設備可以生成並使用 (/dev/rtcN (character devices))。shell命令"hwclock"使用/dev/rtc,所以RTC字元設備。
下一個驅動允許在/dev介面上模擬RTC中斷(RTC UIE emulation on dev interface)。這個驅動讀取時鐘時間並允許新的時間從/dev中檢索。
RTC系統可以通過測試驅動測試(Test driver/device)。
下面,我們會討論直接內存訪問系統。DMA是硬體獨立於處理器的內存訪問過程。DMA增加的系統性能因為處理器將做得更少如果硬體自身做了更多的任務。不然,硬體會等待處理器完成任務。
這是調試DMA系統的調試引擎(DMA Engine debugging)。
接下來,有許多的供貨商/設備特定驅動用於DMA支持。
一些DMA通過這個驅動支持大端讀取和寫入(Use big endian I/O register access)。
大端指的是二進位碼的排列。英語國家的數字系統將數字的最大端放在左邊。比如,數字17,最左的數字是放置十位的地方大於個位。在大端中,每位元組最大的放在左邊。位元組有8位。比如:10110100。每一處都有相應的值128、64、32、16、8、4、2、1。所以提到的為被轉換成十進位180。
DMA系統可以使用網路減小CPU使用(Network: TCP receive copy offload)。
"DMA Test Client"用於測試DMA系統。
下一篇文章中,我們會討論顯示/視頻驅動。謝謝!
參考:Linus Torvalds的引用來自於:http://en.wikiquote.org/wiki/Linus_Torvalds
via: http://www.linux.org/threads/the-linux-kernel-configuring-the-kernel-part-17.4875/
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive