核心硬體支援
隨著Linux的這些年的發展並逐步進入主流行列,從核心所支援的裝置類型來看,每 一次的核心發布,都像是一次跳躍:支援新興的技術(2.4的USB),支援古老一些的傳統技術(2.2的MCA)。發展到Linux2.6,不被Linux支援的裝置已經相當少了。PC機上的主流硬體沒被支援的很少。正是由於這個原因,多數(顯然不是所有)關於硬體支援方面的改進(包括上面所說的裝置模型)圍繞對已有支援的加強。
內部裝置匯流排
位於系統底層的匯流排幾乎與處理器同樣重要;這些匯流排就像膠合劑,將系統的各個組件連到一起。在PC世界中,這些匯流排一直是不可或缺的,無論是老的ISA(在最初的IBM PC機中可以找到)匯流排,還是現在的外部串口以及無線(wireless)匯流排。一旦新的匯流排及裝置變成流行的消費產品,Linux總是能以很快的速度去適應它;而對於不很流行的裝置,情況則差很多。
一個能說明這一情況的例子就是ISA匯流排的PnP(隨插即用)特性,Linux直到2.4版本才支援ISA匯流排的隨插即用擴充,比其他流行的商業作業系統要晚很多(在核心支援ISA PnP之前,你或許可以勉強使用一些使用者態的公用程式使它工作)。Linux 2.6對這個子系統做了一個重要的改進,使它更完善、更好地整合於新的裝置模型之中。新特性包括完整的PnP BIOS支援、裝置名稱資料庫以及一些其他的使系統更加健壯的特性。這些改進的結果,是使得Linux成為一個真正意義上的隨插即用作業系統,並且可以被設定成就像那些相容機的BIOS達到的那樣。
ISA時代ISA-PnP的兩個可選的替代方案是MCA(微通道體系)和EISA(擴充ISA),儘管它們不那麼流行。在Linux2.6的開發週期中,這兩個子系統都做了一些改進以支援新的裝置模型。此外,通過引入裝置名稱資料庫,EISA與其他子系統一起獲得了更進一步的標準化。
除了剛才提到的幾個重要特性,Linux對硬體匯流排的支援也做了許多其它值得關注的改變。PCI匯流排是所有匯流排中最流行也是最重要的匯流排,Linux 2.6極大地提升了對它的支援,包括改進的熱插拔和電源管理支援。新版本同樣也支援包含多個AGP匯流排(即高速圖形連接埠――基於PCI協議的一種獨立高速匯流排)的系統,如高端圖形工作站。就對PC硬體的支援而言,Linux緊緊跟隨著硬體市場的潮流。
除了這些實際的裝置匯流排,Linux2.6也增加了一個概念上的Legacy匯流排。這種匯流排對每種體繫結構都是專有的,這些體繫結構包含所有你可能想到的裝置。例如,在一台PC機上,可能會有板上(on-board)的串口、並口、以及PS/2連接埠,這些裝置實際存在著,但不被系統中的任何一個實際匯流排所枚舉(enumerated)。在其他的一些平台上,這種Legacy支援可能包含更複雜的事情(如查詢韌體)。但一般來說,這隻是一層封裝,使得裝置驅動程式在新的驅動模型視圖下能以標準的方式操作這些裝置。
外部匯流排
雖然早先的裝置標準成熟並鮮有新的特性增加,但USB是一個例外。USB的支援在最近的核心開發週期中有了許多改進,其中最為顯著的是新核心將支援USB 2.0裝置。USB2.0是一種新的標準,支援裝置頻寬高達480M bps(當前的USB只有12Mbps)。支援此標準的裝置通常被稱作高速USB裝置,它們正逐步佔領市場。另外一個新的相關標準叫做USB On-the-Go(或稱作USB OTG),它是USB協議中一個點到點的變種,用以直連裝置;Linux 2.6尚未支援它(2.6的補丁是可以支援的)。除了裝置支援外,多數USB裝置的枚舉方式都作了修正,使得Linux能訪問現今許多同類型裝置的所有執行個體(instance)。這一點對於大型印表機或存放裝置來說相當有益(雖然後者可能更傾向於使用專用儲存匯流排)。很明顯,這一領域的技術最近幾年成長顯著,Linux對相關裝置的支援也是緊跟市場的步伐。
無線裝置
過去的幾年,無線技術在公眾應用中真正起飛了。看起來,在不遠的將來,線纜(非電源)將成為曆史。無線裝置既包括網路裝置(目前最常見的無線裝置),也包括更通用的裝置,比如PDA。
在無線網路空間中,裝置可以大致分為長距(如基於業餘無線裝置的AX.25)和短距(通常是802.11,但一些舊式協議也存在)。從很早的時候(v1.2)起,對這兩者的支援就成為 Linux的一個特徵。在 2.6 的開發中,它們又都得到了更新。這裡最大的改動是,用於支援各種板卡、協議的短距子系統的主要組件合并為一個單一的"無線"子系統以及 API。通過提供一組能工作於所有支援的裝置的使用者空間工具來實現不同的裝置統一處理。這種方式解決了原先的不同裝置不同處理所帶來的很多小的相容性問題。除了這種標準化之外,Linux 2.6版核心還有很多全域性的改進,包括當狀態發生改變(比如一個處於"漫遊"狀態的裝置)時更好的通知能力,以及對旨在更好地處理無線裝置中周期性的延遲波動的一個TCP相關的改動。由於人們對2.4版核心中無線支援的期望,上述的很多特性已經包含在2.4版核心中了。
在無線裝置空間,有著類似的主要改進。IrDA(以 Infrared Data Associates group命名的紅外線協議)部分自上一主要發布以來有一些改進,比如電源管理、整合進了新的核心驅動模型。真正的改進還在於提供了對藍牙裝置的支援。藍芽是一種新的無線協議,它設計為短距,功耗很低,也沒有 IrDA 中的"視線"的限制。作為一種協議,藍芽被設計為"到處可用"。它已被應用於多種裝置,如 PDA,行動電話,印表機,以及更為怪異(bizarre)的裝置如車載裝置。協議本身由兩種不同的資料連線類型組成:用於有損音頻應用的SCO(Synchronous Connection Oriented,同步連線導向);以及可以支援重傳等更為強壯的串連L2CAP(Logical Link Control and Adaptation Protocal,邏輯串連控制和適配協議)。L2CAP 還進一步的支援各種子協議,包括用於點對點網路的 RFCOMM 以及用於類乙太網路的 BNEP。Linux對採用藍芽技術的裝置的支援在不斷提升,我們可以相信,當足夠多的採用藍芽技術的裝置被使用時,這種支援將會非常成熟。值得一提的是,對藍芽最初的支援已經整合到了2.4系列核心後幾個版本中。
塊裝置支援
儲存匯流排
在2.6的開發中,IDE/ATA、SCSI等儲存匯流排也都得到了主要的更新。最主要的改變集中於被重寫(再一次被重寫)的 IDE 子系統,解決了許多可擴充性問題以及其他限制。比如,現在 IDE CD/RW 裝置可以直接通過IDE磁碟驅動程式進行寫操作,這種實現方法比過去的方法要簡潔的多。(在以前,需要再使用一個特別的SCSI類比的驅動程式。這樣顯得很混亂,而且實現起來有困難。) 現在,遇到一個不能識別的控制器時,IDE 層可以查詢機器的 BIOS 資訊,從而擷取時序操作所需資料或其他資料。SCSI部分有不少散佈於系統中的小的改進,使之能支援更多的裝置,同時提升了可擴充性。一個針對舊式系統的特別改進是,現在的 Linux能夠支援 SCSI-2多通道裝置(這種裝置在單個裝置上有多於2個的 LUN)。另一個重要的改進則是現在 Linux 能夠默像 MS Windows那樣檢測介質的變動,以更好地相容那些並不完全遵照標準規範的裝置。既然這些技術曆經時間的考驗穩定下來,那麼 Linux 也提供對它們的支援。
Linux現在也包含對新一些的機器的EDD(Enhanced Disk Device) BIOS進行直接存取的支援,這樣便可以獲得伺服器中的磁碟裝置視圖。EDD BIOS包含所有串連到系統的、BIOS識別的儲存匯流排(包括IDE以及SCSI)的資訊。除了獲得串連裝置的配置以及其他資訊之外,它還有另外幾個優點。比如,這種新的介面使 Linux 能夠知道系統是從哪一個磁碟裝置上啟動的。這在新一些的系統上非常有用,因為這樣的系統中到底是從哪一個裝置啟動的常常不明顯。Aactive Setup程式也可以考慮使用這些資訊,比如在決定把GRUB(一種Linux啟動裝載器)安裝在哪裡時。
所有這些改動之外,這裡需要再次強調的是,所有的匯流排裝置類型(硬體、無線和儲存)都整合到了Linux新的裝置模型子系統中。一些改動僅僅是"裝飾性"的,另一些則包含了非常顯著的改動(比如,甚至是如何檢測裝置的邏輯都需要修改)。
檔案系統
Linux(或其他一些系統)下塊裝置的最常見用法是在塊裝置上面建立一個檔案系統。相對Linux 2.4而言,Linux 2.6對於檔案系統的支援在很多方面都有大的改進。關鍵的變化包括對擴充屬性(extended attributes)以及POSIX標準的存取控制(access controls)的支援。
EXT2/EXT3檔案系統作為多數Linux系統預設安裝的檔案系統,是在2.6中改進最大的一個。最主要的變化是對擴充屬性的支援,也即給指定的檔案在檔案系統中嵌入一些中繼資料(metadata)。一些擴充屬性被系統使用,只能由root使用者進行讀寫。很多其他動作系統,如Windows和MacOS系統已經大量地使用了這種擴充屬性。不幸的是,UNIX系的作業系統一般都還沒有很好地支援擴充屬性,很多使用者級的程式(比如tar)需要進行更新才能儲存和轉儲這些擴充屬性資訊。這是Linux成長的又一方面;Linux對擴充屬性的支援正在成熟。
新的擴充屬性子系統的第一個用途就是實現POSIX存取控制鏈表。POSIX存取控制是標準UNIX許可權控制的超集,支援更細粒度的存取控制。必要的話(比如從NFS輸出檔案的時候),這些存取控制可以被映射到標準的user/group許可權控制上。除了以上,EXT3還有其他一些小的變化。檔案系統日誌提交(commit)的時間能夠進行調整得更加適合於膝上型電腦(處於省電模式時,可能會加速磁碟機);預設的載入選項可以儲存在檔案系統自身之中(這樣不用每次載入時都輸入載入選項);可以標記一個目錄為"indexed"以加速在這個目錄中的檔案尋找。
Linux對檔案系統層還進行了大量的改進以相容PC機的主流作業系統。首先,Linux 2.6支援Windows的邏輯卷管理器(即動態磁碟Dynamic Disks)。這個是Windows XP及後續版本中新的分區表機制,能夠很方便的支援多分區系統中的分區大小的調整以及新分區的建立。(當然,Linux系統不一定會馬上使用這一機制)其次,Linux 2.6對NTFS檔案系統的支援也進行了重寫,現在能以讀/寫入模式安裝一個NTFS卷。寫支援仍處於實驗階段,在逐步改進;最終的核心發布版中可能含有也可能不含有寫支援這一部分。最後,Linux對FAT12(很老的系統或磁碟片上使用的DOS檔案系統)的支援中消除了使用一些MP3播放器時所遇到的bug。跟蹤PC領域的其他一些技術將一直是Linux核心向前發展的一個重要環節。
檔案系統部分在與其他動作系統的相容性方面也有改進。對HPFS檔案系統(OS/2和其他系統中使用)的擴充屬性的支援有了改進。OS/2風格的擴充屬性被分離到另一個的名字空間中。XFS檔案系統也得到了更新,以達到與IRIX作業系統的磁碟級(on-disk)相容。
此外,Linux檔案系統中還有很多分散的變化。配額(quota)管理進行了重寫以便系統可以支援更多的使用者;使用者可以標記目錄為同步,從而所有變化(增加檔案等)都是原子的(這一點對於郵件系統和基於目錄的資料庫系統尤為重要,而且在磁碟故障的恢複方面也更好一些);透明壓縮功能(僅Linux支援的擴充)被加到ISO9660檔案系統(CD-ROM中使用)中。最後,一個新的基於記憶體的檔案系統(hugetlbfs)被建立;建立該檔案系統旨在更好地支援基於共用記憶體的資料庫。