Linux配置并编译内核
-
幾種配置方法
? ? ? ? 配置內(nèi)核代碼并不會花費太長時間。配置工具會詢問許多問題并且允許開發(fā)者配置內(nèi)核的每個方面。如果你有不確定的問題或者特性,你最好使用配置工具提供的默認(rèn)值。本系列教程會使讀者逐步了解配置內(nèi)核的整個過程。
? ? ? ? 配置代碼前需要在源文件的文件夾內(nèi)打開一個終端。當(dāng)終端打開后,基于你喜好的配置界面,這里有幾種不同的配置方法:
- make config - 純文本界面 (最常用的選擇)。?
- make menuconfig - 基于文本彩色菜單和單選列表。這個選項可以加快開發(fā)者開發(fā)速度。需要安裝ncurses(ncurses-devel)。?
- make nconfig - 基于文本的彩色菜單。需要安裝curses (libcdk5-dev)。?
- make xconfig - QT/X-windows 界面。需要安裝QT。?
- make gconfig - Gtk/X-windows 界面。需要安裝GTK。?
- make oldconfig - 純文本界面,但是其默認(rèn)的問題是基于已有的本地配置文件。?
- make silentoldconfig - 和oldconfig相似,但是不會顯示配置文件中已有的問題的回答。?
- make olddefconfig -和silentoldconfig相似,但有些問題已經(jīng)以它們的默認(rèn)值選擇。?
- make defconfig - 這個選項將會創(chuàng)建一份以當(dāng)前系統(tǒng)架構(gòu)為基礎(chǔ)的默認(rèn)設(shè)置文件。?
- make ${PLATFORM}defconfig - 創(chuàng)建一份使用arch/$ARCH/configs/${PLATFORM}defconfig中的值的配置文件。?
- make allyesconfig - 這個選項將會創(chuàng)建一份盡可能多的問題回答都為‘yes’的配置文件。?
- make allmodconfig - 這個選項將會創(chuàng)建一份將盡可能多的內(nèi)核部分配置為模塊的配置文件。
注意:內(nèi)核代碼可以放進(jìn)內(nèi)核自身,也可以成為一個模塊。例如,用戶可以將藍(lán)牙驅(qū)動作為一個模塊加入(獨立于內(nèi)核),或者直接放到內(nèi)核里,或者完全不加藍(lán)牙驅(qū)動。
make allnoconfig - 這個選項只會生成內(nèi)核所必要代碼的配置文件。它對盡可能多的問題都回答no。這有時會導(dǎo)致內(nèi)核無法工作在為編譯該內(nèi)核的硬件上。?
make randconfig - 這個選項會對內(nèi)核選項隨機選擇(譯注:這是做什么用途的?!)。?
make localmodconfig - 這個選項會根據(jù)當(dāng)前已加載模塊列表和系統(tǒng)配置來生成配置文件。?
make localyesconfig - 將所有可裝載模塊(LKM)都編譯進(jìn)內(nèi)核(譯者注:這里與原文 ‘This will set all module options to yes - most (or all) of the kernel will not be in modules’的意思不同,作者也作出了解釋:13307)。
貼士:最好使用“make menuconfig”,因為用戶可以保存進(jìn)度。“make config”不會提供這樣的便利,因為配置過程會耗費大量時間。
-
配置:
大多數(shù)開發(fā)者選擇使用“make menucongfig”或者其他圖形菜單之一。如下圖所示。
? ? ? ? ? ??
"Cross-compiler tool prefix (CROSS_COMPILE) []"(交叉編譯器工具前綴):如果你不是做交叉編譯就不用設(shè)置。如果你正在交叉編譯,對ARM系統(tǒng)輸入像"arm-unknown-linux-gnu-",對64位PC輸入像"x86_64-pc-linux-gnu-"的字樣。對其他處理器而言還有許多其他可能的命令,但是這個表太大了。一旦一名開發(fā)者知道他們想要支持的處理器,很容易就可研究出處理器需要的命令。
注意:交叉編譯是為別的處理器編譯代碼。比如,一臺Intel系統(tǒng)正編譯著不在Intel處理器上運行的程序,比如,這個系統(tǒng)可能正在編譯著要在ARM或AMD處理器上運行的代碼。
注意:每一項選擇會改變接下來顯示什么問題及何時顯示。
“Local version - append to kernel release (LOCALVERSION) []”(本地版本號,附加到內(nèi)核版本號后面):這使開發(fā)人員可以給定一個特殊版本號或命名他們自定義的內(nèi)核。我將輸入“LinuxDotOrg”,這樣,內(nèi)核版本會顯示為“3.9.4-LinuxDotOrg”。接下來。
? ? ? ? “Automatically append version information to the version string (LOCALVERSION_AUTO)(是否自動添加版本信息到版本號后):如果本地有一個Git版本庫,git的修訂號會被添加到版本號后面。沒有使用git,則不選中該項。不然git修訂號將會追加到版本號中。
? ? ? ? ?Kernel compression mode (Gzip) ?--->?使用哪一種格式壓縮內(nèi)核:開發(fā)人員可以從五個選項中選擇一個。
- Gzip (KERNEL_GZIP)?
- Bzip2 (KERNEL_BZIP2)?
- LZMA (KERNEL_LZMA)?
- XZ (KERNEL_XZ)?
- LZO (KERNEL_LZO)
Gzip是默認(rèn)值。每種壓縮格式和其他壓縮格式相比都有更高或者更低的壓縮比,更好的壓縮比意味著更小的體積,但是與低壓縮比文件相比,它解壓時需要更多的時間。
“((none))Default hostname”(默認(rèn)主機名):這里可以配置主機名。通常地,開發(fā)者這行留空(我這里留空),以便以后Linux用戶可以自己設(shè)置他們的主機名。
"System V IPC"(內(nèi)核是否支持IPC):進(jìn)程間通信使進(jìn)程間可以通信和同步。最好啟用IPC不然許多程序?qū)o法工作。
? ? ?“POSIX Message Queues”(是否使用POSIX消息隊列):這個問題只會在IPC啟用后看見。POSIX消息隊列是一種給每條消息一個優(yōu)先級的消息隊列(一種進(jìn)程間通信形式)。
“open by fhandle syscalls”(是否使用文件句柄系統(tǒng)調(diào)用來打開文件):當(dāng)有需要進(jìn)行文件系統(tǒng)操作的時候,程序是否允許使用文件句柄而不是文件名進(jìn)行。
“Auditing support”(是否支持審計):審計支持會記錄所有文件的訪問和修改,如果選中,才會彈出下一條“Make audit loginuid immutable ”。
? ? ? “Make audit loginuid immutable ”(是否要審計進(jìn)程身份ID不可變):進(jìn)程是否可以改變它們的loginuid(LOGIN User ID),如果啟用,用戶空間的進(jìn)程將無法改變他們的loginuid。為了更好的性能,我們這里禁用這個特性。(譯注:對于使用systemd這樣的系統(tǒng),其是通過中央進(jìn)程來重啟登錄服務(wù)的,設(shè)置為“y”可以避免一些安全問題;而使用較舊的SysVinit和Upstart的系統(tǒng),其需要管理員手工重啟登錄服務(wù),應(yīng)該設(shè)置為“N”)
注意:當(dāng)通過"make menuconfig"配置時,無論用戶按任何鍵都無法改變選項。開發(fā)者不需要去改變這些選項,因為之前的選擇決定了另外一個問題的選擇。
"IRQ subsystem--->"配置內(nèi)核IRQ子系統(tǒng):中斷請求(IRQ)是硬件發(fā)給處理器的一個信號,它暫時停止一個正在運行的程序并允許一個特殊的程序占用CPU運行。
IRQ subsystem目錄中的第一個問題屬于內(nèi)核特性,"Expose hardware/virtual IRQ mapping via debugfs "(通過debugfs來顯示硬件/虛擬的IRQ映射):使用虛擬的調(diào)試文件系統(tǒng)來映射硬件及Linux上對應(yīng)的IRQ中斷號。這個用作調(diào)試目的,大多數(shù)用戶不需要用到,所以我選擇了"no"。
"Timers subsystem --->"(計時器子系統(tǒng)):
? ? ? ? ? ?“[ ] Old Idle dynticks config:舊的入口,此選項被用來保持與舊版本的兼容,未來會被刪除。
? ? ? ? ? "[ ] High Resolution Timer Support"(高精度定時器):并不是所有的硬件支持這個,通常地說,如果硬件很慢或很舊,那么選擇"no",否則像我一樣選擇"yes"。如果你的硬件不能勝任這個選項,那么開啟這個選項僅僅是給內(nèi)核增加體積。高精度定時器(hrtimer)是從2.6.16開始被引入內(nèi)核,采用紅黑樹算法(傳統(tǒng)timer使用時間輪算法),在硬中斷中執(zhí)行中斷服務(wù)例程,它可以為我們提供納秒級的定時精度,以滿足對精確時間有迫切需求的應(yīng)用程序或內(nèi)核驅(qū)動,例如多媒體應(yīng)用,音頻設(shè)備的驅(qū)動程序等等
"CPU/Task time and stats accounting --->"(CPU/任務(wù)用時與狀態(tài)統(tǒng)計):這個是關(guān)于進(jìn)程的追蹤。第一個問題看上去像這樣:
? ? ? ? ? ?"Cputime accounting ( ) --->"CPU時間統(tǒng)計方式,總共有三種選擇:
注意:CPU滴答是抽象測量CPU時間的方式。每個處理器、操作系統(tǒng)和安裝的系統(tǒng)都不同,比如說,一個更強大的處理器會比老的處理器擁有更多的CPU滴答。如果你安裝了一個Linux系統(tǒng),然后接著在同一塊磁盤上重新安裝了它,你可能會得到一個更快或更慢的CPU滴答時間(至少一些計算機技術(shù)書上這么說)。通常來講,一個更快的時鐘速度意味著更多的CPU滴答。
"BSD Process Accounting"(BSD進(jìn)程記賬):這個內(nèi)核特性會記錄每個進(jìn)程不同的關(guān)閉信息。為了得到一個更小和更快的內(nèi)核,選擇"no".
"Export task/process statistics through netlink (通過netlink導(dǎo)出任務(wù)/進(jìn)程統(tǒng)計數(shù)據(jù)) ":?使內(nèi)核可以通過網(wǎng)絡(luò)套接字導(dǎo)出進(jìn)程統(tǒng)計。網(wǎng)絡(luò)套接字是內(nèi)核和用戶空間進(jìn)程間IPC通信的一種形式。如果啟用本項,才會彈出下兩項:
Enable per-task delay accounting (TASK_DELAY_ACCT) (啟用針對每個任務(wù)的延遲統(tǒng)計)?
Enable extended accounting over taskstats (TASK_XACCT) (啟用taskstats的擴展統(tǒng)計)?
? ? ? ? ? TASK_DELAY_ACCT監(jiān)視進(jìn)程并注意資源訪問的延遲。比如,TASK_DELAY_ACCT可以看到X進(jìn)程正在為了CPU時間而等待,如果TASK_DELAY_ACCT觀察到進(jìn)程已經(jīng)等待了太長時間,這個進(jìn)程接著就會被給予一些CPU時間。TASK_XACCT會收集額外的統(tǒng)計數(shù)據(jù),為了更小的內(nèi)核負(fù)載我會禁用這個。
"RCU Subsyctem --->"顯示RCU子系統(tǒng):讀取-復(fù)制-更新子系統(tǒng)是一種低負(fù)載的同步機制,它允許程序查看到正在被修改/更新的文件。配置工具已經(jīng)回答了第一個問題。
RCU Implementation (RCU 實現(xiàn)方式)
"Kernel . config support":允許.config文件(即編譯LINUX時的配置文件)保存在內(nèi)核當(dāng)中。開發(fā)人員可以選擇保存由這個配置工具生成的設(shè)置到一個文件中。這個文件可以放在內(nèi)核中,也可在一個模塊中,或者完全不保存。這個文件可以被想要編譯一個完全跟某人相同內(nèi)核的開發(fā)者使用。這個文件還可以幫助開發(fā)人員使用一個更新的編譯器重新編譯一個內(nèi)核。舉例來說,開發(fā)人員配置并編譯了一個內(nèi)核,然而編譯器有一些bug,但開發(fā)人員仍然需要一個使用這些設(shè)置的內(nèi)核。而值得慶幸的是,開發(fā)人員可以升級他們的編譯器,并使用設(shè)置文件來節(jié)省他們重新配置內(nèi)核的時間。開發(fā)人員也可以在另一臺計算機上保存源代碼和配置文件并編譯內(nèi)核。至于另一個目的,開發(fā)人員可以加載該文件,并根據(jù)需要調(diào)整設(shè)置。
? ? ? ? "[ * ] Enable access to .config through /proc/config.gz "(啟用通過/proc/config.gz來訪.config)。
"(14) Kernel log buffer size (16 => 64KB, 17 => 128KB) "(內(nèi)核日志緩沖區(qū)大小):小的緩沖區(qū)意味著它無法像更大的緩沖區(qū)那樣保持日志更長的時間。這個選擇取決于開發(fā)者想要日志保持的時間。
"Namespaces support? --->"? 命名空間支持:允許服務(wù)器為不同的用戶信息提供不 同的用戶名空間服務(wù)?
?? ?[*]?? UTS namespace? 通用終端系統(tǒng)的命名空間。它允許容器,比如Vservers利用UTS命名空間來為不同的服務(wù)器提供不同的UTS。如果不清楚,選N。?
?? ?[*]?? IPC namespace? ?IPC命名空間,不確定可以不選?
?? ?[*]?? User namespace ? User命名空間,不確定可以不選?
?? ?[*]?? PID Namespaces? ?PID命名空間,不確定可以不選?
?? ?[*]?? Network namespace? ?
? ? ? ? "Automatic process group scheduling":? ?自動進(jìn)程組調(diào)度
? ? ? ? "[ ] enable deprecated sysfs features to support old userspace tools "
? ? ? ? "Kernel->user space relay support (formerly relayfs) ":在某些文件系統(tǒng)上( 比如debugfs ) 提供從內(nèi)核空間向用戶空間傳遞大量數(shù)據(jù)的接口,我目前沒有此類應(yīng)用場景?
? ? ? ?"[*] Initial RAM filesystem and RAM disk (initramfs/initrd) support":用于在真正內(nèi)核裝載前,做一些操作(俗稱兩階段啟動),比如加載module ,mount 一些非root 分區(qū),提供災(zāi)難恢復(fù)shell 環(huán)境等。
? ?接下來,關(guān)于初始虛擬磁盤(Linux的內(nèi)核映像文件)所支持的壓縮格式。你可以啟用所有支持的壓縮格式。
- ? ? Support initial ramdisks compressed using gzip ?
- ? ? Support initial ramdisks compressed using bzip2?
- ? ? Support initial ramdisks compressed using LZMA
- ? ? Support initial ramdisks compressed using XZ?
- ? ? Support initial ramdisks compressed using LZO?
? ? ? ? "Optimize for size "(優(yōu)化大小):設(shè)置了內(nèi)核的編譯內(nèi)核編譯選項。開發(fā)者可以讓編譯器在編譯時優(yōu)化代碼。
"Configure standard kernel features (expert users)--->?"(配置標(biāo)準(zhǔn)內(nèi)核特性(專家級用戶)):配置更多的內(nèi)核特性。
? ? ? ? ? ? ? Enable 16-bit UID system calls (UID16)): 啟用過時的16位UID系統(tǒng)調(diào)用封裝器,,系統(tǒng)調(diào)用就會使用16位UID。
? ? ? "sysctl syscall"(Sysctl syscall support )支持。這使/proc/sys成為二進(jìn)制路徑的接口。
? ? ? "Load all symbols for debugging/ksymoops "(載入所以的調(diào)試符號)
? ? ? ? ? ? ?"Include all symbols in kallsyms "(包括所有的kallsyms符號)。這些都是啟用調(diào)試標(biāo)志。
? ? ? ( (Enable support for printk)啟用printk支持,這會輸出內(nèi)核消息到內(nèi)核日志中。這在內(nèi)核出錯時是很重要的。編譯一個"啞巴"內(nèi)核并不是一個好主意。然而,如果我們啟用了這個支持,就會被一些開發(fā)者看到這些出錯,要么就不要啟用。
? ? ? ?(BUG() support)bug支持: 除非有必要,否則可以禁用。禁用這項將會不支持WARN信息和BUG信息。這會減小內(nèi)核的體積。
? ? ? (Enable ELF core dumps ):內(nèi)核是否可以生成內(nèi)核轉(zhuǎn)儲文件。這會使內(nèi)核變大4KB。所以選擇了"no"。
注意:內(nèi)核轉(zhuǎn)儲文件(內(nèi)存或者系統(tǒng)的轉(zhuǎn)儲)是程序崩潰前已記錄的狀態(tài)。內(nèi)核轉(zhuǎn)儲是用來調(diào)試問題的。這個轉(zhuǎn)儲文件的格式是ELF(Executable and Linkable Format )。 ? ? ? ?
? ? ? ?(Enable full-sized data structures for core)(啟用完全大小的內(nèi)核數(shù)據(jù)結(jié)構(gòu)):雖然會增加內(nèi)核的大小,但性能也隨之增加。所以選擇"yes"。
? ? ? ?(Enable futex support ):為了使內(nèi)核可以運行基于glibc的程序,必須啟用FUTEX。這個特性啟用了快速用戶空間互斥鎖(Fast Userspace muTEXes)。
? ? ? ?注意:glibc(GNU C Library)是由GNU實現(xiàn)的標(biāo)準(zhǔn)C庫。
? ? ? ?注意:FUTEX (fast userspace mutex)是用來防止兩個線程訪問同一個不能被多個線程使用的共享資源。
? ? ? ? (Enable eventpoll support ):使能epoll系統(tǒng)調(diào)用。epoll是一種I/O事件通知系統(tǒng)。
? ? ? ? (Enable signalfd() system call) :使能signalfd系統(tǒng)調(diào)用,可收到來自文件描述符的信號。
? ? ? ? (Enable timerfd() system call ):它允許程序使用定時器事件獲取文件描述符。
? ? ? ?(Enable eventfd() system call ):使能eventfd系統(tǒng)調(diào)用。它默認(rèn)啟用訪問共享內(nèi)存文件系統(tǒng)(Use full shmem filesystem (SHMEM)。共享內(nèi)存文件系統(tǒng)是一種虛擬內(nèi)存文件系統(tǒng)。
? ? ? ? "Enable AIO support (AIO)":使能線程化程序使用的POSIX異步I/O。
? ? ? ? 注意:異步I/O用來處理輸入/輸出,它允許線程在傳輸完成前就完成處理。
“Embedded system ”:如果你正在給一個嵌入式系統(tǒng)配置一個內(nèi)核,那么可以選擇"yes"。
? ? ? ?注意:嵌入式系統(tǒng)是運行在一個更大的電子系統(tǒng)的實時計算機。
(Kernel performance events and counters ))(內(nèi)核性能事件和計數(shù)器):配置內(nèi)核性能事件和計時器。配置工具沒有給開發(fā)者選擇,直接啟用了事件和計數(shù)器。這是一個重要特性。
(Enable VM event counters for /proc/vmstat )(VM事件計數(shù)器):如果啟用,那么事件計數(shù)就會顯示在/proc/vmstat。如果禁用就不會顯示,/proc/vmstat只會顯示內(nèi)存頁計數(shù)。
(Disable heap randomization )禁用隨機heap:(heap堆是一個應(yīng)用層的概念,即堆對CPU是不可見的,它的實現(xiàn)方式有多種,可以由OS實現(xiàn),也可以由運行庫實現(xiàn),如果你愿意,也可以在一個棧中來實現(xiàn)一個堆) 。然而我們不應(yīng)該去啟用它,因為任何基于libc5的軟件都無法工作在這個系統(tǒng)上!只有我們有特別的理由這么做或者如果你不會使用基于libc5的軟件時才去啟用它。
"Choose SLAB allocator"SLAB分配器: SLAB分配器是一個沒有碎片且有效率地將內(nèi)核對象放置在內(nèi)存中的內(nèi)存管理系統(tǒng)。
1. SLAB (SLAB)
2. SLUB (Unqueued Allocator) (SLUB)
3. SLOB (Simple Allocator) (SLOB)
(Profiling support ):支持?jǐn)U展性能。
? ? ? ?"GCOV-based kernel profiling --->"
? ? ? ?(Enable gcov-based kernel profiling )基于gcov的內(nèi)核分析。這可以被禁用。
"[*] Enable loadable module support ?--->"為了允許內(nèi)核加載模塊,需要啟用可加載模塊支持。
? ? ? ? (Forced module loading )(允許強制加載模塊?):內(nèi)核一般只能加載有版本號的模塊。如果想允許內(nèi)核加載沒有版本? ? 號的模塊,就啟用這個特性。除非你有特定的需求需要這個特性,否則不要啟用。
? ? ? ? (Module unloading)允許卸載已經(jīng)加載的模塊:如果啟用,Linux內(nèi)核也能卸載模塊。如果內(nèi)核判斷你要卸載的模塊不應(yīng)? 該被卸載,那么用戶則無法卸載模塊。
? ? ? ? ? ? ? ?(Forced module unloading )允許強制卸載正在使用中的模塊(比較危險):這個選項允許你強行卸除模塊,即使內(nèi)核認(rèn)為? 這不安全。內(nèi)核將會立即移除模塊,而不管是否有人在使用它(用 rmmod -f 命令)。這主要是針對開發(fā)者和沖動的用? 戶提供的功能。如果不清楚,選N。?
? ? ? ?(Module versioning support )允許使用其他內(nèi)核版本的模塊:使用不是為你的內(nèi)核開發(fā)的、或者并不適用你的版本號的? ? 模塊,可以啟用。最好不要混用不同版本號的模塊,所以我禁用了這個特性。
? ? ? ?(Source checksum for all modules ):為所有的模塊校驗源碼,如果你不是自己編寫內(nèi)核模塊就不需要它。這個功能是? ? 為了防止你在編譯模塊時不小心更改了內(nèi)核模塊的源代碼但忘記更改版本號而造成版本沖突。如果不清楚,選N。。
? ? ? ?(Module signature verification (MODULE_SIG)):模塊簽名驗證,并不必要,選中則內(nèi)核在加載模塊前會檢查并驗證簽? 名。
(Enable the block layer):塊設(shè)備支持,禁用這個將會使塊設(shè)備無法使用并且無法啟用某些文件系統(tǒng)。
? ?? ?(Block layer SG support v4):僅在使用大于2TB的塊設(shè)備時需要
? ? ? ? ? ? ?(Block layer SG support v4 helper lib ):通用scsi塊設(shè)備第4版支持?。
? ?? (Block layer data integrity support ):對塊設(shè)備的數(shù)據(jù)完整性支持。這個特性允許擁有更好的數(shù)據(jù)完整性來提供設(shè)備數(shù)據(jù)保護(hù)特性。許多設(shè)備不支持這個特性。
? ?? (Block layer bio throttling support ):可用于限制設(shè)備的IO速度,如果啟用那就可以限制設(shè)備的IO速率。
? ? ?(Advanced partition selection ):支持外部分區(qū),如果你想要在linux上使用一個在其他的介質(zhì)上運行著操作系統(tǒng)的硬盤時,選擇Y,如果你不確定時可以選N?。
? ? ? ? ? ? ?IO Schedulers:IO調(diào)度器I/O是輸入輸出帶寬控制,主要針對硬盤,是核心的必須的東西。這里提供了三個IO調(diào)度器:?
Deadline I/O scheduler:輪詢的調(diào)度器,簡潔小巧,提供了最小的讀取延遲和尚佳的吞吐量,特別適合于讀取較多的環(huán)境(比如數(shù)據(jù)庫)Deadline I/O調(diào)度器簡單而又緊密,在性能上和搶先式調(diào)度器不相上下,在一些數(shù)據(jù)調(diào)入時工作得更好。至于在單進(jìn)程I/O磁盤調(diào)度上,它的工作方式幾乎和搶先式調(diào)度器相同,因此也是一個好的選擇。??
?? ?CFQ I/O scheduler:QoS策略為所有任務(wù)分配等量的帶寬,避免進(jìn)程被餓死并實現(xiàn)了較低的延遲,可以認(rèn)為是上述兩種調(diào)度器的折中.適用于有大量進(jìn)程的多用戶系統(tǒng)CFQ調(diào)度器嘗試為所有進(jìn)程提供相同的帶寬。它將提供平等的工作環(huán)境,對于桌面系統(tǒng)很合適。??
?? ?Default I/O scheduler (No-op) :默認(rèn)IO調(diào)度器我這樣理解上面三個IO調(diào)度器:?
??? 搶先式是傳統(tǒng)的,它的原理是一有響應(yīng),就優(yōu)先考慮調(diào)度。如果你的硬盤此時在運行一項工作,它也會暫停下來先響應(yīng)用戶。??? 期限式則是:所有的工作都有最終期限,在這之前必須完成。當(dāng)用戶有響應(yīng)時,它會根據(jù)自己的工作能否完成,來決定是否響應(yīng)用戶。??? CFQ則是平均分配資源,不管你的響應(yīng)多急,也不管它的工作量是多少,它都是平均分配,一視同仁的。?
??? (? ) Deadline??? ?
??? (? ) CFQ? ?
??? (*?) No-op?
?
在下一個選項中可以選擇搶占模式。
Preemption Model(搶占模式)
1. No Forced Preemption (Server) ?(非強制搶占)
> 2. Voluntary Kernel Preemption (Desktop) ?(自愿內(nèi)核搶占)
3. Preemptible Kernel (Low-Latency Desktop) ?(可搶占內(nèi)核)
搶占就是暫停一個意圖讓它之后繼續(xù)執(zhí)行的中斷任務(wù)的過程。搶占強制一個進(jìn)程暫停,執(zhí)行中的任務(wù)無法忽視搶占。
接著,我們被詢問關(guān)于"Reroute for broken boot IRQs (X86_REROUTE_FOR_BROKEN_BOOT_IRQS)"。這是一個對于假中斷的簡單修復(fù)。假中斷是一種無用的硬件中斷,這些通常是有電子干擾或者錯誤連接的電子產(chǎn)品觸發(fā)。記住,中斷是發(fā)送給處理器需要馬上注意的信號。
這個選項對任何機器都很重要;我懷疑任何人可能都會有禁用這個特性的理由(Machine Check / overheating reporting (X86_MCE))。內(nèi)核必須意識到過熱和數(shù)據(jù)損壞,不然,系統(tǒng)將會繼續(xù)操作,這樣只會導(dǎo)致進(jìn)一步的破壞。
下面,用戶可以啟用禁用"Intel MCE features (X86_MCE_INTEL)",這是一種額外的對像熱度監(jiān)控的Intel MCE特性的支持。因為我是為AMD64處理器編譯內(nèi)核所以我選擇了"no"。機器檢測異常(MCE)是一種當(dāng)處理器發(fā)現(xiàn)硬件問題時的錯誤輸出。MCE通常會導(dǎo)致內(nèi)核嚴(yán)重錯誤(kernel panic)(相當(dāng)于Windows中的"藍(lán)屏")。
這個除了是AMD設(shè)備外是同一個問題Intel MCE features (X86_MCE_INTEL)。
下一個是我會禁用的調(diào)試特性(Machine check injector support (X86_MCE_INJECT))。這個會允許注射檢查。如果你偶爾執(zhí)行機器注射,那最好編譯成模塊而不是編譯進(jìn)內(nèi)核。機器注射可以使設(shè)備即使實際沒有錯誤也可以發(fā)送一個偽造的錯誤信息。這個用來確認(rèn)內(nèi)核和其他進(jìn)程可以正常處理錯誤。比如,如果CPU過熱,接著應(yīng)該關(guān)機,但是開發(fā)者如何在不損壞CPU的情況下測試代碼。注射錯誤是一種最好的方法,因為它只是一種告訴硬件發(fā)送錯誤信號的軟件。
注:模塊是對可能被使用或者很少執(zhí)行的特性/驅(qū)動而言的。只加入在許多使用該內(nèi)核的系統(tǒng)中用到的特性/驅(qū)動到內(nèi)核中。
如果內(nèi)核很可能用在Dell筆記本上,那么啟用這個特性(Dell laptop support (I8K))。否則,如果一些用戶可能在戴爾筆記本電腦上用到這個內(nèi)核,將其作為一個模塊加入。如果這個內(nèi)核不打算支持Dell筆記本,那就像我一樣忽略掉它。特別地,這個支持是一個允許Dell Inspiron 8000系列筆記本訪問處理器的系統(tǒng)管理模式的驅(qū)動。系統(tǒng)管理模式的目的是得到處理器的溫度和風(fēng)扇狀態(tài),這對一些需要控制風(fēng)扇的系統(tǒng)有用。
下面,用戶可以選擇微碼加載支持(CPU microcode loading support (MICROCODE))。這可以允許用戶在支持這個特性的AMD或者Intel芯片上更新微碼。
注意:為了加載微碼,你必須擁有一個為你的處理器設(shè)計的合法的二進(jìn)制微代碼拷貝。
如果要加載微碼補丁(修復(fù)bug或加入次要的特性)到intel芯片上(Intel microcode loading support (MICROCODE_INTEL)),這個就必須啟用。這里我禁用了它。
然后是AMD芯片的類似選項(AMD microcode loading support (MICROCODE_AMD))。
啟用這個支持(/dev/cpu/*/msr - Model-specific register support (X86_MSR))可以允許某個處理器有權(quán)限使用x86特殊模塊寄存器(Model-Specific Registers (MSRs))。這些寄存器是一些字符設(shè)備,包括major 202下minor 0到31的設(shè)備((/dev/cpu/0/msr to /dev/cpu/31/msr))。這個特性用在多處理器系統(tǒng)上。每個虛擬字符設(shè)備都連接到一個特定的CPU。
注意:MSRs被用來改變CPU設(shè)備、調(diào)試、性能監(jiān)控和執(zhí)行追蹤。MSRs使用x86指令集。
在這之后,我們有一個選項"CPU information support (X86_CPUID)",啟用這個特性允許處理器訪問x86 CPUID指令,這需要通過字符設(shè)備在一個特定的CPU上執(zhí)行。這些字符設(shè)備包括major 202下minor 0到31的設(shè)備(/dev/cpu/0/msr to /dev/cpu/31/msr),就像上面x86_MSR支持的這些。
如果處理器支持,啟用內(nèi)核線性映射來使用1GB的內(nèi)存頁(Enable 1GB pages for kernel pagetables (DIRECT_GBPAGES))。啟用這個可以幫助減輕TLB的壓力。
頁是內(nèi)存本身的基本單位(位是數(shù)據(jù)的基本單位)。頁的大小是由硬件自身決定的。頁碼表是虛擬和物理內(nèi)存間的映射。物理內(nèi)存是設(shè)備上的內(nèi)存。虛擬內(nèi)存是到內(nèi)存的地址。依賴于系統(tǒng)架構(gòu),硬件可以訪問大于實際內(nèi)存地址的地址。舉例來說,一個64位系統(tǒng)擁有6GB內(nèi)存,管理員在需要時可以加上更多的內(nèi)存。這是因為還有很多虛擬內(nèi)存地址。然而,在很多32位系統(tǒng)上,系統(tǒng)管理員可以增加一條8GB的內(nèi)存,但是系統(tǒng)無法完全使用它,因為系統(tǒng)中沒有足夠的虛擬內(nèi)存地址去訪問大容量的內(nèi)存。轉(zhuǎn)換后援緩沖器(Translation Lookaside Buffer (TLB))是一種提升虛擬內(nèi)存轉(zhuǎn)換速度的緩存系統(tǒng)。
下面,我們看到了NUMA選項(Numa Memory Allocation and Scheduler Support (NUMA))。這可以允許內(nèi)核在CPU本地內(nèi)存分配器上分配CPU可使用的內(nèi)存。這個支持同樣可使內(nèi)核更好感知到NUMA。很少的32位系統(tǒng)需要這個特性,但是一些通用的645位處理器使用這個特性。我選擇了"no"。
為了系統(tǒng)使用舊方式來檢測AMD NUMA節(jié)點拓?fù)?#xff0c;啟用這個特性(Old style AMD Opteron NUMA detection (AMD_NUMA))。下一個選項是一種更新的檢測方式(ACPI NUMA detection (X86_64_ACPI_NUMA))。如果兩個都啟用,新的方式將會占支配作用。一些硬件在使用其中一種方式而不是另外一個時工作得更好。
如果為了調(diào)試目的的NUMA仿真,可以啟用下一個特性(NUMA emulation (NUMA_EMU))。
注意:如果你不打算進(jìn)行調(diào)試并且你需要一個快速、輕量級系統(tǒng),那么禁用盡可能多的調(diào)試特性。
下一個選項中,選擇你的內(nèi)核打算如何處理NUMA節(jié)點的最大數(shù)量。接下來選擇內(nèi)存模型,這里可能只有一個內(nèi)存模型選擇。內(nèi)存模型指定了內(nèi)存如何存儲。
Maximum NUMA Nodes (as a power of 2) (NODES_SHIFT) [6]
Memory model
> 1. Sparse Memory (SPARSEMEM_MANUAL)
choice[1]: 1
為了提升性能,這里有一個選項用通過虛擬內(nèi)存映射(Sparse Memory virtual memmap (SPARSEMEM_VMEMMAP))來優(yōu)化pfn_to_page和page_to_pfn操作。頁幀號是每頁被給定的號碼。這兩個操作用來從號碼得到頁或者從頁得到號碼。
下一個選項是允許一個節(jié)點可以移除內(nèi)存(Enable to assign a node which has only movable memory (MOVABLE_NODE))。內(nèi)核頁通常無法移除。當(dāng)啟用后,用戶可以熱插拔內(nèi)存節(jié)點,同樣可移除內(nèi)存允許內(nèi)存整理。作為出入內(nèi)存的數(shù)據(jù),只要有可用空間一組數(shù)據(jù)可能被劃分到不同內(nèi)存。
接著前面的內(nèi)存問題,我們還有更多的問題。這些可能已被配置工具預(yù)配置了。第三個選項(BALLOON_COMPACTION),當(dāng)啟用時可以幫助減少內(nèi)存碎片。碎片內(nèi)存會減慢系統(tǒng)速度。第四個選項(COMPACTION)允許內(nèi)存壓縮。下面列到的第五個選 (MIGRATION)允許頁面被移動。
Allow for memory hot-add (MEMORY_HOTPLUG) (允許內(nèi)存熱添加)?
Allow for memory hot remove (MEMORY_HOTREMOVE) (允許內(nèi)存熱移除)?
Allow for balloon memory compaction/migration (BALLOON_COMPACTION) (允許泡狀內(nèi)存規(guī)整和合并)?
Allow for memory compaction (允許內(nèi)存規(guī)整)?
Page migration (MIGRATION) (頁合并)
注意:啟用可移動內(nèi)存會啟用以上5個特性。
下一步,我們可以"Enable KSM for page merging (KSM)"。內(nèi)核同頁合并(Kernel Samepage Merging (KSM))會查看程序認(rèn)為可以合并的內(nèi)核。如果兩頁內(nèi)存完全相同這可以節(jié)約內(nèi)存。一塊內(nèi)存可以被刪除或者被合并,并且只有一塊可以使用。
配置工具可能會自動選擇保存多少內(nèi)存用于用戶分配(Low address space to protect from user allocation (DEFAULT_MMAP_MIN_ADDR) [65536])。
下一個選項很重要(Enable recovery from hardware memory errors (MEMORY_FAILURE))。如果內(nèi)存故障并且系統(tǒng)有MCA恢復(fù)或者ECC內(nèi)存,系統(tǒng)就可以繼續(xù)運行并且恢復(fù)。要使用這個特性,硬件自身和內(nèi)核都必須支持。
機器檢測架構(gòu)(Machine Check Architecture (MCA))是一個一些CPU上可以發(fā)送硬件錯誤信息給操作系統(tǒng)的特性。錯誤更正碼內(nèi)存(Error-correcting code memory (ECC memory))是一種內(nèi)存設(shè)備檢測和糾正錯誤的形式。
下面,配置工具會自動啟用"HWPoison pages injector (HWPOISON_INJECT)"。這個特性允許內(nèi)核標(biāo)記一塊壞頁為"poisoned",接著內(nèi)核會殺死創(chuàng)建壞頁的程序。這有助于停止并糾正錯誤。
為了允許內(nèi)核使用大頁(Transparent Hugepage Support (TRANSPARENT_HUGEPAGE)),啟用這個特性。這可以加速系統(tǒng)但是需要更多內(nèi)存。嵌入式系統(tǒng)不必使用這個特性。嵌入式系統(tǒng)通常只有非常小的內(nèi)存。
如果啟用了上面的,那么必須配置大頁的sysfs支持。
Transparent Hugepage Support sysfs defaults
1. always (TRANSPARENT_HUGEPAGE_ALWAYS)
> 2. madvise (TRANSPARENT_HUGEPAGE_MADVISE)
choice[1-2?]: 2
下面的選項是增加process_vm_readv和process_vm_writev這兩個系統(tǒng)調(diào)用(Cross Memory Support (CROSS_MEMORY_ATTACH))。這允許特權(quán)進(jìn)程訪問另外一個程序的地址空間。
如果有tmem,啟用緩存清理(cleancache)通常是一個好主意 (Enable cleancache driver to cache clean pages if Transcendent Memory (tmem) is present (CLEANCACHE))。當(dāng)一些內(nèi)存頁需要從內(nèi)存中移除時,cleancache會將頁面放在cleancache-enabled的文件系統(tǒng)上。當(dāng)需要該頁時,頁會被重新放回內(nèi)存中。超內(nèi)存(tmem)沒有一組已知大小的內(nèi)存,內(nèi)核對此內(nèi)存使用間接尋址。
下一個選項允許在tmen激活后緩存交換頁(Enable frontswap to cache swap pages if tmem is present (FRONTSWAP))。frontswap在交換分區(qū)放置數(shù)據(jù)。交換特性的支持需要這個。
最好啟用下一個特性(Check for low memory corruption (X86_CHECK_BIOS_CORRUPTION))。這會檢測低位內(nèi)存的內(nèi)存損壞情況。這個特性在執(zhí)行期被禁止。為了啟用這個特性,在內(nèi)核命令行內(nèi)加入 "memory_corruption_check=1"(這會在以后的文章中討論;這不同于任何命令行)。即使經(jīng)常執(zhí)行這個特性,也只使用非常小的開銷(接近沒有)。
接下來我門可以設(shè)置內(nèi)存損壞檢測的默認(rèn)設(shè)置(“Set the default setting of memory_corruption_check (X86_BOOTPARAM_MEMORY_CORRUPTION_CHECK))。這可以選擇是否開啟或關(guān)閉memory_corruption_check。最好啟用內(nèi)存損壞檢測不然如果一部分重要內(nèi)存損壞后可能會導(dǎo)致數(shù)據(jù)丟失和系統(tǒng)崩潰。
這個選項關(guān)注的是BIOS(Amount of low memory, in kilobytes, to reserve for the BIOS (X86_RESERVE_LOW) [64])。配置工具通常知道給BIOS預(yù)留內(nèi)存的最佳大小。
對于Intel P6處理器,開發(fā)者可以啟用存儲區(qū)域類型寄存器(MTRR (Memory Type Range Register) support (MTRR))。這用于連接著VGA卡的AGP和PCI卡。啟用這個特性內(nèi)核會創(chuàng)建/proc/mtrr。
如果X驅(qū)動需要加入回寫入口,那么啟用下面的選項(MTRR cleanup support (MTRR_SANITIZER))。這會將MTRR的布局從連續(xù)轉(zhuǎn)換到離散。存儲區(qū)域類型寄存器(Memory type range registers (MTRRs))提供了一種軟件訪問CPU緩存的方法。
下面,配置工具已經(jīng)設(shè)置了一些MTRR選項
?
MTRR cleanup enable value (0-1) (MTRR_SANITIZER_ENABLE_DEFAULT) [1]
?
MTRR cleanup spare reg num (0-7) (MTRR_SANITIZER_SPARE_REG_NR_DEFAULT) [1]
為了設(shè)置頁級緩沖控制,那就啟用PAT屬性(x86 PAT support (X86_PAT))。頁屬性表(Page Attribute Table (PATs))是現(xiàn)在版的MTRRs并比它更靈活。如果你經(jīng)歷過因啟用它而引發(fā)的啟動問題,那么禁用這個特性后重新編譯內(nèi)核。我選擇了"no"。
Linux內(nèi)核擁有許多可以配置的特性,接下來我們還有許多要配置。
下一個可以配置的特性是x86的隨機數(shù)生成器(x86 architectural random number generator (ARCH_RANDOM))。記住,我們現(xiàn)在配置的是針對AMD64系統(tǒng)的內(nèi)核代碼。這個隨機數(shù)生成器使用Intel x86的RDRAND指令。這并不通用,所以為了一個更輕量的內(nèi)核我禁用了它。
接著,我們可以啟用或者禁用"Supervisor Mode Access Prevention (X86_SMAP)"。這是Intel處理器使用的安全特性。SMAP在一些條件下只允許內(nèi)核訪問用戶空間。這個有助于保護(hù)用戶空間。如果啟用,這里有一點性能和內(nèi)核大小的開銷,但是開銷很小。由于我是用的是AMD系統(tǒng),所以我禁用了這個特性。
開發(fā)者可以啟用"EFI runtime service support (EFI)"。只有在有EFI固件的系統(tǒng)上啟用它。擁有這個特性,內(nèi)核可以使用的EFI服務(wù)。EFI是一個操作系統(tǒng)和硬件如何交流的規(guī)范,所以EFI固件是使用這個規(guī)范的硬件代碼。因為我沒有EFI固件,所以我禁用了它。
這是一個應(yīng)該被啟用的有用的安全方式(Enable seccomp to safely compute untrusted bytecode (SECCOMP))。這個安全特性在使用非可信的字節(jié)碼的數(shù)值計算(執(zhí)行大量計算的軟件)中使用。字節(jié)碼(可移植代碼)是一種被解釋器有效讀取的代碼。字節(jié)碼不是源代碼,但它也不是匯編或者二進(jìn)制代碼。非可信的代碼是一種可能導(dǎo)致系統(tǒng)/數(shù)據(jù)損壞的代碼。可能會破壞系統(tǒng)或者毀壞數(shù)據(jù)的非可信的代碼通過seccomp被隔離在獨立的地址空間中。這是通過文件描述符傳輸?shù)姆椒āMǔI?#xff0c;最好啟用這個安全特性,即使會有一些性能開銷,除非你在制作一個需要榨干性能的內(nèi)核。
這里是另外一個安全特性(Enable -fstack-protector buffer overflow detection (CC_STACKPROTECTOR))。緩沖溢出是數(shù)據(jù)被寫在超出了它的內(nèi)存界限而進(jìn)入了鄰近的內(nèi)存中。這是一個安全威脅。一些惡意軟件使用緩沖區(qū)溢出來破壞系統(tǒng)。啟用這個會使用GCC選項 "-fstack-protector"。GCC是一個Linux編譯器,在你配置完成后用它來編譯內(nèi)核。這個編譯器參數(shù)會在返回地址前在棧上加入一個canary值(特殊的安全代碼)。這個值會在返回前被驗證。當(dāng)內(nèi)存溢出發(fā)生時,canary值會得到覆蓋消息。這時,會導(dǎo)致內(nèi)核崩潰。如許多人知道的那樣,內(nèi)核錯誤意味著系統(tǒng)將要崩潰,但是這比系統(tǒng)被入侵或者數(shù)據(jù)永久損害的好。發(fā)生內(nèi)核錯誤,系統(tǒng)會重啟,但是如果緩沖溢出則可能導(dǎo)致系統(tǒng)被入侵。一個簡單的重啟無法修復(fù)破壞(譯注:但也不會更壞)。你必須用GCC 4.2或者更高版本支持這個參數(shù)的GCC來編譯內(nèi)核。
提示:要知道你使用的版本號,在命令行內(nèi)鍵入"gcc --version"。
在這之后,我們可以配置定時器頻率。配置工具建議使用250Hz,所以我們使用這個值。
Timer frequency
1. 100 HZ (HZ_100)
>2. 250 HZ (HZ_250)
3. 300 HZ (HZ_300)
4. 1000 HZ (HZ_1000)
choice[1-4?]: 2
使用1000Hz通常來講對許多系統(tǒng)而言太快了。定時器頻率決定著定時器中斷被使用的頻率。這有助于在時間線上的系統(tǒng)操作。程序并不是隨機地執(zhí)行一條命令,相反它們會等到定時器中斷結(jié)束。這保持著有組織和結(jié)構(gòu)的處理。頻率為100Hz的定時器中斷之間的時間是10ms,250Hz是4ms,1000Hz是1ms。現(xiàn)在許多開發(fā)者會馬上想到1000Hz是最好的。好吧,這取決于你對開銷的要求。一個更大的定時器頻率意味著更多的能源消耗和更多的能源被利用(在定時器上),產(chǎn)生更多的熱量。更多的熱量意味著硬件損耗的更快。
注意:如果某個特定的特性對你并不重要或者你不確定該選擇什么,就使用配置工具選擇的默認(rèn)值。比如,就我現(xiàn)在正在配置的內(nèi)核而言,使用哪個定時器對我并不重要。總的來說,如果你沒有特別的原因去選擇任何一個選項時,就使用默認(rèn)值。
下面這個有趣的系統(tǒng)調(diào)用可能會對一些用戶有用(kexec system call (KEXEC))。kexec調(diào)用會關(guān)閉當(dāng)前內(nèi)核去啟動另外一個或者重啟當(dāng)前內(nèi)核。硬件并不會關(guān)閉,并且這個調(diào)用可以無需固件的幫助工作。bootloader是不執(zhí)行的(bootloader是啟動操作系統(tǒng)的軟件) 。這個重啟發(fā)生在操作系統(tǒng)級別上而不是硬件上。使用這個系統(tǒng)調(diào)用會快于執(zhí)行一個標(biāo)準(zhǔn)的關(guān)機或者重啟,這會保持硬件在加電狀態(tài)。這個系統(tǒng)調(diào)用并不能工作在所有系統(tǒng)上。為了更高性能,啟用這個熱啟動功能。
為了使用kexec,對重啟后要使用的內(nèi)核使用如下命令替換""。同樣,使用之前我們講過的內(nèi)核參數(shù)替換"" (我會在以后的文章中更深入的討論。)
kexec -l <kernel-image> --append="<command-line-options>”
特別地,我這里輸入:
kexec -l /boot/vmlinuz-3.8.0-27-generic –append="root=/dev/sda1"
注意:硬件有時不需要重置,所以這不依賴于kexec。
下面,我們有一個適用于kexec的調(diào)試特性(kernel crash dumps (CRASH_DUMP))。當(dāng)kexec被調(diào)用時,一個崩潰信息(crash dump)會生成。除非你有必要調(diào)試kexec,否則這個并不必要。我禁用了這個特性。
再者,我們有另外一個kexec特性(kexec jump (KEXEC_JUMP))。kexec跳允許用戶在原始內(nèi)核和kexec啟動的內(nèi)核之間切換。
最好對內(nèi)核啟動地址使用默認(rèn)值(Physical address where the kernel is loaded (PHYSICAL_START) [0x1000000])。
下一個內(nèi)核選項(Build a relocatable kernel (RELOCATABLE))允許內(nèi)核放在內(nèi)存的任何地方。內(nèi)核文件會增大10%,但是超出部分會在執(zhí)行時從內(nèi)存移除。許多人也許想知道這為什么很重要。在2.6.20內(nèi)核前,救援內(nèi)核(rescue kernel)必須被配置和編譯運行在不同的內(nèi)存地址上。當(dāng)這個特性發(fā)明后,開發(fā)者不必再編譯兩個內(nèi)核。救援內(nèi)核不會在第一個已加載的內(nèi)核的地方加載,因為該塊內(nèi)存已被占用或者發(fā)生了錯誤。(如果你正在使用救援內(nèi)核,那么明顯第一個內(nèi)核發(fā)生了錯誤)
下面這個特性應(yīng)該在可以增加CPU數(shù)量的系統(tǒng)中啟用,除非你有特別的理由不去這么做(Support for hot-pluggable CPUs (HOTPLUG_CPU))。配置工具會自動啟用這個特性。在這個特性下,你可以在一個擁有很多處理器的系統(tǒng)上激活/停用一個CPU,這并不是說在系統(tǒng)中插入新的CPU,所有的CPU必須已經(jīng)安裝在系統(tǒng)中。
下面的選項會讓我們選擇設(shè)置上面的特性是否默認(rèn)啟用(Set default setting of cpu0hotpluggable (BOOTPARAM\HOTPLUG_CPU0))。為了性能最好禁用這個特性直到需要的時候。
接著的這個調(diào)試特性允許開發(fā)者調(diào)試CPU熱插拔特性(Debug CPU0 hotplug (DEBUG_HOTPLUG_CPU0))。我禁用了它。
為了兼容舊版本的glibc(<2.3.3),可以啟用這個特性(Compat VDSO support (COMPAT_VDSO))。這適用于通過映射32位在VDSO(虛擬動態(tài)鏈接共享對象)的舊式地址。Glibc是GNC C庫;這是GNU工程實現(xiàn)的C標(biāo)準(zhǔn)庫。
如果系統(tǒng)內(nèi)核被用于一個缺乏完整功能的bootloader上,那么啟用這個特性(Built-in kernel command line (CMDLINE_BOOL))。這允許用戶在內(nèi)核自身上使用一條命令行(譯注:及其參數(shù)),那么管理員可以修復(fù)內(nèi)核問題。如果bootloader已經(jīng)有了一條命令行(像grub),那么這個特性不必啟用。
現(xiàn)在我們可以配置ACPI和電源了。首先,我們被要求選擇系統(tǒng)是否可以掛起到內(nèi)存(Suspend to RAM and standby (SUSPEND))。高級配置和電源接口(ACPI)是一種對于設(shè)備配置和電源管理的開放標(biāo)準(zhǔn)。掛起系統(tǒng)會將數(shù)據(jù)放在內(nèi)存上,同時硬件進(jìn)入一種低功耗的狀態(tài)。系統(tǒng)不會完全關(guān)機。如果用戶需要計算機進(jìn)入一個低功耗的狀態(tài),但是希望保留當(dāng)前已打開程序時是非常有用的。關(guān)閉一個系統(tǒng)會完全關(guān)閉系統(tǒng)電源并且清理內(nèi)存。
下面,我們可以啟用睡眠(Hibernation (aka 'suspend to disk') (HIBERNATION))。睡眠就像掛起模式,但是內(nèi)存中所有數(shù)據(jù)被保存到硬盤上,并且設(shè)備完全關(guān)閉。這允許用戶在電源恢復(fù)后繼續(xù)使用他們已打開的程序。
這里,我們可以設(shè)置默認(rèn)的恢復(fù)分區(qū)(Default resume partition (PM_STD_PARTITION))。很少有開發(fā)者和管理員需要這個特性。當(dāng)系統(tǒng)從睡眠中恢復(fù)時,他會加載默認(rèn)的恢復(fù)分區(qū)。
"Opportunistic sleep "。啟用會讓內(nèi)核在沒有活躍的喚醒調(diào)用被調(diào)用時進(jìn)入掛起或者睡眠狀態(tài)。這意味著空閑的系統(tǒng)將會進(jìn)入掛起模式以節(jié)省電源。
? ? ? ? sysfs是位于/sys/的虛擬文件系統(tǒng)。這個虛擬文件系統(tǒng)包含了關(guān)于設(shè)備的信息。當(dāng)進(jìn)入/sys/時,它似乎是硬盤的一部分,但是這個并不是一個真正的掛載點。這些文件實際存在于內(nèi)存中。這與/proc/是同一個概念。
注意:"/sysfs/"是一個文件夾,而"/sysfs"則可以是一個根目錄下名為"sysfs"的文件。許多Linux用戶會混淆這兩種命名約定。
如果啟用了上面的選項,那么你可以設(shè)置"Maximum number of user space wakeup sources (0 = no limit) (PM_WAKELOCKS_LIMIT)"。最好選擇默認(rèn),那么你就可以啟用垃圾收集器(Garbage collector for user space wakeup sources (PM_WAKELOCKS_GC))。垃圾收集是一種內(nèi)存管理方式。
注意: 在需要更多內(nèi)存的系統(tǒng)中,通常最好在大多數(shù)情況下盡可能啟用垃圾收集。不然內(nèi)存會消耗得更快且雜亂。
? ?"User space wakeup sources interface "。啟用這個特性將會允許喚醒源對象被激活、停用,并通過基于sysfs接口由用戶空間創(chuàng)建。喚醒源對象會追蹤喚醒事件源。
? ? ? ?(Run-time PM core functionality)。這個選項允許IO硬件在運行時進(jìn)入低功耗狀態(tài)。
(Power Management Debug Support): 電源管理代碼調(diào)試支持。
注意: 注意這些我引用/顯示的配置工具上的選項或問題不再顯示選項代碼(括號間所有的大寫字母)。這是因為我沒有使用基于ncurses的配置工具(make menuconfig)而是使用默認(rèn)工具去得到選項、設(shè)置和問題。記住,"make config"缺乏保存當(dāng)前進(jìn)度的能力。
在這之后,配置工具會啟用"ACPI (Advanced Configuration and Power Interface) Support"。最好允許這個電源管理規(guī)范。通常配置工具會啟用這個特性。
為了允許向后兼容,啟用"Deprecated /proc/acpi files"。新的實現(xiàn)使用更新的在/sys下的實現(xiàn)。我禁用了這個選項。一個相似的問題詢問關(guān)于"Deprecated power /proc/acpi directories"。通常上,如果你禁用了這些文件,你不再需要這些文件夾,所以我禁用了他們。一些舊的程序可能會使用這些文件和文件夾。如果你在給舊的的Linux系統(tǒng)上編譯一個新的內(nèi)核,最好啟用這個選項。
下面,我們有另外一個文件接口可以啟用或者禁用(EC read/write access through)。這會在/sys/kernek/debug/ec下創(chuàng)建一個嵌入式控制器接口。嵌入式控制器通常在筆記本中讀取傳感器,內(nèi)核代碼通過系統(tǒng)的BIOS表提供的ACPI代碼訪問嵌入式控制器。
這里有另外一個可以啟用或者禁用的向后兼容特性 (Deprecated /proc/acpi/event support)。acpi守護(hù)進(jìn)程可能會讀取/proc/api/event來管理ACPI生成的驅(qū)動。不同于這個接口,守護(hù)進(jìn)程使用netlink事件或者輸入層來得到送給用戶空間的事件,acpi守護(hù)進(jìn)程管理ACPI事件。
下一個選項允許開發(fā)者啟用一個特性,它會通知內(nèi)核現(xiàn)在使用的是交流電源(AC Adapter)還是電池。下一個選項從/proc/acpi/battery/ (Battery)中提供電池信息。
為了內(nèi)核在電源/睡眠按鈕按下或者蓋子合上時不同表現(xiàn),啟用這個“按鈕”選項(Button)。這些事件在/proc/acpi/event/中控制。比如這樣的行為,如果在用戶賬戶的電源選項啟用了掛起,當(dāng)筆記本電腦的蓋子關(guān)閉后系統(tǒng)將會掛起。
下一個ACPI擴展是針對顯卡的(Video)。
ACPI風(fēng)扇控制可以被啟用/禁用(Fan)。最好啟用ACPI風(fēng)扇管理,這有助于節(jié)能。
我們正在進(jìn)一步配置內(nèi)核中,但在接下來的文章中還有更多要做。
歡迎進(jìn)入Linux內(nèi)核系列文章的下一篇!本篇我們繼續(xù)配置文件系統(tǒng)。
首先,我們啟用"General filesystem local caching manager",它允許內(nèi)核存儲文件系統(tǒng)緩存。這可以增加在存儲空間開銷上的性能。
為了調(diào)試目的,緩存系統(tǒng)可以通過統(tǒng)計信息監(jiān)控(Gather statistical information on local caching)。通常上,這個特性應(yīng)該只在你計劃調(diào)試的時候啟用。
下面的特性很像上面的,但是這個特性存儲延遲信息(Gather latency information on local caching)。再說一次,這是個調(diào)試特性。
"Debug FS-Cache"提供了很多其他的緩存系統(tǒng)的調(diào)試功能。
下面的緩存調(diào)試工具會保存文件系統(tǒng)緩存對象的全局列表(任何進(jìn)程可以訪問這個列表)(Maintain global object list for debugging purposes)。
為了增強網(wǎng)絡(luò)文件系統(tǒng)的速度,啟用接下來的驅(qū)動(Filesystem caching on files)。這個特性允許整個本地文件系統(tǒng)被用于遠(yuǎn)程文件系統(tǒng)和存儲單元的緩存。Linux內(nèi)核會管理這個分區(qū)。
有兩種不同的用于調(diào)試的驅(qū)動可用于本地緩存系統(tǒng)和遠(yuǎn)程文件系統(tǒng),它們是(Debug CacheFiles)和(Gather latency information on CacheFiles)。
大多數(shù)通常的光盤文件系統(tǒng)是ISO 9660標(biāo)準(zhǔn)的ISO-9660,故名(ISO 9660 CDROM file system support)。這個驅(qū)動用于讀/寫主流的光盤。
當(dāng)讀取光盤中的長Unicode文件名或者這類文件時,需要這個驅(qū)動(Microsoft Joliet CDROM extensions)。這是ISO-9660文件系統(tǒng)的擴展。
"Transparent decompression extension"允許數(shù)據(jù)以壓縮形式寫入并以透明方式解壓讀出。這允許光盤上存放更多的數(shù)據(jù)。
"UDF file system support"允許內(nèi)核讀/寫UDF文件系統(tǒng)的可重寫光盤。UDF被設(shè)計用來管理增量寫入。UDF允許光盤思想閃存盤那樣使用。系統(tǒng)可以比常規(guī)ISO-9660文件系統(tǒng)寫入的光盤更快地寫入以及更新。然而,這并不比使用閃存快。
如你所知,Windows是一個很流行的系統(tǒng)。有很多存儲器使用FAT文件系統(tǒng)。萬幸的是,Linux支持這樣的文件系統(tǒng)。這會明顯地增加內(nèi)核的大小,但是既然FAT文件系統(tǒng)是如此的通用,那么這點開銷也是值得的。
為了支持FAT文件系統(tǒng),啟用這個驅(qū)動(VFAT (Windows-95) fs support)。在寫本篇的時候。驅(qū)動還不支持FAT64(通常成為exFAT)。
代碼頁的大小可以在這里設(shè)置(Default codepage for FAT)。
在此之后,可以設(shè)置FAT文件系統(tǒng)的默認(rèn)字符集(Default iocharset for FAT)。
NTFS文件系統(tǒng)在這個驅(qū)動提供支持(Default iocharset for FAT)。驅(qū)動提供了只讀特性。為了寫入NTFS,啟用這個驅(qū)動(NTFS write support)。
Linux內(nèi)核提供了NTFS文件系統(tǒng)的調(diào)試工具(NTFS debugging support)。
要在root根目錄下有個proc目錄,必須啟用這個特性(/proc file system support)。一些其他相似的驅(qū)動依賴于這個,包括(/proc/kcore support)、(/proc/vmcore support)和 (Sysctl support (/proc/sys))。proc系統(tǒng)("process"的縮寫)使用的proc文件系統(tǒng)有時稱作procfds。這個文件系統(tǒng)在硬件的內(nèi)存中,并在啟用時創(chuàng)建。因此,當(dāng)你在瀏覽proc中的文件時,用戶仿佛像在其他存儲單元上那樣瀏覽內(nèi)存。proc扮演一個用戶空間和內(nèi)核空間之間接口的角色。proc是在內(nèi)核空間。
"Enable /proc page monitoring"提供了一些文件監(jiān)視進(jìn)程的內(nèi)存利用。
"sysfs file system support"創(chuàng)建/sys文件加。sys文件系統(tǒng)在內(nèi)存中并提供了內(nèi)核對象的接口。
tmp目錄被許多應(yīng)用需要,包括Linux自己,因此強烈建議啟用這個驅(qū)動(Tmpfs virtual memory file system support (former shm fs))。tmp文件系統(tǒng)可能存儲在硬盤或者內(nèi)存中,并只被用于存儲臨時文件。
Tmpfs POSIX Access Control Lists"驅(qū)動tmpfs虛擬文件系統(tǒng)額外的文件權(quán)限特性。
"Tmpfs extended attributes"提供了通常的tmpfs更多的屬性。
"HugeTLB file system support"驅(qū)動提供了基于ramfs的hugetlbfs文件系統(tǒng)。這個虛擬文件系統(tǒng)包含了HugeTLB頁。
configfs文件系統(tǒng)是一個以文件系統(tǒng)形式存在的內(nèi)核對象管理器(Userspace-driven configuration filesystem)。強烈建議啟用這個驅(qū)動。ConfigFS很像sysfs。然而,ConfigFS被用于創(chuàng)建和刪除內(nèi)核對象,而sysfs被用于瀏覽和修改內(nèi)核對象。
下面,我們可以回到"真正"的文件系統(tǒng)了。那就是用戶用來存放他們個人文件的文件系統(tǒng)。下面,內(nèi)核能夠讀取ADFS文件系統(tǒng)(ADFS file system support)。
AFDFS文件系統(tǒng)寫入被一個獨立且不穩(wěn)定的驅(qū)動提供 (ADFS write support (DANGEROUS))。ADFS代表Advanced Disc Filing System(高級光盤歸檔系統(tǒng))。
Linux同樣支持Amiga快速文件系統(tǒng)(Amiga FFS file system support)。
"eCrypt filesystem layer support"提供了POSIX兼容的加密文件系統(tǒng)層。這個eCrypt可以 用于任何文件系統(tǒng)無論駐留的文件系統(tǒng)分區(qū)表是什么。
eCrypt層可以有一個設(shè)備文件如果啟用了這個驅(qū)動(Enable notifications for userspace key wrap/unwrap)。設(shè)備路徑是/dev/ecryptfs。
Linux同樣支持HFS和HFS+(Apple Macintosh file system support)和(Apple Extended HFS file system support)。與
BeFS可以在Linux上作為只讀文件系統(tǒng)使用(BeOS file system (BeFS) support (read only))。通常上,編寫讀取特性比編寫寫入能力簡單。
特殊的BeFS調(diào)試特性(Debug BeFS)。
EFS是另外一個Linux只讀不寫的文件系統(tǒng)。 (EFS file system support (read only)).
一些閃存可能使用JFFS2文件系統(tǒng)(Journalling Flash File System v2 (JFFS2) support)。下面,可以設(shè)置調(diào)試層 (JFFS2 debugging verbosity)。
為了在NAND和NOR閃存上使用JFFS2,需要這個驅(qū)動(JFFS2 write-buffering support)。
下面的驅(qū)動提供了更好的錯誤保護(hù)(Verify JFFS2 write-buffer reads)。
啟用"JFFS2 summary support"可以更快掛載JFFS文件系統(tǒng)。這個驅(qū)動存儲文件系統(tǒng)的信息。
像其他的文件系統(tǒng)的擴展/額外屬性驅(qū)動一樣,JFFS2也有這種驅(qū)動(JFFS2 XATTR support)。
JFFS2文件系統(tǒng)支持不同的透明壓縮系統(tǒng)。這允許JFFS2系統(tǒng)上的文件更小,并且在讀取時不需要用戶任何特殊的操作。 (Advanced compression options for JFFS2)、 (JFFS2 ZLIB compression support)、(JFFS2 LZO compression support)、(JFFS2 RTIME compression support) 和 (JFFS2 RUBIN compression support)。默認(rèn)的壓縮格式定義在下面的選項中(JFFS2 default compression mode)。
JFFS2的繼任者也被Linux內(nèi)核支持(UBIFS file system support)。無排序塊圖像文件系統(tǒng)(Unsorted Block Image File System (UBIFS)) 同樣與LogFS競爭。
Linux內(nèi)核同樣支持LogFS(LogFS file system)。
基于ROM的嵌入式系統(tǒng)需要CramFS的支持(Compressed ROM file system support (cramfs))。
此外,嵌入式系統(tǒng)可以使用SquashFS,這是一種只讀壓縮文件系統(tǒng)(SquashFS 4.0 - Squashed file system support)。Linux內(nèi)核也支持SquashFS的擴展屬性(Squashfs XATTR support)。
SquashFS支持三種不同的壓縮格式 (Include support for ZLIB compressed file systems)、(Include support for LZO compressed file systems) 和 (Include support for XZ compressed file systems)。SquashFS的塊大小可以設(shè)置為4KB (Use 4K device block size?)。同樣,可以設(shè)置緩存大小(Additional option for memory-constrained systems)。
Linux內(nèi)核支持 FreeVxFS (FreeVxFS file system support (VERITAS VxFS(TM) compatible))、 Minix (Minix file system support)、 MPEG filesystem (SonicBlue Optimized MPEG File System support)、 HPFS (OS/2 HPFS file system support)、 QNX4 (QNX4 file system support (read only))、 QNX6 (QNX6 file system support (read only)) 和 ROM 文件系統(tǒng) (ROM file system support)。
"RomFS backing stores (Block device-backed ROM file system support)"提供了ROMfs不同額外的屬性和能力的列表。
"Persistent store support"驅(qū)動提供對pstore文件系統(tǒng)的支持,這允許訪問平臺級的持久性存儲。
pstore文件系統(tǒng)可以存儲內(nèi)核日志/消息(Log kernel console messages)。
當(dāng)內(nèi)核崩潰時(相當(dāng)于Windows中的藍(lán)屏死機),"Log panic/oops to a RAM buffer"會在RAM中存儲日志。
下面一個驅(qū)動提供對Xenix、 Coherent、Version 7 和 System V 文件系統(tǒng)的支持(System V/Xenix/V7/Coherent file system support)。
Linux內(nèi)核同樣支持UFS(UFS file system support (read only))、 (UFS file system write support (DANGEROUS)) 和 (UFS debugging)。
內(nèi)核也支持exofs(exofs: OSD based file system support)。
flash友好型文件系統(tǒng)(Flash-Friendly FileSystem)是一種對于閃存設(shè)備的特殊文件系統(tǒng)(F2FS filesystem support (EXPERIMENTAL))、 (F2FS Status Information )、 (F2FS extended attributes) 和 (F2FS Access Control Lists).
下篇文章我們將配置網(wǎng)絡(luò)文件系統(tǒng)。謝謝!
歡迎來到下一篇關(guān)于內(nèi)核配置文章!還有大量的選項需要配置。這篇文章將主要討論PCI和ACPI。
這里我們可以啟用由ACPI控制的擴展塢和可移動驅(qū)動器槽的支持(Dock)。記住,ACPI(Advanced Configuration and Power Management Interface)是一個電源管理系統(tǒng)。擴展塢是一種其他的設(shè)備通過額外的接口插入的設(shè)備。擴展塢可以容納許多不同的端口和連接器。一個ACPI控制的擴展塢是指其電源管理是通過ACPI進(jìn)行的。驅(qū)動器槽是一套可以增加硬盤的設(shè)備,這也可以由ACPI管理。
下面,我們允許ACPI用來管理空閑的CPU(Processor)。這會讓處理器在空閑時進(jìn)入ACPI C2或者C3狀態(tài)。這可以節(jié)省電源并降低CPU芯片的溫度。處理器只在100%沒有占用時才進(jìn)入空閑狀態(tài)。沒有程序必須請求一個特定時間的CPU資源。
CPU電源有四個狀態(tài) - C0、C1、C2和C3。C0是操作激活狀態(tài)。C1(Halt)是一個不執(zhí)行指令激活狀態(tài),但是可以立刻執(zhí)行指令。C2(Stop-Clock)是一種斷電狀態(tài)。C3(Sleep)是一種比C2更徹底的斷電狀態(tài)。在C3狀態(tài)中,現(xiàn)在緩存不再被同步或者管理,直到CPU離開這個狀態(tài)。第五個狀態(tài)稱作C1E(Enhanced Halt State),他擁有低功耗。
如果啟用了IPMI驅(qū)動,那么ACPI可以訪問BMC控制器(IPMI)。基板管理控制器(BMC)是一種管理軟件和硬件間連接的微控制器。智能平臺管理接口(IPMI)是一種框架,通過直接的硬件層面而不是登錄shell或者操作系統(tǒng)層面來管理計算機。
ACPI v4.0進(jìn)程聚合器允許內(nèi)核應(yīng)用一個CPU配置到所有系統(tǒng)中的處理器中(Processor Aggregator)。截止到ACPI v4.0,只有idle狀態(tài)可以用這個方式配置。
接下來,可以啟用ACPI熱區(qū)(Thermal Zone)。多數(shù)硬件支持這個特性。這允許風(fēng)扇的電源由ACPI管理。
如果啟用這個選項,自定義DSDT可以鏈接到內(nèi)核。在這個設(shè)置中,開發(fā)者必須在文件中包含完整的路徑名。系統(tǒng)差異表(DSDT)是一個包含了系統(tǒng)支持的電源事件信息的文件。它不需要輸入路徑名,這些表存在于固件中。內(nèi)核會幫你處理這些。這個主要的目的是用于如果開發(fā)者需要使用不同于設(shè)備內(nèi)置的表時用到。
任意ACPI表都可以通過initrd來覆蓋(ACPI tables override via initrd)。ACPI表是指示如何控制并與硬件交互的基礎(chǔ)規(guī)則和指令。
像內(nèi)核的其他部分一樣,ACPI系統(tǒng)也可以生成調(diào)試信息(Debug Statements)。像其他調(diào)試特性一樣,你或許希望禁用它并省下50KB。
啟用下面的特性會為系統(tǒng)檢測到的每個PCI插槽(PCI slot detection driver)創(chuàng)建文件(/sys/bus/pci/slots/)。一個PCI插槽是在PCI主板上的一個端口,它允許用戶接上其他的PC設(shè)備。PCI是主板的一種類型。PCI是指組件互相通信的方式。有些應(yīng)用程序可能需要這些文件。
電源管理定時器是另外一種電源管理系統(tǒng)(Power Management Timer Support)。這是許多系統(tǒng)追蹤時間的方式。這個只需要很少的能源。處理器的空閑、電壓/頻率調(diào)節(jié)和節(jié)流都不會影響這個定時器。大量的系統(tǒng)需要使用這個特性。
下面,可以啟用ACPI模塊和容器設(shè)備驅(qū)動(Container and Module Devices)。這會啟用處理器、內(nèi)存和節(jié)點的熱插拔支持。它需要NUMA系統(tǒng)。
下面的驅(qū)動提供對ACPI內(nèi)存的熱插拔支持(Memory Hotplug)。有些設(shè)備甚至啟用這個驅(qū)動也不支持熱插拔。如果驅(qū)動以模塊形式加入,那么模塊將會被acpi_memhotplug調(diào)用。
注意:對于內(nèi)核某個特定的功能,硬件、BIOS和固件在必須支持時會有問題。有些系統(tǒng)的BIOS是不控制硬件的。這種類型的BIOS通常不會限制特性。如果內(nèi)核確實有一個特定的功能,硬件必須有能力完成這樣的任務(wù)。
智能電源管理驅(qū)動提供訪問電池的狀態(tài)和信息(Smart Battery System)。
下面,我們有一個"Hardware Error Device"驅(qū)動。設(shè)備通過SCI報告硬件錯誤。通常上,大多數(shù)的錯誤會是已糾正的錯誤。
下面的是ACPI調(diào)試特性(Allow ACPI methods to be inserted/replaced at run time)。這允許ACPI AML方式不通過重啟系統(tǒng)管理。 AML代表的是ACPI機器語言(ACPI Machine Language)。AML代碼可以通過請求重啟來改變和測試。
APEI是ACPI的錯誤接口(ACPI Platform Error Interface (APEI))。APEI從芯片給操作系統(tǒng)報告錯誤。這個錯誤接口同樣提供錯誤注射的能力。
當(dāng)"SFI (Simple Firmware Interface) Support" 啟用后,硬件固件可以發(fā)送消息給操作系統(tǒng)。固件與操作系統(tǒng)間的通信通過內(nèi)存中的靜態(tài)表。SFI-only的計算機的內(nèi)核工作需要這個特性。
(CPU Frequency scaling):?改變處理器的時鐘速度和運行。CPU頻率調(diào)整意味著改變處理器的時鐘速度。這個驅(qū)動可以用于降低時鐘頻率以節(jié)能。
下面是另外一個電源管理子系統(tǒng)(CPU idle PM support)。當(dāng)處理器不在活躍狀態(tài)時,它最好處在有效的空閑方式來減少電源消耗和減少CPU損耗。減少電源消耗同樣可以降低內(nèi)部元件的發(fā)熱。
Linux內(nèi)核提供了很多CPU空閑驅(qū)動。在多處理器系統(tǒng)上,一些用戶可能有一個理由在每個CPU上使用不同的驅(qū)動(Support multiple cpuidle drivers)。啟用這個驅(qū)動可以允許用戶給每個處理器設(shè)置不同的驅(qū)動。
對于Intel處理器,內(nèi)核有一個特別為管理這類CPU芯片空閑的驅(qū)動(Cpuidle Driver for Intel Processors)。
當(dāng)內(nèi)存芯片空閑時,這些同樣可以處于低功耗狀態(tài)(Intel chipset idle memory power saving driver)。這個驅(qū)動是特別支持IO AT的Intel設(shè)備的。
不同的計算機使用不同類型的主板(PCI support)。其中一種類型是PCI。這個驅(qū)動允許內(nèi)核運行在PCI主板上。
下面,我們可以啟用/禁用 "Support mmconfig PCI config space access"。
接下來,我們有一個選擇啟用/禁用主橋窗口驅(qū)動(Support mmconfig PCI config space access)。警告:這個驅(qū)動還沒有完成(至少在3.9.4中是這樣)。
像上面提到的主板,還有另一種類型的主板。寫一個選項是提供"PCI Express (PCIe) support"的驅(qū)動。PCIe是一種改進(jìn)并且更快速的PCI。
在這之后,下面的驅(qū)動應(yīng)該被啟用以支持PCIe主板上的熱插拔(PCI Express Hotplug driver)。
接著,我們可以啟用/禁用PCIe主板報錯(Root Port Advanced Error Reporting)。這就是PCIe AER驅(qū)動。
下一個特性允許用戶使用PCIe EREC(PCI Express ECRC settings control)覆蓋BIOS和固件設(shè)置。下一個選項,這是對PCIe的錯誤注射(PCIe AER error injector support)。
下面的設(shè)置提供了操作系統(tǒng)控制PCI的活躍狀態(tài)和時鐘電源管理(PCI Express ASPM control)。通常上,固件會控制ASPM,但是這個特性允許操作系統(tǒng)采取控制。
如前面一樣,像內(nèi)核的許多組件一樣,這里提供了ASPM的調(diào)試支持(Debug PCI Express ASPM)。
下面,在這個菜單選擇"Default ASPM policy"。
在這選項之后,下一個是關(guān)于允許設(shè)備驅(qū)動啟消息信號中斷(Message Signaled Interrupts (MSI))。通常上最好允許設(shè)備給CPU發(fā)送中斷。
為了在系統(tǒng)日志中加入大量的調(diào)試信息,啟用"PCI Debugging"。
下一個選項允許PCI核心檢測是否有必要啟用PCI資源重分配(Enable PCI resource re-allocation detection)。
當(dāng)在Linux上托管一個虛擬操作系統(tǒng)時,它有時可以用于為虛擬系統(tǒng)保留PCI設(shè)備(PCI Stub driver)。在系統(tǒng)虛擬化下,一個操作系統(tǒng)可能在另一個系統(tǒng)的內(nèi)部或者并行。有時它們會競爭資源。可以為客戶機保留設(shè)備可以減小競爭和增加性能。
下面的驅(qū)動允許超傳輸設(shè)備(hypertransport devices)使用中斷(Interrupts on hypertransport devices)。HyperTransport是一種系統(tǒng)/協(xié)議總線用于處理器之間的高速通信。
下一個驅(qū)動用于PCI虛擬化,它允許虛擬設(shè)備間共享它們的物理資源(PCI IOV support)。
PCI頁面請求接口(PRI)使在IOMMU(輸入/輸出內(nèi)存管理單元)之后的PCI設(shè)備能夠從頁錯誤中恢復(fù)(PCI PRI support)。頁錯誤不是一種錯誤;它指的是軟件嘗試訪問不在物理內(nèi)存上的數(shù)據(jù)的事件。
再次說明,你會在之后的文章中看到更多的需要配置Linux內(nèi)核特性。
來享受這個Linux內(nèi)核系列的下一篇文章。我們將繼續(xù)配置PCI特性,接著是計算機中最重要的特性-網(wǎng)絡(luò)。
進(jìn)程地址空間標(biāo)識符(Process Address Space Identifiers (PASIDs))允許PCI設(shè)備同時訪問多個IO地址空間(PCI PASID support)。這個特性需要一個支持PASIDs支持的IOMMU。
下面我們可以啟用/禁用"PCI IO-APIC hotplug support"。APIC代表高級可編程中斷控制器(Advanced Programmable Interrupt Controllers)。可編程中斷控制器(PIC)收集所有來自不同源發(fā)給一個或者多個CPU流水線的中斷。高級PIC與PIC一樣,但是它們有更多的特性像高級中斷管理和更多的優(yōu)先級模型。熱插拔是一種在系統(tǒng)在運行時加入一件設(shè)備的能力并且不需要重啟。這個驅(qū)動是為了PCI主板能擁有處理輸入/輸出APIC熱插拔的能力。
在這之后,下面的問題詢問的是啟用"ISA-style DMA support"。在前文中提到過,DMA是直接內(nèi)存訪問,它是一種設(shè)備無需借助CPU直接訪問內(nèi)存的能力。ISA代表的是工業(yè)標(biāo)準(zhǔn)架構(gòu)(Industry Standard Architecture),它是一種像PCI的總線標(biāo)準(zhǔn)。這個特性允許在ISA主板上支持DMA。
現(xiàn)在,我們可以移步到"PC Card (PCMCIA/CardBus) support"。PCMCIA代表的是個人計算機存儲卡國際協(xié)會(Personal Computer Memory Card International Association)。PC卡、PCMCIA卡和Cardbus卡都是卡片形狀的筆記本外設(shè)。
下一個PCMCIA選項處理"16-bit PCMCIA support"。一些舊的計算機使用16位PCMCIA卡。
為了從用戶空間加載卡式信息結(jié)構(gòu)(Card Information Structure (CIS))以使PCMCIA卡正常工作,這個特性應(yīng)該啟用(Load CIS updates from userspace)。
CardBus是16位PCMCIA的更新32位版本。這個驅(qū)動提供對這類設(shè)備的支持(32-bit CardBus support)。為了使用32位PC卡,需要一個兼容Cardbus的主機橋。
下面的驅(qū)動提供對上面提到的CardBus橋支持(CardBus yenta-compatible bridge support)。這是PCMCIA卡插入的硬件端口。
下面三個選項"Special initialization for O2Micro bridges"、"Special initialization for Ricoh bridges"和"Special initialization for TI and EnE bridges"。它們都是不同類型卡橋。
接下來,提供了"Auto-tune EnE bridges for CB cards"的驅(qū)動。
"Special initialization for Toshiba ToPIC bridges"可以在下一個選項中啟用/關(guān)閉。
下一個提供的設(shè)備驅(qū)動是"Cirrus PD6729 compatible bridge support"。這在一些老的筆記本上需要。
下一個PCMCIA橋驅(qū)動是Itel的"i82092 compatible bridge support"。這也在一些老的筆記本上出現(xiàn)。這是另外一種橋驅(qū)動。
在這之后,以下的選項詢問關(guān)于是否啟用"Support for PCI Hotplug"。
下一步,ACPI PCI熱插拔可以啟用(ACPI PCI Hotplug driver)。這個驅(qū)動允許擁有ACPI的PCI設(shè)備熱插拔(這個特性之前已經(jīng)討論過)。
對于IBM系統(tǒng),為了ACPI熱插拔下一個驅(qū)動應(yīng)該啟用(ACPI PCI Hotplug driver IBM extensions)。這就像上面的特性但特定與IBM設(shè)備。
對于帶有支持CompactPCI熱插拔支持的CompactPCI卡的系統(tǒng),啟用"CompactPCI Hotplug driver"。
下面,我們有一個選項對于另一種CompactPCI系統(tǒng)卡(Ziatech ZT5550 CompactPCI Hotplug)。
使用#ENUM熱插拔信號通過標(biāo)準(zhǔn)IO口作為系統(tǒng)注冊位的CompactPCI卡需要這個驅(qū)動(Generic port I/O CompactPCI Hotplug)。
使用SHPC PCI熱插拔控制器的主板需要下一個驅(qū)動(SHPC PCI Hotplug driver)。SHPC代表的是標(biāo)準(zhǔn)熱插拔控制器(Standard Hot-Plug Controller)。這對于PCI主板是一個通用熱插拔系統(tǒng)。
RapidIO互聯(lián)設(shè)備也需要一個特殊的驅(qū)動(RapidIO support)。RapidIO芯片和主板快于PCI和PCIe。
"IDT Tsi721 PCI Express SRIO Controller"是一個特殊類型的RapidIO控制器。
下一個選項允許開發(fā)者輸入在主機完成枚舉前系統(tǒng)發(fā)現(xiàn)節(jié)點應(yīng)該等待多久時間(以秒計)。這通常選擇默認(rèn)值
下一個特性會允許RapidIO系統(tǒng)接受除了維護(hù)信號外其他流量(Enable RapidIO Input/Output Ports)。
為了使用DMA引擎框架從RIO設(shè)備上發(fā)送或接收RapidIO數(shù)據(jù),啟用這個驅(qū)動(DMA Engine support for RapidIO)。RIO設(shè)備是可重配的輸入/輸出設(shè)備。RapidIO使用NREAD和NWRITE請求來在本地和遠(yuǎn)程內(nèi)存間傳輸數(shù)據(jù),因此驅(qū)動需要允許RapidIO使用DMA訪問RIO設(shè)備。DMA控制器需要在內(nèi)存中完成這個特性。
如果允許,RapidIO可以提供調(diào)試信息(RapidIO subsystem debug messages)。如前面所說,調(diào)試特性可以禁用,除非你或者其他人使用的內(nèi)核需要調(diào)試特性。
下一個驅(qū)動提供"IDT Tsi57x SRIO switches support"。這是一組串口RapidIO開關(guān),下面的四個選項是對于不同串口RapisIO開關(guān)驅(qū)動-"IDT CPS-xx SRIO switches support"、"Tsi568 SRIO switch support"、"IDT CPS Gen.2 SRIO switch support"和"Tsi500 Parallel RapidIO switch support"。
管理這些驅(qū)動后,我們可以繼續(xù)其他的內(nèi)核選項。下一個選項提供對ELF的支持(Kernel support for ELF binaries)。可執(zhí)行與可鏈接格式(Executable and Linkable Format (ELF))支持是一種可執(zhí)行文件規(guī)范。強烈建議啟動這個。
為了執(zhí)行那些需要解釋器的腳本和二進(jìn)制文件,這個特性必須啟用(Kernel support for MISC binaries)。這些可執(zhí)行文件的類型通常稱為包裝器驅(qū)動的二進(jìn)制格式。例如包括Python2/3、 .NET、Java、DOS執(zhí)行程序等等。
當(dāng)這個選項啟用時(Enable core dump support),內(nèi)核可以生成崩潰文件。這是一個調(diào)試特性。除非這個內(nèi)核是用來調(diào)試(無論內(nèi)核本身還是軟件),不然這個并不必要。
64位處理器可以執(zhí)行32位程序如果啟用了"IA32 Emulation"。最好啟用這個特性除非開發(fā)者確定內(nèi)核永遠(yuǎn)不會運行32位代碼。
老式的a.out二進(jìn)制文件也被支持(IA32 a.out support)。就像它稱呼的那樣,"匯編輸出"(Assembler Output),這是一種已編譯代碼的文件格式。
下一個設(shè)置允許32位處理器訪問完整的64位寄存器文件和寬數(shù)據(jù)路徑(x32 ABI for 64-bit mode)。然而,仍舊使用32位指針。這些32位進(jìn)程將比同樣的為64位編譯的進(jìn)程使用內(nèi)存更少,因為他們使用32位指針
下面,我們將講網(wǎng)絡(luò)支持。
我們第一個網(wǎng)絡(luò)設(shè)定是啟用一般的網(wǎng)絡(luò)(Networking Support)。很少有開發(fā)者會禁用這個特性。如果他們這么做了,內(nèi)核會變得又小又快,但是它將無法使用Wifi、藍(lán)牙、以太網(wǎng)或者任何由網(wǎng)絡(luò)設(shè)備或協(xié)議處理的連接。一些在獨立系統(tǒng)上程序也需要這個特性,即使硬件上不存在網(wǎng)絡(luò)設(shè)備。舉例來說,X11依賴于網(wǎng)絡(luò)特性。如果你能提供一個替代方案在屏幕上顯示圖形,你才能在內(nèi)核中禁用網(wǎng)絡(luò)特性。
"Packet socket"允許在沒有中介物的情況下,進(jìn)程與網(wǎng)絡(luò)設(shè)備間進(jìn)行通信。這個增強了性能。
ss工具需要啟用這個特性用來數(shù)據(jù)包監(jiān)控(Packet: sockets monitoring interface)。包監(jiān)控意味著監(jiān)視相關(guān)本地設(shè)備的網(wǎng)絡(luò)流量。
"Unix domain sockets" (Unix域套接字)是用來建立和訪問網(wǎng)絡(luò)連接。X窗口系統(tǒng)需要這個特性;這是一個極好的例子來說明為什么即使系統(tǒng)中不會使用網(wǎng)絡(luò)但是仍然在內(nèi)核中啟用網(wǎng)絡(luò)特性。Unix域套接字是運行在同一臺機器上的進(jìn)程間的網(wǎng)絡(luò)協(xié)議。
上面的Unix套接字可以被ss工具監(jiān)控,但是下面一個特性必須先啟用(UNIX: socket monitoring interface)。
轉(zhuǎn)換(Transformation (XFRM))用戶配置接口被許多Linux原生工具用到,所以這個特性強烈建議啟用(Transformation user configuration)。這個會啟用Ipsec-Internet Protocol SECurity(互聯(lián)網(wǎng)協(xié)議安全)。Ipsec控制著驗證并且/或者加密IP數(shù)據(jù)包。
下一個特性允許開發(fā)者給予網(wǎng)絡(luò)數(shù)據(jù)包第二個政策(稱作sub-policy)(Transformation sub policy support)。
IPsec安全聯(lián)合定位器可以當(dāng)這個特性啟用時(Transformation migrate database)動態(tài)更新。使用移動IPv6的設(shè)備需要這個特性。當(dāng)計算機與路由器或者任何形式的網(wǎng)絡(luò)設(shè)備設(shè)置了一個網(wǎng)絡(luò)連接,安全協(xié)議會確保兩者不會意外地連接到網(wǎng)絡(luò)上的其他設(shè)備上。IP數(shù)據(jù)包被設(shè)定發(fā)送到一個特定的設(shè)備上。然而,移動設(shè)備會使用不同的網(wǎng)絡(luò),比如說提供了4G信號,也需要能夠使用相同的連接到新的網(wǎng)絡(luò)點上。即使可能是相同的4G供應(yīng)商,不同的設(shè)備會提供一個4G連接到它的物理位置。當(dāng)設(shè)備處在新的區(qū)域時,它仍會使用相同的IP地址。
下一個特性是顯示在包處理中的傳輸錯誤統(tǒng)計(Transformation statistics)。這對開發(fā)者有用。如果不需要,可以禁用掉它。
"PF_KEY sockets"與KAME套接字兼容且它在使用從KAME移植來的IPsec工具時有用。KAME是IPv4 IPsec、IPv6 IPsec和IPv6的免費協(xié)議棧。
這是另外一個需要的移動IPv6特性,它增加了到PF_KEYv2套接字的PF_KEY MIGRATE消息(PF_KEY MIGRATE)。
下面的是最重要的并且是在網(wǎng)絡(luò)中最著名的需要啟用的特性-"TCP/IP networking"。大多數(shù)網(wǎng)絡(luò)(包括因特網(wǎng))依賴于這個協(xié)議。甚至X窗口系統(tǒng)也使用TCP/IP。這個特性甚至允許用戶ping它們自己(命令:ping 127.0.0.1)。要使用因特網(wǎng)或者X11,這個必須啟用。
為了尋找網(wǎng)絡(luò)中數(shù)個計算機,"IP: multicasting"必須啟用。多播是一種給多臺計算機但不是全部計算機發(fā)送消息的能力。廣播會給網(wǎng)絡(luò)中的所有計算機發(fā)送信號。
如果這是一個路由器Linux系統(tǒng)的內(nèi)核,那就啟用這個選項(IP: advanced router)。
如果下面的特性啟用了,那么IP地址會在啟動時自動配置(IP: kernel level autoconfiguration)。當(dāng)用戶希望不用配置就能連接到一個網(wǎng)絡(luò)時是很有用的。
啟用了DHCP協(xié)議支持,那么Linux系統(tǒng)可以通過網(wǎng)絡(luò)像NFS掛載它的根文件系統(tǒng)并且使用DHCP發(fā)現(xiàn)IP地址(IP: DHCP support)。這允許Linux系統(tǒng)通過網(wǎng)絡(luò)擁有它的遠(yuǎn)程根文件系統(tǒng)而不必用戶在每次系統(tǒng)啟動時手動管理進(jìn)程。
下面的選項和上面的類似除了使用的是BOOTP而不是DHCP(IP: BOOTP support。BOOTP是自舉協(xié)議;這個協(xié)議使用UDP而不是TCP并且只能使用IPv4網(wǎng)絡(luò)
RARP是一個被BOOTP和DHCP替代了的舊協(xié)議,但是它仍可以加到內(nèi)核中(IP: RARP support)。
網(wǎng)絡(luò)協(xié)議可以在另一個概念中使用,稱作"隧道"。這個特性可以用在Linux內(nèi)核中(IP: tunneling)。安全shell協(xié)議(The secure shell protocol (SSH))就是隧道協(xié)議的一個例子。SSH需要這個特性。
下面的驅(qū)動可以多路復(fù)用通用路由封裝包(GRE (Generic Routing Encapsulation))(IP: GRE demultiplexer)。多路復(fù)用是一個使單個信號進(jìn)入不同部分的過程(這不會復(fù)制消息,只是分解它)。GRE是一種隧道協(xié)議。
下面的特性允許GRE通道在IP連接中形成(IP: GRE tunnels over IP)。這允許GRE隧道在IP網(wǎng)絡(luò)中形成。
當(dāng)啟用這個特性(IP: broadcast GRE over IP),廣播可以通過IP使用GRE。
在Linux系統(tǒng)的路由器內(nèi),為了讓IP包發(fā)往多個地址,需要啟用這個(IP: multicast routing)。
在本篇中,我們將繼續(xù)配置網(wǎng)絡(luò)特性。記住,網(wǎng)絡(luò)是計算機最重要的特性,這篇文章和這之后的網(wǎng)絡(luò)相關(guān)文章都要重點了解。
在我們開啟這系列之前,我先要澄清一些事情。配置進(jìn)程不會編輯你當(dāng)前系統(tǒng)的內(nèi)核。這個進(jìn)程配置的是你編譯(或者交叉編譯)新內(nèi)核前的源代碼。一旦我完成了配置過程,那么我會討論讀者建議的話題。同樣,作為提醒,每個段落中在引號或者括號中的第一句或者第二句(很少)的文本是配置工具中設(shè)置的名字。
首先,我們可以啟用兩個不同的稀疏型獨立協(xié)議組播路由協(xié)議("IP: PIM-SM version 1 support" 和 "IP: PIM-SM version 2 support"),組播有點像廣播,但是廣播會給所有計算機發(fā)送信號而組播只會給選定的組或者計算機發(fā)送信號。所有PIM協(xié)議都是工作在IP的組播路由協(xié)議。
注意:當(dāng)計算機與另外一臺計算機或者服務(wù)器通信時,這叫做單播 - 只是以防你們想知道。
下一個要配置的網(wǎng)絡(luò)特性是"ARP daemon support"。這讓內(nèi)核有一張IP地址表以及它們相應(yīng)的在內(nèi)部緩存中的硬件地址。ARP代表的是地址解析協(xié)議(Address-Resolution-Protocol)。
為了額外的安全,"TCP syncookie support"應(yīng)該要啟用。這保護(hù)計算機免于受到SYN洪水攻擊。黑客或者惡意軟件可能會發(fā)送SYN信息給一臺服務(wù)器來消耗它的資源,以便讓真實的訪客無法使用服務(wù)器提供的服務(wù)。SYN消息會打開一個計算機和服務(wù)器之間的連接。Syncookie會阻斷不正當(dāng)?shù)腟YN消息。那么,真實的用戶可以仍舊訪問訪問網(wǎng)站,而黑客則沒辦法浪費你的帶寬。服務(wù)器應(yīng)該啟用這個特性。
下面的特性是用于 "Virtual (secure) IP: tunneling"。隧道是一個網(wǎng)絡(luò)協(xié)議到另外一個網(wǎng)絡(luò)協(xié)議的封裝。當(dāng)在使用虛擬私人網(wǎng)絡(luò)(VPN)時需要使用安全隧道。
接下來,啟用"AH transformation"增加對IPSec驗證頭的支持。這是一種管理數(shù)據(jù)驗證的安全措施。
在這之后,啟用"ESP transformation"增加對IPSec封裝安全協(xié)議的支持。這是加密與可選擇的數(shù)據(jù)驗證的安全措施。
如果啟用了這個特性(IP: IPComp transformation),Linux內(nèi)核會支持IP負(fù)載壓縮協(xié)議。這是一種無損壓縮系統(tǒng)。無損指的是數(shù)據(jù)仍會保持完整,在解壓縮后,數(shù)據(jù)在壓縮前后沒有變化。壓縮在加密前先執(zhí)行。由于更少的數(shù)據(jù)傳輸,所以這個壓縮協(xié)議可以加速網(wǎng)絡(luò)。
下面三個設(shè)置用于處理不同的IPsec特性("IP: IPsec transport mode"、"IP: IPsec tunnel mode"和"IP: IPsec BEET mode")。IPSec代表的是因特網(wǎng)安全協(xié)議(Internet Protocol SECurity).兩臺計算機之間并且/或者服務(wù)器間的傳輸模式是默認(rèn)的IPSec模式。傳輸模式使用AH或者ESP頭并且只加密IP頭。在隧道模式下,IP頭和負(fù)載會被加密。隧道模式通常用于連接網(wǎng)關(guān)到服務(wù)器/服務(wù)器或者服務(wù)器到服務(wù)器。BEET模式(Bound End-to-End Tunnel)不會在IP地址改變時重連。BEET模式下的連接會仍然存在。BEET模式比其他幾種模式使用更少的字節(jié)。
下面,內(nèi)核可以支持收到大量IPv4/TCP包時減輕棧負(fù)擔(dān)(Large Receive Offload (ipv4/tcp))。網(wǎng)卡(NIC)處理TCP/IP棧。這個特性在內(nèi)核中增加了處理大型棧的代碼。
INET套接字可以啟用(INET: socket monitoring interface)。INET套接字用于因特網(wǎng)。這個特性(當(dāng)啟用時)會監(jiān)視來自或者發(fā)往因特網(wǎng)的連接與流量。
這里有另外一個套接字監(jiān)視接口(UDP: socket monitoring interface)。這個用于用戶數(shù)據(jù)報協(xié)議(User Datagram Protocol (UDP))。再說一下,這個特性監(jiān)視UDP的套接字。
以下的設(shè)定會啟用不同的TCP擁塞控制(TCP: advanced congestion control)。如果網(wǎng)絡(luò)變得太忙或者帶寬已滿,那么許多計算機必須等待一些帶寬或者它們的數(shù)據(jù)流會變慢。如果流量被合理管理,這回有助于網(wǎng)絡(luò)性能提升。
TCP連接可以被MD5保護(hù)(TCP: MD5 Signature Option support)。這用于保護(hù)核心路由器之間的邊界網(wǎng)關(guān)協(xié)議(Border Gateway Protocol (BGP))連接。核心路由器是網(wǎng)絡(luò)中主要的路由器;這些路由器有時指的是因特網(wǎng)/網(wǎng)絡(luò)的骨干。BGP是一種路由決策協(xié)議。
下一個設(shè)定允許你啟用/禁用"The IPv6 protocol"。當(dāng)你啟用它,IPv4仍舊可以很好地工作。
下面的特性是一個特殊的隱私特性(IPv6: Privacy Extensions (RFC 3041) support)。這使得系統(tǒng)在網(wǎng)絡(luò)接口中生成并使用不同的隨即地址。
注意:計算機中沒有數(shù)據(jù)是真正隨機的。計算機中隨機數(shù)和隨機字串通常稱為偽隨機。
在多路由的網(wǎng)絡(luò)中,這個特性允許系統(tǒng)能夠更有效地計算出該使用哪一個(IPv6: Router Preference (RFC 4191))。
在這之后,一個用于處理路由信息的實驗性特性可以啟用/禁用(IPv6: Route Information (RFC 4191))。記住,在編譯一個穩(wěn)定內(nèi)核時,除非你確實需要這個問題中特性,才去安裝實驗性的功能。
有時,當(dāng)系統(tǒng)自動配置它的IPv6地址時,它可能會得到一個網(wǎng)絡(luò)中已被使用的IPv6地址。這是一個允許重復(fù)地址檢測(Duplicate Address Detection (DAD)的實驗性特性(IPv6: Enable RFC 4429 Optimistic DAD)。
IPv6可以有不同的IPsecc特性支持("IPv6: AH transformation" 和 "IPv6: ESP transformation")。
IPv6同樣可以使用先前討論過的IP負(fù)載壓縮協(xié)議(IP Payload Compression Protocol)(IPv6: IPComp transformation)。
這里甚至有IPv6移動支持(IPv6: Mobility)。這允許使用IPv6的移動設(shè)備在保留同樣地址的情況下使用其他的網(wǎng)絡(luò)。
再說一次,這里同樣有一些針對IPv6的IPsec特性("IPv6: IPsec transport mode"、"IPv6: IPsec tunnel mode"、"IPv6: IPsec BEET mode")。
當(dāng)啟用此項后,IPv6可以支持MIPv6路由優(yōu)化(IPv6: MIPv6 route optimization mode)。這樣就可以確保最短和最佳網(wǎng)絡(luò)路徑了。如果消息在更少的路由和網(wǎng)絡(luò)設(shè)備間發(fā)送,那么下載和上傳速度就可以更快。
如果一個管理員需要連接到兩個IPv6網(wǎng)絡(luò),但是只能通過IPv4來連接,這時內(nèi)核使這個變得可能(IPv6: IPv6-in-IPv4 tunnel (SIT driver)。這通過隧道使IPv6報文穿越IPv4網(wǎng)絡(luò)。
這個隧道特性是用于IPv6-in-IPv6 和 IPv4 tunneled in IPv6 (IPv6: IP-in-IPv6 tunnel (RFC2473))
另外一個隧道特性是(IPv6: GRE tunnel)。他只允許GRE隧道。(GRE:通用路由封裝(Generic Routing Encapsulation))
允許支持多重路由表(IPv6: Multiple Routing Tables)。路由表是一張網(wǎng)絡(luò)位置列表和數(shù)據(jù)要去目的地的路徑。
允許根據(jù)源地址或前綴進(jìn)行路由如果啟用了(IPv6: source address based routing)。
"IPv6 Multicast routing"(IPv6組播路由)仍然是實驗性質(zhì)。IPv4和IPv6處理組播的方式不同。
典型的組播路由根據(jù)目標(biāo)地址和源地址來處理組播包(IPv6: multicast policy routing)。啟用這個選項會將接口和包的標(biāo)記(mark)包含到?jīng)Q策中。
下面可以啟用IPv6的PIM-SMv2 組播路由協(xié)議(IPv6: PIM-SM version 2 support)。這與先前提到的IPv4 PIM相同。因為IPv4和IPv6不同,所以PIM可以被v4/v6同時/分別激活
網(wǎng)絡(luò)包標(biāo)簽協(xié)議(Network packet labeling protocols)(就像CIPSO和RIPSO)可以啟用(NetLabel subsystem support)。這些標(biāo)簽包含了安全信息和權(quán)限。
網(wǎng)絡(luò)包可以通過啟用安全標(biāo)記(Security Marking)變得更安全。
這個網(wǎng)絡(luò)特性增加了一些開銷(Time-stamping in PHY devices)。物理層(PHY)設(shè)備可以給網(wǎng)絡(luò)包打上時間戳。PHY代表的是"PHYsical layer"。這些設(shè)備管理收到和發(fā)送的消息。
可以啟用netfilter(Network packet filtering framework)。Netfilters過濾并修改過往的網(wǎng)絡(luò)包。包過濾器是一種防火墻。如果包滿足了一定的條件,包不會被允許通過。
數(shù)據(jù)報擁塞控制協(xié)議(Datagram Congestion Control Protocol)可以啟用(The DCCP Protocol)。DCCP允許雙向單播連接。DCCP有助于流媒體、網(wǎng)絡(luò)電話和在線游戲。
下一步,流控制傳輸協(xié)議(Stream Control Transmission Protocol)可以啟用(The SCTP Protocol)。SCTP工作在IP頂層并且是一個穩(wěn)定可靠的協(xié)議。
下面的協(xié)議是可靠數(shù)據(jù)報套接字(Reliable Datagram Sockets)協(xié)議(The RDS Protocol)。
RDS可以使用Infiniband和iWARP作為一種支持RDMA的傳輸方式(RDS over Infiniband and iWARP),Infiniband和iWARP都是協(xié)議。RDMA代表的是遠(yuǎn)程直接內(nèi)存訪問(remote direct memory access)。RDMA用于一臺遠(yuǎn)程計算機訪問另一臺計算機的內(nèi)存而無需本機計算機操作系統(tǒng)的輔助。這就像直接內(nèi)存訪問(DMA),但是這里遠(yuǎn)程代替了本地計算機。
RDS同樣可以使用TCP傳輸(RDS over TCP)
接下來,"RDS debugging messages"應(yīng)該禁用。
下面的網(wǎng)絡(luò)協(xié)議用于集群(The TIPC Protocol)。集群就是一組計算機作為一臺計算機。它們需要有一個方式去通信,所以他們使用透明內(nèi)部進(jìn)程間通信協(xié)議(Transparent Inter Process Communication (TIPC))。
這個高速協(xié)議使用固定大小的數(shù)據(jù)包(Asynchronous Transfer Mode (ATM))。
使用ATM的IP可以與連接到一個ATM網(wǎng)絡(luò)的IP的系統(tǒng)通信(Classical IP over ATM)。
下一個特性禁用"ICMP host unreachable"(ICMP主機不可達(dá))錯誤信息(Do NOT send ICMP if no neighbor)。這防止了由于重新校驗而移除ATMARP表被移除的問題。ATMARP表管理地址解析。ICMP代表的是因特網(wǎng)控制消息協(xié)議(Internet Control Message Protocol)并被常用于通過網(wǎng)絡(luò)發(fā)送錯誤消息。
LAN仿真(LANE)仿真了ATM網(wǎng)絡(luò)上的LAN服務(wù)(LAN Emulation (LANE) support)。一臺LANE計算機可以作為橋接Ethernet和ELAN的代理。
"Multi-Protocol Over ATM (MPOA) support"允許ATM設(shè)備通過子網(wǎng)邊界發(fā)送連接。
在這個特性下,至少在kernel看來ATM PVCs的行為就像Ethernet(RFC1483/2684 Bridged protocols)。PVC代表的是永久虛電路(permanent virtual circuit)。虛擬連接是一種基于包的連接,它伴隨著主/原始協(xié)議使用其他更高層的協(xié)議。
"Layer Two Tunneling Protocol (L2TP)"(二層隧道協(xié)議)是隧道對應(yīng)用透明。虛擬私有網(wǎng)絡(luò)(Virtual Private Networks (VPNs))使用L2TP
要想使用基于Linux的以太網(wǎng)橋,啟用這個橋特性(802.1d Ethernet Bridging)。在網(wǎng)絡(luò)中,一個橋同時連接兩個或者更多的連接。以太網(wǎng)橋是使用以太網(wǎng)端口的硬件橋。
"IGMP/MLD snooping"(IGMP/MLD 探聽)是一種以太網(wǎng)橋能夠基于IGMP/MLD負(fù)載選擇性地轉(zhuǎn)發(fā)組播信號的能力。禁用這個特性能夠明顯減少內(nèi)核的大小。IGMP代表的是因特網(wǎng)組管理協(xié)議(Internet Group Management Protocol),這是一種被用于設(shè)置組播組的協(xié)議。MLD代表多播監(jiān)聽發(fā)現(xiàn)(Multicast Listener Discovery)。
下一個過濾特性允許以太網(wǎng)橋選擇性地管理在每個數(shù)據(jù)包中的基于VLAN的信息的流量。 ?用這個特性可以減小內(nèi)核的大小。
通過啟用這個特性(802.1Q VLAN Support),VLAN接口可以在以太網(wǎng)上創(chuàng)建。下面"GVRP (GARP VLAN Registration Protocol)"支持GVPR協(xié)議被用于在網(wǎng)絡(luò)設(shè)備上注冊某些vlan。
在這之后,"MVRP (Multiple VLAN Registration Protocol) support"(多重VLAN注冊協(xié)議)可以啟用。MVRP是GVRP更新的替代品。
"DECnet Support"是一種Digital公司發(fā)明的網(wǎng)絡(luò)協(xié)議。這是一中既安全又穩(wěn)定的協(xié)議。
"DECnet router support"允許用戶制作基于Linux的支持DRCnet的路由。
注意:Linux可以用于服務(wù)器、工作站、路由器、集群、防火墻并支持其他許多用途。
下面的特性用于支持邏輯鏈路層2(Logical Link Layer type 2)(ANSI/IEEE 802.2 LLC type 2 Support)。這層允許在同一個網(wǎng)絡(luò)設(shè)備上使用多個協(xié)議。強烈建議在網(wǎng)絡(luò)很重要的環(huán)境中啟用這個特性。最好所有內(nèi)核都支持這個特性。
在下一篇文章中,我們將討論更多的關(guān)于可以配置的網(wǎng)絡(luò)設(shè)定。
Novell的網(wǎng)絡(luò)協(xié)議IPX通常用于Windows系統(tǒng)和NetWare服務(wù)器(The IPX protocol)。IPX代表網(wǎng)間分組交換(Internetwork Packet Exchange)。這是一個網(wǎng)絡(luò)層協(xié)議通常與傳輸層的SPX協(xié)議同時使用。
為了使NetWare服務(wù)器在服務(wù)的網(wǎng)絡(luò)中有相同的IPX地址,啟用下一個特性(IPX: Full internal IPX network)。不然,每個網(wǎng)絡(luò)都會看到服務(wù)器一個不同的IPX地址。
注意:IPX協(xié)議使用IPX尋址,而不是IP尋址。IP地址不是計算機網(wǎng)絡(luò)中唯一的網(wǎng)絡(luò)地址。
對于在Apple網(wǎng)絡(luò)中的Linux系統(tǒng),需要啟用Appletalk(Appletalk protocol support)。蘋果計算機和蘋果打印機通常使用Appletalk在網(wǎng)絡(luò)間通信。Appletalk不需要一臺中心路由器/服務(wù)器并且網(wǎng)絡(luò)系統(tǒng)是即插即用的。
在Appletalk網(wǎng)絡(luò)中Linux系統(tǒng)需要使用IP需要"Appletalk interfaces support"(AppleTalk接口支持)。
下一個特性允許用戶在Appletalk中使用IP隧道(Appletalk-IP driver support)。
接下來,這個特性允許IP包被封裝成Apppletalk幀(IP to Appletalk-IP Encapsulation support)。在網(wǎng)絡(luò)中,幀是一種標(biāo)記包的開始和結(jié)束的特殊序列位。這個特性會將IP包放在Appletalk包內(nèi)部。
這個特性允許為先前的特性解包(Appletalk-IP to IP Decapsulation support)。解包器會將IP包從Appletalk包中拿出。
這是另外一個協(xié)議層稱為"X.25" (CCITT X.25 Packet Layer)。這個協(xié)議層通常用于非常大的網(wǎng)絡(luò),就像國家公網(wǎng)。許多銀行使用這個在他們的擴展網(wǎng)絡(luò)系統(tǒng)里。X25(拼成"X25"或"X.25")網(wǎng)絡(luò)擁有將進(jìn)入數(shù)據(jù)包打包的包分組交換機。X25正在被更簡單的IP協(xié)議代替。X25是一個不如TCP/IP有效率的舊協(xié)議,但是一些公司發(fā)現(xiàn)它在大型、復(fù)雜的網(wǎng)絡(luò)中很有用。
LAPB是用于X.25的數(shù)據(jù)鏈路層(LAPB Data Link Driver)。如果上面的啟用了,那么這也應(yīng)該同時啟用。LAPB代表的是"Link Access Procedure Balanced"(鏈路訪問過程平衡)。LAPB同樣也用于以太網(wǎng)和X.21網(wǎng)卡中(這里沒有打錯)。X.21是用于物理層(硬件),X.25用于網(wǎng)絡(luò)層。LPAB會檢查錯誤并確保包被放回正確的序列中。
Nokia調(diào)制解調(diào)器使用的電話網(wǎng)絡(luò)協(xié)議通常稱作"PhoNet"(Phonet protocols family)。Linux計算機遠(yuǎn)程控制Nokia電話機需要這個特性。
下一個網(wǎng)絡(luò)通常是用于不同自動設(shè)備間的小型無線連接(IEEE Std 802.15.4 Low-Rate Wireless Personal Area Networks support)。802.15.4是一種需要很少電量的簡單低數(shù)據(jù)率協(xié)議。這個無線協(xié)議最大可擴展到10米。這在通過無線網(wǎng)絡(luò)連接機器人傳感器時是很有用的。任何不該有線纜的機械可能都會從這個代替了繩子的本地?zé)o線網(wǎng)絡(luò)中獲益。
如果啟用了上面的特性,那么最好明智地啟用這個IPv6 壓縮特性(6lowpan support over IEEE 802.15.4)。
支持物理層 IEEE 802.15.4協(xié)議的SoftMac設(shè)備可以啟用這個特性(Generic IEEE 802.15.4 Soft Networking Stack (mac802154))。
當(dāng)有許多包需要傳輸時,內(nèi)核必須決定先發(fā)送哪一個(它們不能一次全部發(fā)送),所以這個特性幫助內(nèi)核區(qū)分包的優(yōu)先級(QoS and/or fair queuing)。如果不啟用這個,那么內(nèi)核會使用"first come, first serve approach"("誰先到,誰先服務(wù)")。這可能意味著緊急的網(wǎng)絡(luò)消息需要等待才能輪到它們傳輸。
在有數(shù)據(jù)中心服務(wù)器的網(wǎng)絡(luò)中,這個特性強烈建議啟用(Data Center Bridging support)。這個特性增強了以太網(wǎng)對數(shù)據(jù)中心網(wǎng)絡(luò)的連接。
DNS查詢可以在下一個選項中啟用(DNS Resolver support)。大多數(shù)存儲DNS緩存的系統(tǒng)允許計算機無需DNS服務(wù)器的輔助下執(zhí)行DNS查詢。
接下來是另一個用于多跳專用網(wǎng)狀網(wǎng)絡(luò)(B.A.T.M.A.N. Advanced Meshing Protocol)。"B.A.T.M.A.N."代表"better approach to mobile ad-hoc networking"(更好接入移動專用網(wǎng)絡(luò))。這個工作與有線和無線網(wǎng)絡(luò)。專用網(wǎng)絡(luò)沒有中心像路由器這類中心設(shè)置。每臺網(wǎng)絡(luò)上的設(shè)備就像個一臺路由器。網(wǎng)狀網(wǎng)絡(luò)是一個簡單的概念。每個節(jié)點必須路由發(fā)送給它的數(shù)據(jù)。在這個網(wǎng)狀網(wǎng)絡(luò)中,每臺計算機連接到全部或幾乎全部其他網(wǎng)絡(luò)設(shè)備。當(dāng)這樣的網(wǎng)絡(luò)畫在紙上成為一張地圖時,這個網(wǎng)絡(luò)看上去就像一張網(wǎng)。
當(dāng)許多網(wǎng)狀節(jié)點連接到相同的LAN和網(wǎng)時,一些網(wǎng)絡(luò)信號可能會回環(huán)(Bridge Loop Avoidance)(避免橋回環(huán))。這個特性可以避免此類的回環(huán)。這些回環(huán)可能永遠(yuǎn)不會結(jié)束或者降低性能。避免這樣的回環(huán)被稱為"Bridge Loop Avoidance (BLA)"。
分布式ARP表(Distributed ARP Tables (DAT))被用于增強ARP在稀疏無線網(wǎng)狀網(wǎng)絡(luò)的可靠性(Distributed ARP Table)。
BATMAN協(xié)議有些開發(fā)者需要用到的調(diào)式特性(B.A.T.M.A.N. Debugging)。對于任何調(diào)試特性,通常最好禁用它來節(jié)省空間以及得到一個更好優(yōu)化后的內(nèi)核。
虛擬化環(huán)境可以從"Open vSwitch"中得益。這是一個多層以太網(wǎng)交換機。Open vSwitch支持大量的協(xié)議。
虛擬機、hypervisor、主機之間的網(wǎng)絡(luò)連接需要"virtual socket protocol"。這個類似于TCP/IP.這些套接字就像其他網(wǎng)絡(luò)套接字,但是它們針對虛擬機。這允許客戶機系統(tǒng)擁有一個與主機的網(wǎng)絡(luò)連接。
這是一個可以管理網(wǎng)絡(luò)優(yōu)先級的cgroup子系統(tǒng)(Network priority cgroup)。這允許控制組(cgroup)根據(jù)發(fā)送應(yīng)用設(shè)置網(wǎng)絡(luò)流量優(yōu)先級。
BPF過濾器由解釋器處理,但是內(nèi)核可以執(zhí)行原生BPF過濾通過這個(enable BPF Just In Time compiler)。BPF代表的是"Berkeley Packet Filter"(伯克利報過濾器)。這允許計算機系統(tǒng)支持原生鏈路層包。
下面,我們有兩個網(wǎng)絡(luò)測試工具。第一個是"Packet Generator"(包生成器),這用于測試網(wǎng)絡(luò)時注射數(shù)據(jù)包(制造空包)。第二個,允許設(shè)置一個警報系統(tǒng),當(dāng)數(shù)據(jù)包丟失時警告用戶/系統(tǒng)(Network packet drop alerting service)。
Linux內(nèi)核可以用于無線電系統(tǒng)或者遠(yuǎn)程控制它們。"Amateur Radio AX.25 Level 2 protocol"用于計算機通過無線電通信。這個無線電協(xié)議可以在其他許多的協(xié)議中支持TCP/IP。
為了放置在AX.25網(wǎng)絡(luò)中沖突,啟用DAMA(AX.25 DAMA Slave support)。至今為止,Linux還不能作為DAMA的服務(wù)器,但是可以作為DAMA的客戶端。DAMA代表"Demand Assigned Multiple Access"(按需分配多址訪問)。DAMA分配網(wǎng)絡(luò)流量到特定的信道中去。
NET/ROM是AX.25的路由層。(Amateur Radio NET/ROM protocol)。
NET/ROM的一個替代是"Packet Layer Protocol (PLP)"(包層協(xié)議),它可以運行在AX.25的頂端(Amateur Radio X.25 PLP (Rose))。
控制器局域網(wǎng)絡(luò)(Controller Area Network (CAN))總線需要這個驅(qū)動(CAN bus subsystem support)。CAN總線是一種用于不同目的的串行協(xié)議。
使用這個特性(Raw CAN Protocol (raw access with CAN-ID filtering)),CAN總線可以通過BSD套接字API訪問
內(nèi)核中有用于CAN協(xié)議的廣播管理(Broadcast Manager CAN Protocol (with content filtering))。這個管理提供了很多控制,包括內(nèi)容過濾。
為了讓Linux盒子成為一個CAN路由器和/或者網(wǎng)關(guān),需要這個特性(CAN Gateway/Router (with netlink configuration))。
注意:網(wǎng)關(guān)是兩個或者更多網(wǎng)絡(luò)的接口設(shè)備,它提供不同的協(xié)議。一個簡單的定義可以是"網(wǎng)關(guān)是一個協(xié)議轉(zhuǎn)換器。"
注意:路由器轉(zhuǎn)發(fā)網(wǎng)絡(luò)流量和連接使用相同協(xié)議網(wǎng)絡(luò)。
如果啟用了(一些選項),Linux內(nèi)核可以支持很多CAN設(shè)備(主要是控制器)和接口。所有的CAN驅(qū)動都是對于這些設(shè)備的不同品牌和型號。在配置工具中,它們有以下這些標(biāo)題。
Virtual Local CAN Interface (vcan)?
Serial / USB serial CAN Adaptors (slcan)?
Platform CAN drivers with Netlink support?
Enable LED triggers for Netlink based drivers?
Microchip MCP251x SPI CAN controllers?
Janz VMOD-ICAN3 Intelligent CAN controller?
Intel EG20T PCH CAN controller?
Philips/NXP SJA1000 devices?
Bosch CCAN/DCAN devices?
Bosch CC770 and Intel AN82527 devices?
CAN USB interfaces?
Softing Gmbh CAN generic support?
Softing Gmbh CAN pcmcia cards
像Linux中的其他許多特性,CAN設(shè)備同樣可以啟用調(diào)試能力(CAN devices debugging messages)。再說一次,記住你內(nèi)核的目的,你需要調(diào)試還是需要性能?
Linux內(nèi)核同樣支持紅外線信號協(xié)議IrDA (infrared) subsystem support)。IrDa代表的是 "Infrared Data Associations"(紅外數(shù)據(jù)協(xié)會);這是紅外信號的標(biāo)準(zhǔn)。
許多人如今想要藍(lán)牙特性(Bluetooth subsystem support)。
RxRPC會話套接字可以啟用(RxRPC session sockets)。這些套接字使用RxRPC協(xié)議運載網(wǎng)絡(luò)連接。RxRPC運行于UDP的頂部。
如果啟用的話,Linux內(nèi)核可以支持"RxRPC dynamic debugging"(RxRPC 動態(tài)調(diào)試)。
RxRPC擁有kerberos 4和AFS kaserver安全特性可以啟用(RxRPC Kerberos security)。Kerberos是一種每個網(wǎng)絡(luò)設(shè)備在傳輸任何數(shù)據(jù)前都被需要證明彼此的身份的驗證協(xié)議。
對于電腦的無線網(wǎng)絡(luò)設(shè)備像Wifi,配置工具需要啟用無線局域網(wǎng)(802.11)設(shè)備(cfg80211 - wireless configuration API)。cfg80211代表"Configuration 802.11"(配置 802.11)。802.11是一種無線規(guī)范。
"nl80211 testmode command"是用于校準(zhǔn)并且/或驗證的實用工具,它無線設(shè)備芯片上執(zhí)行這些任務(wù)。
下一個設(shè)置允許用戶"enable developer warnings"(啟用開發(fā)者警告)對于cfg80211設(shè)備。
下面,"cfg80211 regulatory debugging"(cfg80211調(diào)控調(diào)試)可以啟用。
下面的設(shè)定是"cfg80211 certification onus"(cfg80211證書義務(wù))。
應(yīng)該為cfg80211兼容設(shè)備啟用省電特性(enable powersave by default)。
cfg80211支持debugfs入口(cfg80211 DebugFS entries)。
無線設(shè)備有它們遵守的調(diào)整規(guī)則;這些被存儲在數(shù)據(jù)庫中(use statically compiled regulatory rules database)(使用靜態(tài)編譯的調(diào)整規(guī)則數(shù)據(jù)庫)
一些使用基于cfg80211的驅(qū)動擴展可能需要使用一個老的用戶空間。這個特性允許這個行為(cfg80211 wireless extensions compatibility)(cfg80211 無線擴展兼容)。
lib80211可以提供調(diào)試特性(lib80211 debugging messages)。
獨立于硬件的IEEE 802.11標(biāo)準(zhǔn)可以啟用(Generic IEEE 802.11 Networking Stack (mac80211))。mac80211是一種用于編寫softMAC無線設(shè)備驅(qū)動的框架。SoftMac允許很好地控制和配置設(shè)備。
下一個特性允許mac80211使用PID控制器管理TX(發(fā)送)速率(PID controller based rate control algorithm)(PID控制器基于速率控制算法)。TX單位是BFS(Bits per minute)(位/秒)。特別地,這個特性是用于控制數(shù)據(jù)流速率的算法。
另外一個相同特性的算法叫做"Minstrel"。這是一個比TX速 管理算法更精確和有效的算法。
Minstrel同樣支持802.11n(Minstrel 802.11n support)。
由于有兩種TX速率控制算法,但只能使用一種。所喲必須設(shè)備一個默認(rèn)的(Default rate control algorithm (Minstrel))。通常地,最好選擇Minstrel作為默認(rèn)。
802.11s網(wǎng)狀網(wǎng)絡(luò)草案可以在內(nèi)核中啟用(Enable mac80211 mesh networking (pre-802.11s) support)。802.11s草案是網(wǎng)狀網(wǎng)絡(luò)的無線標(biāo)準(zhǔn)。
對于支持這個特性的設(shè)備,對于不同包流量時間的LED除法器特性可以啟用(Enable LED triggers)。在我的以太網(wǎng)設(shè)備商上,當(dāng)端口是活躍時LED燈會點亮。這些驅(qū)動可以是這些LED在包流量時間下工作。
mac80211同樣支持debugfs特性(Export mac80211 internals in DebugFS)。
這是一個獨立于典型日志系統(tǒng)收集mac80211調(diào)試信息的特性(Trace all mac80211 debug messages)。
這是另外一組mac80211調(diào)試特性,但是這些使用的是典型日志系統(tǒng)(Select mac80211 debugging features --->)。在這個菜單,選擇你需要的調(diào)試特性。
在下一篇文章中,我們還有更多的需要配置。
使用WiMAX協(xié)議的無線寬頻設(shè)備可以啟用這個(WiMAX Wireless Broadband support)。這個類型的無線連接通常需由服務(wù)供應(yīng)商提供的連接服務(wù)才能工作(這與3G/4G的概念相同)。WiMAX代表"Worldwide Interoperability for Microwave Access"(微波存取全球互通)。WiMAX的目的是代替DSL。寬頻指的是寬的帶寬和大量信號的傳輸。
射頻開關(guān)被用于許多Wifi和藍(lán)牙卡中(RF switch subsystem support)。"RF"代表"Radio Frequency"。RF開關(guān)路由高頻信號。
RF開關(guān)輸入支持同樣也在內(nèi)核中支持(RF switch input support)。
內(nèi)核可以控制并請求無線傳輸(Generic rfkill regulator driver)。啟用這個生成一個設(shè)備文件(/dev/rfkill)。這個設(shè)備文件作為無線設(shè)備的接口。
Linux內(nèi)核支持9P2000協(xié)議(Plan 9 Resource Sharing Support (9P2000))。這個網(wǎng)絡(luò)協(xié)議有時稱作Styx。Plan 9的窗口系統(tǒng)(Rio)的Styx和Linux的X11都使用Unix網(wǎng)絡(luò)套接字。Linux系統(tǒng)可能使用Styx在Styx網(wǎng)絡(luò)中。Plan 9和Linux可以在一個網(wǎng)絡(luò)中使用Styx
"9P Virtio Transport"(9P 虛擬io傳輸)系統(tǒng)提供了在虛擬系統(tǒng)上客戶機和主機分區(qū)間的傳輸。
內(nèi)核同樣支持RDMA傳輸(9P RDMA Transport (Experimental))。RDMA代表的是"Remote Direct Memory Access"(遠(yuǎn)程內(nèi)存直接訪問)。這個Plan9上訪問遠(yuǎn)程計算機內(nèi)存的協(xié)議。
9P系統(tǒng)與其他內(nèi)核組件一樣有調(diào)試特性(Debug information)。
"CAIF support"支持同樣可以在內(nèi)核中啟用。CAIF代表" Communication CPU to Application CPU Interface"(通信CPU到應(yīng)用CPU接口)。這是一個使用數(shù)據(jù)包的多路復(fù)用(MUX)協(xié)議并被用于ST-Ericsson(意法愛立信)調(diào)制解調(diào)器中。ST-Ericsson是開發(fā)這個協(xié)議的公司(是的,MeeGo和Android是Linux系統(tǒng),并且我正在討論Google的Andorid)。MUX協(xié)議就是多路復(fù)用(multiplexing)協(xié)議。多路復(fù)用在前面的文章中已經(jīng)提到過。
下面,cephlib可以加入內(nèi)核,它可以用于rados塊設(shè)備(rbd)h和Ceph文件系統(tǒng)(Ceph核心庫)(譯注:Ceph是一種分布式文件系統(tǒng))。cephlib是是Ceph的完整核心庫。Ceph是存儲平臺。CephFs(Ceph文件系統(tǒng))是運行在另外一個文件系統(tǒng)的頂部。通常,CephFs運行在EXT2、ZFS、XFS或者BTRFS上面。Rados設(shè)備是使用CephFs的塊存儲單元。
ceph的調(diào)試特性會損害內(nèi)核性能,所以只在需要的時候啟用(Include file:line in ceph debug output)。 當(dāng)啟用這個選項(Use in-kernel support for DNS lookup),CONFIGDNSRESOLVER設(shè)施會執(zhí)行DNS查詢。
近場通信(Near Field Communication (NFC))設(shè)備在Linux內(nèi)核中也被支持(NFC subsystem support)。
如果上面的特性被啟用,那么NFC控制器接口(NFC Controller Interface (NCI))也應(yīng)該啟用(NCI protocol support)。這允許主機和NFC控制器相互通信。
NFC要處理HCI幀需要啟用下面一個特性(NFC HCI implementation)。
一些HCI驅(qū)動需要一個SHDLC鏈路層(SHDLC link layer)(SHDLC link layer for HCI based NFC drivers)。SHDLC是檢測完整性和管理HCI幀順序的協(xié)議。
如果NFC特性啟用了,那么通常也啟用"NFC LLCP support"(就像上面那樣)。
接下來有一些為特別的NFC設(shè)備的驅(qū)動。第一個是"NXP PN533 USB driver"。
下一個NFC驅(qū)動支持TI的BT/FM/GPS/NFC設(shè)備(Texas Instruments NFC WiLink driver)。
下面的是"NXP PN544 NFC driver"。
對于Inside Secure(譯注:法國一家非接觸半導(dǎo)體芯片廠商)生產(chǎn)的microread NFC芯片驅(qū)動同樣在內(nèi)核中支持(Inside Secure microread NFC driver)。
現(xiàn)在,我們將繼續(xù)配置與網(wǎng)絡(luò)無關(guān)的驅(qū)動。首先我們可以選擇uevent幫助程序的路徑(path to uevent helper)。如今許多計算機不在需要這個特性因為一個uevent幫助程序會在每次執(zhí)行時fork一個進(jìn)程處理。這回很快地消耗資源。
在啟動時,內(nèi)核會創(chuàng)建一個tmpfs/ramfs 文件系統(tǒng)(Maintain a devtmpfs filesystem to mount at /dev)。這個提供了完整的/dev目錄系統(tǒng)。在這兩個文件系統(tǒng)中(tmpfs和ramfs),ramfs兩者中最簡單。"tmpfs"代表"temporary filesystem"(臨時文件系統(tǒng)),而"ramfs"代表"ram filesystem"(內(nèi)存文件系統(tǒng))。
下一個設(shè)置是devtmpfs文件系統(tǒng)的代碼,它同樣掛載在/dev下(Automount devtmpfs at /dev, after the kernel mounted the rootfs)。
下面的特性允許模塊加載到用戶空間(Userspace firmware loading support)。
為了"Include in-kernel firmware blobs in kernel binary"(譯注:將固件編譯進(jìn)內(nèi)核)(這會增加專有固件到內(nèi)核中),就啟用這個特性。
一些二進(jìn)制專有驅(qū)動需要在啟動時使用。這個特性允許這類軟件這么做(External firmware blobs to build into the kernel binary)。一些計算機有些引導(dǎo)設(shè)備需要只包含專有二進(jìn)制文件的特殊固件。這個特性不啟用,系統(tǒng)將無法引導(dǎo)。
啟用"Fallback user-helper invocation for firmware loading",允許user-helper(用戶助手) (udev)作為內(nèi)核加載固件驅(qū)動失敗的后備手段加載固件。udev可以加載駐留在非標(biāo)準(zhǔn)路徑的固件。
管理驅(qū)動的不跟內(nèi)核如果被允許就可以生成調(diào)試信息(Driver Core verbose debug messages)。
下一步,如果啟用這個特性(Managed device resources verbose debug messages),devres.log文件就可以使用。這是一個用于設(shè)備資源的調(diào)試系統(tǒng)。
下面一個特性會通過netlink套接字生成一條用戶空間和內(nèi)核空間的連接(Connector - unified userspace <-> kernelspace linker)。這個套接字使用netlink協(xié)議。這是另外一個Linux系統(tǒng)即使在沒有物理網(wǎng)絡(luò)情況下仍需要網(wǎng)絡(luò)特性的例子。
用戶空間可以通過套接字得到進(jìn)城時間的通知(Report process events to userspace)。一些報告事件包含了ID改變、fork、和退出狀態(tài)。一些先前啟用的內(nèi)核特性可能需要這個。最好按配置工具建議的那樣設(shè)置。
使用固態(tài)硬盤的系統(tǒng)需要MTD的支持(Memory Technology Device (MTD) support)。MTD設(shè)備是固態(tài)存儲設(shè)備。典型的存儲設(shè)備與固態(tài)硬盤(SSD)不同。用于磁盤單元的標(biāo)準(zhǔn)常規(guī)不適用于SSD(讀、寫、擦除)。
大多數(shù)會桌面電腦帶有并口(一個有25個洞的連接器),所以他們需要這個特性(Parallel port support)。并口在其他許多鮮為人知的應(yīng)用中通常用于打印機和ZIP驅(qū)動器。并口有25針。
對IBM兼容計算機啟用這個特性(PC-style hardware)。它們是不同類型的計算機。除了IBM計算機(通常運行Windows),還有蘋果計算機。Linxu可以運行在幾乎所有類型的計算機上。
Linux同樣支持Multi-IO PCI卡(Multi-IO cards (parallel and serial))。Multi-IO PCI卡同時擁有并口和串口。串口每次發(fā)送或接收1位數(shù)據(jù)。
下一個特性允許內(nèi)核"Use FIFO/DMA if available"。這用于特定的并口卡來加速打印。FIFO代表"First In, First Out"(先入先出)。DMA是先前提過的直接內(nèi)存訪問(Direct Memory Access)。
下面一個特性用于探測Super-IO卡(SuperIO chipset support)。這些探針會發(fā)信中斷號、DMA通道和其他類型設(shè)備的地址/數(shù)量。Super-IO是一種集成IO控制器類型。
PCMCIA的并口支持可以啟用(Support for PCMCIA management for PC-style ports)。
注意:對于許多特性來說,你最好按照配置工具的建議除非你有特別的理由不這么做。通常地,如果你是交叉編譯或者編譯一個通用內(nèi)核,那么你應(yīng)該熟悉你想要支持的并做出相應(yīng)的選擇。
在AX88796網(wǎng)絡(luò)控制器的并口需要這個支持(AX88796 Parallel Port)。
"IEEE 1284 transfer modes"在并口上支持增強型并口(Enhanced Parallel Port (EPP))和增強功能口(Enhanced Capability Port (ECP))并支持打印機狀態(tài)回讀。狀態(tài)回讀是檢索打印機的狀態(tài)。
即插即用("Plug and Play support" (PnP))應(yīng)該啟用。這允許用戶在系統(tǒng)開機狀態(tài)下插入設(shè)備并能馬上使用它們。沒有這個特性,用戶不能使用USB設(shè)備、打印機或者其他沒有執(zhí)行特殊任務(wù)的設(shè)備。系統(tǒng)會自動管理復(fù)位(譯注:原文是 "The system will manage the rest automatically")。
下面,用戶可以啟用塊設(shè)備(Block devices)。這是一個應(yīng)該啟用的特性,因為塊設(shè)備很常見。
軟驅(qū)也是可以啟用的塊設(shè)備(Normal floppy disk support)。
連接到并口的IDE設(shè)備也同樣支持(Parallel port IDE device support)。一些外部CD-ROM設(shè)備也能通過并口連接。
外部IDE存儲設(shè)備單元同樣可以連接到并口(Parallel port IDE disks)。
連接到并口的ATA包接口(ATA Packet Interface (ATAPI)) CD-ROM需要這個驅(qū)動(Parallel port ATAPI CD-ROMs)。ATAPI是用于并行ATA(PATA)設(shè)備的ATA協(xié)議擴展。
還有一個ATAPI磁盤設(shè)備可以插到并口中(Parallel port ATAPI disks)。這個驅(qū)動會除了支持CD-ROM外還支持其他類型的磁盤。
內(nèi)核同樣支持通過并口連接ATAPI磁帶設(shè)備(Parallel port ATAPI tapes)。
還有許多其他的ATAPI設(shè)備可以連接到并口中。結(jié)果就是,一個通用驅(qū)動被用于管理前面提到過的驅(qū)動不支持的設(shè)備(Parallel port generic ATAPI devices)。
連接到并口上的IDE設(shè)備需要一個特殊的協(xié)議用于通信。有很多這樣的協(xié)議,其中一個是"ATEN EH-100 protocol"。
一個可選的用于并行IDE設(shè)備的協(xié)議是"MicroSolutions backpack (Series 5) protocol"。
這里仍有另外一個并口IDE設(shè)備協(xié)議(DataStor Commuter protocol)和另一個(DataStor EP-2000 protocol)還有(FIT TD-2000 protocol)。
再提一次,這里有另外一個協(xié)議,但是這個強烈建議用在更新的插在并口上的CD-ROM和PD/CD設(shè)備(FIT TD-3000 protocol)。
下面的協(xié)議主要用于SyQuest、Avatar、Imation和HP生產(chǎn)的并口設(shè)備(Shuttle EPAT/EPEZ protocol)。
Imation SuperDisks需要Shuttle EP1284芯片的支持(Support c7/c8 chips)。
一些其他的并行IDE協(xié)議可以啟用,包括:
Shuttle EPIA protocol?
Freecom IQ ASIC-2 protocol - (用于Maxell Superdisks)?
FreeCom power protocol?
KingByte KBIC-951A/971A protocols?
KT PHd protocol - (用于2.5英寸外置并口硬盤)?
OnSpec 90c20 protocol?
OnSpec 90c26 protocol
注意:這些協(xié)議以及支持的插入并口的設(shè)備意味著這些都類似于熱插拔設(shè)備,就像USB設(shè)備插入USB端口一樣。USB和火線人仍舊是使用最流行的端口,因為它們的大小和速度。一個并口設(shè)備單元大于USB閃存因為并口大于USB端口。
下一步,我們有一個對于Micron PCIe的SSD驅(qū)動(Block Device Driver for Micron PCIe SSDs)。
你可能已經(jīng)猜到了- 下面的文章會討論更多的配置.
準(zhǔn)備好配置更多的驅(qū)動了么?還有很多要做。
Linux支持兩種不同的康柏智能陣列控制器:(Compaq SMART2 support)和(Compaq Smart Array 5xxx support)。陣列控制器是將物理存儲單元表現(xiàn)為邏輯單元的設(shè)備。這些控制可能同樣實現(xiàn)了基于硬件的RAID。硬件和軟件RIAD的不同是簡單的。Linux管理并見到軟件RIAD。Linux將硬件RAID視為另外的存儲單元。這意味著Linux沒有意識到設(shè)備就是RAID驅(qū)動器。硬件(陣列控制器)獨立于內(nèi)核管理著RAID系統(tǒng)。這對于系統(tǒng)的性能更好因為內(nèi)核不必配置或者管理RAID。注意,不同的陣列控制器有不同的RAID能力。
上面提到的陣列控制器可以通過這個驅(qū)動訪問SCSI磁帶(SCSI tape drive support for Smart Array 5xxx)。SCSI磁帶是使用SCSI協(xié)議的磁帶機。
PCI RAID控制器Mylex DAC960、AcceleRAID和eXtremeRAID在這個驅(qū)動中支持(Mylex DAC960/DAC1100 PCI RAID Controller support)。PCI RAID控制器是一個連接到PCI卡的陣列控制器。RAID控制器是擁有RAID功能的陣列控制器。
帶電源備份的MM5415內(nèi)存芯片在這個驅(qū)動中支持(Micro Memory MM5415 Battery Backed RAM support)。帶后備電源內(nèi)存芯片允許數(shù)據(jù)在切斷電源后繼續(xù)保存在內(nèi)存設(shè)備中。這有助于保護(hù)數(shù)據(jù)。不然,當(dāng)電源斷開后,當(dāng)前的計算機會話就會丟失。
當(dāng)啟用這個特性后,可以將典型的文件(比如ISO文件)作為一個塊設(shè)備并掛載它Loopback device support)。這對于從鏡像文件中檢索文件而不必把文件燒錄到光盤或者解壓出來。想像一下你從因特網(wǎng)上得到了一份包含了很多文件的ISO文件。如果你只需要包中的一個文件并且用戶不希望燒寫ISO到光盤上或者不想知道如何打開一個ISO文件。用戶可以用掛載ISO來替代。
Linux內(nèi)核在初始化階段會創(chuàng)建一些回路設(shè)備,所以一些回環(huán)設(shè)備已經(jīng)準(zhǔn)備好并創(chuàng)建了(Number of loop devices to pre-create at init time)。當(dāng)一個文件(像ISO)或者虛擬設(shè)備(就像虛擬磁盤驅(qū)動器[vhd])被作為回環(huán)設(shè)備掛載時會節(jié)約一些時間。這個設(shè)定允許開發(fā)者選擇內(nèi)核可以預(yù) 創(chuàng)建多少回環(huán)設(shè)備。
當(dāng)"Cryptoloop Support"啟用后就可以CryptoAPI創(chuàng)建密碼。這個用于硬件驅(qū)動器加密。然而,并不是所有的文件系統(tǒng)都支持。
下面用戶可以啟用"DRBD Distributed Replicated Block Device support"(譯注:Linux上的分布存儲系統(tǒng))。這個就像網(wǎng)絡(luò)RAID1。這些設(shè)備擁有設(shè)備文件/dev/drbdx。這些設(shè)備通常被用于集群,這里集群中的每臺計算機都有一個從主單元鏡像過來的存儲單元。這意味著每臺計算機的硬盤是位于組中心計算機硬盤的鏡像拷貝。集群是一組計算機扮演著一臺大型強力單元的角色。然而,每個集群都有一臺控制計算機稱為主節(jié)點。余下的計算機是從節(jié)點。
DRBD支持用于測試IO錯誤處理的故障注射(DRBD fault injection)。記住,故障注射就是使設(shè)備/軟件認(rèn)為發(fā)生了一個錯誤,因此開發(fā)者可以測試硬件/軟件如何處理錯誤
如果內(nèi)核要成為網(wǎng)絡(luò)塊設(shè)備的客戶端,那么啟用這個特性(Network block device support)。第一個設(shè)備文件是/dev/nd0。網(wǎng)絡(luò)塊設(shè)備是通過網(wǎng)絡(luò)訪問的遠(yuǎn)程存儲單元。
直接連接SSD到PCI或者PCIe需要這個驅(qū)動(NVM Express block device)。
用這個特性允許將單獨的SCSI OSD(object-based storage,基于對象的存儲)對象作為塊設(shè)備(OSD object-as-blkdev support)。
下一個驅(qū)動是"Promise SATA SX8 support"。這個驅(qū)動用于Promise公司(Promise Technology Inc.)生產(chǎn)的SATA控制器。
Linux允許將一部分內(nèi)存作為塊設(shè)備(RAM block device support)。這通常見與完全運行于內(nèi)存上的Linux的live發(fā)行版。Linux的live發(fā)行版會卸載光盤并接著加載到內(nèi)存中,所以在嘗試一個新的操作系統(tǒng)或者修復(fù)另一個系統(tǒng)時不會傷害到已安裝的系統(tǒng)。
下一個選項允許用戶輸入"Default number of RAM disks"(默認(rèn)RAM磁盤數(shù)量)。
"Default RAM disk size"(默認(rèn)RAM磁盤大小)可以以KB設(shè)置大小。
內(nèi)核可以支持在內(nèi)存設(shè)備的XIP文件系統(tǒng)作為塊設(shè)備(Support XIP filesystems on RAM block device)。這個特性會增大內(nèi)核的大小。 XIP (eXecute In Place)文件系統(tǒng)是一個允許可執(zhí)行文件在相同的文件系統(tǒng)上存儲數(shù)據(jù)而不必像其他應(yīng)用一樣利用內(nèi)存。在一個駐留在內(nèi)存上的live版linux系統(tǒng)上運行可執(zhí)行文件時需要這個文件系統(tǒng)。
下面,內(nèi)核可以支持"Packet writing on CD/DVD media"。(CD/DVD刻錄機支持.)
內(nèi)核開發(fā)者可以設(shè)置最大活躍并發(fā)包數(shù)量(Free buffers for data gathering)。大的數(shù)字會以內(nèi)存的消耗為代價加速寫入性能。一個包會消耗大約64KB。
Linux內(nèi)核可以使用可擦寫光盤作為緩存空間(Enable write caching)。這個特性仍然是試驗性質(zhì)。
下面的特性允許通過以太網(wǎng)線纜使用ATA規(guī)范(ATA over Ethernet support)。
下面的驅(qū)動允許虛擬塊設(shè)備創(chuàng)建為virtio(Virtio block driver)。virtio是IO虛擬化平臺。
一些非常老的硬盤還要一個特殊的驅(qū)動(Very old hard disk (MFM/RLL/IDE) driver)。
這里有一個驅(qū)動用于先前提到的Rados設(shè)備(Rados block device (RBD))。
下面是一個特殊的設(shè)備驅(qū)動(IBM FlashSystem 70/80 PCIe SSD Device Driver)。
現(xiàn)在,我們可以進(jìn)入雜項設(shè)備。第一個設(shè)定是啟用/禁用電位器(Analog Devices Digital Potentiometers )。
如果電位器在I2C總線上,那么就啟用這個(support I2C bus connection)。
如果電位器是連接到SPI總線,那么需要這個驅(qū)動(support SPI bus connection)。
注意:Linux內(nèi)核支持很多傳感器因為Linux內(nèi)核經(jīng)常用于天氣設(shè)備和機器人。
這個驅(qū)動用于IBM RSA(Condor)服務(wù)處理器(Device driver for IBM RSA service processor)。
內(nèi)核同樣支持PCI Sensable PHANToM設(shè)備驅(qū)動(Sensable PHANToM (PCI))。
這個驅(qū)動指引不同來自并行追蹤接口(Parallel Trace Interface (PTI))的追蹤數(shù)據(jù)發(fā)往Intel Penwell PTI口 (Parallel Trace Interface for MIPI P1149.7 cJTAG standard)。這個被指領(lǐng)的數(shù)據(jù)用于調(diào)試目的。
一些帶有IOC4芯片的SGI IO控制器需要這個驅(qū)動(SGI IOC4 Base IO support)。SGI IO是由SCI管理的輸入/輸出設(shè)備。IOC4芯片控制著許多由這些設(shè)備執(zhí)行的任務(wù)。這是一個基礎(chǔ)驅(qū)動。其他對這些設(shè)備的驅(qū)動依賴于這個驅(qū)動。
這里有很少的TI閃存媒體適配器驅(qū)動在Linux內(nèi)核中,(TI Flash Media interface support) 和(TI Flash Media PCI74xx/PCI76xx host adapter support)。
這個驅(qū)動("Integrated Circuits ICS932S401")用于ICS932S401時鐘控制芯片。
Atmel同步串行通信外設(shè)(Synchronized Serial Communication peripheral (SSC))有一個驅(qū)動在內(nèi)核中(Device driver for Atmel SSC peripheral)。這個設(shè)備提供點對點的設(shè)備間的串行連接。
"Enclosure Services"特性支持硬盤托架。
這是對于CS5535/CS5536芯片的定時器驅(qū)動(CS5535/CS5536 Geode Multi-Function General Purpose Timer (MFGPT) support)。
這個驅(qū)動讓應(yīng)用可以與HP工業(yè)標(biāo)準(zhǔn)服務(wù)器中的iLO管理處理器通信(Channel interface driver for the HP iLO processor)。"iLO"代表的是"Integrity Integrated Lights-Out".iLO允許遠(yuǎn)程服務(wù)器管理。
Linux內(nèi)核支持ALS APDS9802光敏傳感器(Medfield Avago APDS9802 ALS Sensor module)。一些其他支持的傳感器包括:
Intersil ISL29003 ambient light sensor?
Intersil ISL29020 ambient light sensor?
Taos TSL2550 ambient light sensor?
ROHM BH1780GLI ambient light sensor?
BH1770GLC / SFH7770 combined ALS - Proximity sensor?
APDS990X combined als and proximity sensors
注意:如果內(nèi)核是為廣泛的計算機編譯的話,大多數(shù)驅(qū)動應(yīng)該以模塊形式加入。
Linux甚至可以使用"Honeywell HMC6352 compass"(一種電子羅盤)。
內(nèi)核同樣支持"Dallas DS1682 Total Elapsed Time Recorder with Alarm"。(一種運行時間記錄儀)
16位的數(shù)模轉(zhuǎn)換器通過這個驅(qū)動支持(Texas Instruments DAC7512)。
"VMware Balloon Driver"將客戶機操作系統(tǒng)不需要的物理內(nèi)存頁交給需要那些需要的。
這里有兩個不同的壓力傳感器(BMP085 digital pressure sensor on I2C) 和 (BMP085 digital pressure sensor on SPI)。
Intel輸入/輸出集線器(Intel Input/Output Hub (IOH))同樣在內(nèi)核中支持(Intel EG20T PCH/LAPIS Semicon IOH(ML7213/ML7223/ML7831) PHUB)。具體地說,這個是Intel Topcliff芯片組的PCH PHUB(Platform Controller Hub Packet Hub)
"FSA9480 USB Switch"是檢測設(shè)備何時插入的檢測器。
下一個選項允許比特流配置(Lattice ECP3 FPGA bitstream configuration via SPI)。
Silicon微控制器使用Silicon實驗室C2端口,這需要一個特殊的驅(qū)動(Silicon Labs C2 port support)。
再說一次,繼續(xù)留意下一篇文章因為我們還有更多的要做。
歡迎來享受Linux內(nèi)核配置系列下一部分。如你所猜到的那樣,內(nèi)核支持大量不同的硬件、協(xié)議和特性。
下一組我們要討論的特性是"EEPROM support"。電可擦除可編程只讀存儲器(Electrically Erasable Programmable Read-Only Memory)是一種掉電或者意外關(guān)閉后不會擦除內(nèi)容的存儲器。
內(nèi)核支持在I2C卡上的EEPROM芯片包括FRAMs、ROMs和SRAMs (I2C EEPROMs / RAMs / ROMs 來自多數(shù)供貨商)。FRAM(同樣也稱作FeRAM是一種使用鐵電原理而不是電介質(zhì)存儲數(shù)據(jù)的隨機訪問存儲芯片)。ROM芯片是只讀(Read Only Memory)芯片。SRAM是靜態(tài)而不是動態(tài)存儲器就像DRAM。DRAN必須被刷新以保留數(shù)據(jù)而SRAM不需要刷新。然而,兩者都會在電源關(guān)閉或者丟失時失去數(shù)據(jù)。
內(nèi)核支持SPI總線的EEPROM(SPI EEPROMs from most vendors)。串行外設(shè)接口總線(Serial Peripheral Interface Bus (SPI))是一個缺乏錯誤檢測的全雙工總線系統(tǒng)。
老式的I2C EEPROM芯片需要一個除了上面I2C驅(qū)動之外的驅(qū)動(Old I2C EEPROM reader)。I2C總線用于嵌入式系統(tǒng)和電話,由于它用的是低速總線協(xié)議。
這個特性用來防止Maxim的可編程EEPROM變成只讀模式(Maxim MAX6874/5 power supply supervisor)。特別地,這驅(qū)動提供對這個芯片的更好的電源管理。
這里還有一個驅(qū)動"EEPROM 93CX6 support","Microwire EEPROM 93XX46 support"和"ENE CB710/720 Flash memory card reader support"。
和其他內(nèi)核特性一樣,這里有一個對于EEPROM的調(diào)試特性(Enable driver debugging)。再說一次,為了更好的性能,禁用調(diào)試特性。
下面,我們有一個TI特性(Shared transport core driver)。這個驅(qū)動提供對于BT/FM和GPS芯片的傳輸協(xié)議。
下面的驅(qū)動支持I2C LIS3LV02Dx加速度計(STMicroeletronics LIS3LV02Dx three-axis digital accelerometer (I2C))。設(shè)備提供的數(shù)據(jù)存儲在/sys/devices/platform/lis3lv02d。
下一步, Linux提供了下載固件到Altera的FPGA的模塊(Altera FPGA firmware download module)。FPGA就是現(xiàn)場可編輯邏輯門陣列(field-programmable gate array)。它們是可編程集成電路。
Intel Management Engine Interface提供Intel芯片的安全和其他服務(wù)。
"ME Enabled Intel Chipsets"可以支持MEI。MEI是"Management Engine Interface"(管理引擎接口)。這個驅(qū)動支持有MEI服務(wù)的芯片組。
"VMware VMCI Driver"是一種用于客戶機和宿主機中繼通信的高速虛擬設(shè)備。VMCI代表的是"Virtual Machine Communication Interface"(虛擬機通信接口)。
下面, "ATA/ATAPI/MFM/RLL support"可以啟用/禁用。MFM (Modified Frequency Modulation)是一種特殊的編碼軟驅(qū)位的方法。然而,這并不工作在所有的軟驅(qū)上。MFM使用RLL(Run-Length Limited)編碼制式。RLL通過有帶寬限制的系統(tǒng)通信轉(zhuǎn)換數(shù)據(jù)。ATAPI是先前提過的"ATA Packet Interface",同時ATA也在討論接口標(biāo)準(zhǔn)的時候討論過。
現(xiàn)在我們將討論SCSI支持。小型計算機接口(Small Computer System Interface (SCSI))是另外一種SATA的接口標(biāo)準(zhǔn)。USB和火線設(shè)備使用SCSI協(xié)議。
第一個SCSI設(shè)定關(guān)于"RAID Transport Class"。這允許RAID使用SCSI標(biāo)準(zhǔn)。
為了使用SCSI目標(biāo),啟用這個特性(SCSI target support)。
如果系統(tǒng)會運行舊的Linux應(yīng)用,系統(tǒng)可能需要"legacy /proc/scsi/ support"。這會在/proc/scsi創(chuàng)建SCSI文件。
為了支持SCSI磁盤,啟用下一個特性(SCSI disk support)。這是一個通用驅(qū)動。
為了支持SCSI磁帶,啟用這個特性(SCSI tape support)。這是一個通用驅(qū)動。SCSI磁帶驅(qū)動器在像磁帶的磁性條上記錄數(shù)據(jù)。
OnStream SCSI磁帶需要這個驅(qū)動而不是前面提到SCSI通用驅(qū)動SCSI OnStream SC-x0 tape support)。
"對于SCSI CDROM support",一些CD-ROM使用SCSI協(xié)議。
下面, 用戶可以啟用"Enable vendor-specific extensions (for SCSI CDROM)"。
這是一個對于大量不同SCSI設(shè)備的通用驅(qū)動(SCSI generic support)。這主要用于SCSI掃描儀和其他不被上面提到的SCSI驅(qū)動支持的設(shè)備或者那些之后會討論的設(shè)備。
一些SCSI點唱機需要這個SCSI驅(qū)動(SCSI media changer support)。
Linux內(nèi)核提供"SCSI Enclosure Support"。SCSI附件是一種管理電源和制冷SCSI設(shè)備同時提供不關(guān)于數(shù)據(jù)的服務(wù)的設(shè)備。
Linux內(nèi)核應(yīng)該設(shè)置為每個SCSI設(shè)備搜索全部的邏輯單元號(Logical Unit Numbers (LUN))(Probe all LUNs on each SCSI device)。LUN是SCSI地址。
這有額外的對于SCSI的錯誤報告(Verbose SCSI error reporting (kernel size +=12K))。這會明顯地增加內(nèi)核的大小。
這里還有一個SCSI日志系統(tǒng)(SCSI logging facility)。
為了增強你的系統(tǒng),啟用這個特性會允許SCSI在系統(tǒng)啟動時就被探測到而不是先啟用再探測(Asynchronous SCSI scanning)。大多數(shù)系統(tǒng)可以一次執(zhí)行這兩個任務(wù),因此為什么允許這項? 對于那些連接了很多SCSI設(shè)備的硬件,這個會明顯加快啟動速度。
下面,"Parallel SCSI (SPI) Transport Attributes"(傳統(tǒng)的并行SCSI)允許每個SCSI設(shè)備發(fā)送傳輸信息給sysfs。一些系統(tǒng)需要這個特性。
下面的特性和上面提到的一樣,但是發(fā)送光纖通道設(shè)備的傳輸信息(FiberChannel Transport Attributes)(光纖通道接口)。光線通道設(shè)備使用SCSI。
下面用戶可以啟用/禁用"SCSI target support for FiberChannel Transport Attributes"(為光纖通道添加"target"模式驅(qū)動)。
iSCSI設(shè)備和SAS設(shè)備的傳輸數(shù)據(jù)可以導(dǎo)出到sysfs(iSCSI Transport Attributes)和SAS Transport Attributes)。SAS代表的的是"Serial Attached SCSI"(串行鏈接SCSI)。
下面,ATA支持被加入libsas(ATA support for libsas (requires libata))。注意配置工具提示需要libata。為了滿足這個需求,啟用ATA支持。更多情況下,配置工具已經(jīng)或者將會會你這么做,但是請無論再檢查一下。libsas和libata是相應(yīng)的支持SAS和ATA的庫。
下面的特性允許SAS接口接收SMP幀(Support for SMP interpretation for SAS hosts)。這加入了一個SMP解釋器到libsas中。然而,這不會增加內(nèi)核的尺寸。SMP幀允許所有在多CPU系統(tǒng)上的處理器訪問SAS設(shè)備。
SRP可以發(fā)送傳輸?shù)臄?shù)據(jù)給sysfs(SRP Transport Attributes)。SRP代表SCSI RDMA協(xié)議(SCSI RDMA Protocol)。RDMA代表遠(yuǎn)程直接內(nèi)存訪問(Remote Direct Memory Access)。這意味著SRP是一個用來訪問連接到另外一臺計算機的SCSI設(shè)備的數(shù)據(jù)的協(xié)議。
下一步,用戶可以啟用"SCSI target support for SRP Transport"。
可以啟用底層SCSI驅(qū)動(SCSI low-level drivers)。這提供了很多基礎(chǔ)驅(qū)動。
在這之后,用戶可以啟用/禁用"PCMCIA SCSI adapter support"。這個適配器允許SCSI設(shè)備連接到PC卡上。
這里有一些驅(qū)動用于特殊的適配器- (Future Domain PCMCIA support)、(Qlogic PCMCIA support) 、(Symbios 53c500 PCMCIA support)。
多路徑安裝的設(shè)備需要這個特性(SCSI Device Handlers)。這用在每個節(jié)點都需要一個到SCSI存儲單元的直接路徑的集群中。
下一步,"OSD-Initiator library"(OSD啟動庫)可以啟用。這是一個提供了補丁、OSD協(xié)議、和針對SCSI設(shè)備的T10協(xié)議的SCSI驅(qū)動。 OSD代表的是基于對象的存儲設(shè)備(Object-based Storage Device);下一段會討論得更多。
這個特性生成一個SCSI上層用于測試和管理/dev/osdx設(shè)備(OSD Upper Level driver)。exofs使用這個驅(qū)動用于掛載基于OSD的文件系統(tǒng)。OSD設(shè)備不像其他存儲單元一樣使用塊的存儲設(shè)備。相反地,OSD設(shè)備存儲數(shù)據(jù)在稱之為對象的容器里。exofs曾經(jīng)稱作OSDFS。
如果啟用了它,OSD特性提供了調(diào)試工具(Compile All OSD modules with lots of DEBUG prints)。
如今,我們可以討論串行ATA和并行ATA特性和驅(qū)動了。首先啟用/禁用用于調(diào)試的第一個特性(Verbose ATA error reporting)。
下一步,用戶應(yīng)該對于ATA設(shè)備啟用高級配置及電源接口特性(ATA ACPI Support)。這允許內(nèi)核在SATA設(shè)備上更有效地管理電源使用。
內(nèi)核包含了對于"SATA Zero Power Optical Disc Drive (ZPODD) support"的驅(qū)動。這會在不使用時關(guān)閉SATA光盤驅(qū)動器(SATA optical disc drives (ODD))。這節(jié)約了能源以及減少損耗。
貼士:即使你在編譯一個高性能的內(nèi)核,嘗試啟用所有的電源管理特性。則減少了電源消耗、操作開銷、熱量產(chǎn)生(熱量會降低性能),以及老化。
SATA端口復(fù)用器需要這個驅(qū)動(SATA Port Multiplier support)。端口復(fù)用器是一個擁有許多端口但是自己僅需插入一個端口的設(shè)備。舉例來說,如果一個硬件有一個SATA口,但是還需要更多的口,在這個口上插入端口復(fù)用器。現(xiàn)在設(shè)備可以有許多SATA口了。
下一個驅(qū)動用于AHCI SATA(AHCI SATA support)。高級主機控制器接口(Advanced Host Controller Interface (AHCI))是一種SATA總線適配器的操作標(biāo)準(zhǔn)。
對于要在Soc硬件上支持AHCI SATA設(shè)備,必須啟用這個驅(qū)動(Platform AHCI SATA support)。Soc代表片上系統(tǒng)(System-on-a-Chip)。
下面是一些特殊設(shè)備的驅(qū)動
Initio 162x SATA support?
ACard AHCI variant (ATP 8620)?
Silicon Image 3124/3132 SATA support
再說一次,等著下一篇精彩的文章。
你好!這是Linux內(nèi)核系列的下一篇,我們?nèi)詫⑴渲肁TA設(shè)備并將進(jìn)入邏輯卷/存儲。
"ATA SFF support (for legacy IDE and PATA)"應(yīng)該啟用,因為這擴展了ATA的能力。
為了支持Pacific Digital的ADMA控制器,應(yīng)該啟用"Pacific Digital ADMA support"。
"Pacific Digital Serial ATA QStor support"(串口ATA支持)在下一個驅(qū)動中支持
Promise的SATA SX4設(shè)備在內(nèi)核中支持(Promise SATA SX4 support (Experimental))。
可以BMDMA的SFF ATA控制器需要這個驅(qū)動(ATA BMDMA support)。BMDMA代表總線主控直接內(nèi)存訪問(BMDMA stands for Bus-Master Direct Memory Access)。
下面,這個驅(qū)動對不同的SATA和PATA控制器提供支持Intel ESB, ICH, PIIX3, PIIX4 PATA/SATA support)。
這里有其他的特定設(shè)備驅(qū)動(Calxeda Highbank SATA support)、(Marvell SATA support)、(NVIDIA SATA support)、(Promise SATA TX2/TX4 support)、(Silicon Image SATA support)還有(SiS 964/965/966/180 SATA support)、(ServerWorks Frodo / Apple K2 SATA support)、(ULi Electronics SATA support)、(VIA SATA support)。。。由于有很多SATA/PATA控制器設(shè)計不同,一個通用驅(qū)動無法使用在這些設(shè)備上。
接下來,這個驅(qū)動支持PC卡上的ATA設(shè)備除非有特定設(shè)備管理硬件的驅(qū)動(PCMCIA PATA support)。
在這之后,有一個通用PATA驅(qū)動用于管理其他不被先前驅(qū)動支持的PATA設(shè)備 (Generic platform device PATA support)。
PATA設(shè)備的電源消耗由這個ACPI驅(qū)動管理(ACPI firmware driver for PATA)。強烈建議對系統(tǒng)上所有的硬件啟用ACPI。雖然這會增加內(nèi)核的大小,但是ACPI會增強性能。
"Generic ATA support"(通用ATA支持)由這個驅(qū)動提供。
古老的ISA、VLB和PCI總線PATA設(shè)備可以通過這個驅(qū)動支持(Legacy ISA PATA support (Experimental))。這個古老支持使用新的ATA層。
這組特性包含了許多對于RAID和LVM能力,可見下面的特性選項(Multiple devices driver support (RAID and LVM))。
有趣的事實:內(nèi)核是由C和匯編寫成的。
這個驅(qū)動允許RAID和LVM組合在一起。這用于使幾個LVM卷使用RAID。分區(qū)被組合成邏輯塊設(shè)備,然后形成RAID設(shè)備。
許多用戶會希望RAID可以在啟動時偵測到(Autodetect RAID arrays during kernel boot)。如果你沒有RAID,那么不要啟用這個特性。不然,啟動處理會比原先希望的慢上幾秒。
注意:當(dāng)配置Linux內(nèi)核時,最好按照"use it or lose it"(非用即失)的原則。那就是,如果你不用它,那就禁用這個特性。
硬盤分區(qū)可以通過這個驅(qū)動加在一起(Linear (append) mode)。
下面的驅(qū)動加入RAID-0支持帶邏輯塊設(shè)備中(RAID-0 (striping) mode)。接著還有 (RAID-1 (mirroring) mode)、(RAID-10 (mirrored striping) mode)和(RAID-4/RAID-5/RAID-6 mode)。
MD框架需要多路徑支持(Multipath I/O support)。MD框架就是多設(shè)備(Multi Device)框架,它將多臺設(shè)備作為一個單元管理。舉例來說,將許多存儲單元的分區(qū)組合起來可以使多個設(shè)備就像一個那樣。多路徑支持是用于使用處理虛擬的有多個地址的"單個設(shè)備"。因為單存儲單元物理上有多件物理設(shè)備,所以它有多個硬件地址。
使用這個調(diào)試驅(qū)動,可以測試更大的多磁盤存儲單元的bug(Faulty test module for MD)。
"Device mapper support"是一個用來映射邏輯扇區(qū)的卷管理器。LVM使用扇區(qū)映射。
如果啟用的話,設(shè)備映射器可以有調(diào)試特性(Device mapper debugging support)。
如果需要,邏輯設(shè)備可以設(shè)置加密數(shù)據(jù)(Crypt target support)。這個特性允許用戶將來加密那些存儲設(shè)備。
只有啟用了這個特性,才能使用邏輯存儲單元的快照功能(Snapshot target)。
"Thin provisioning"(自動精簡配置)允許邏輯卷設(shè)置成比組成邏輯卷的物理設(shè)備擁有更大的存儲容量(Thin provisioning target)。這個特性同樣為這類設(shè)備提供了快照功能。這額外的虛擬數(shù)據(jù)空間無法馬上使用。這個特性的意義是允許用戶在將來增加物理存儲單元并且節(jié)約了配置邏輯塊設(shè)備的時間。
用這個可以調(diào)試"Thin provisioning" (Keep stack trace of thin provisioning block lock holders)。
塊設(shè)備性能的提升可以通過移動更多的常用數(shù)據(jù)到更快的存儲單元中(Cache target (EXPERIMENTAL))。
卷管理器可以制成鏡像邏輯卷(Mirror target)。
設(shè)備映射器(Device-mapper (dm))單元支持映射RAID1、RAID10、 RAID4、RAID5和RAID6(RAID 1/4/5/6/10 target)。
設(shè)備映射器(device-mapper)日志可以鏡像到用戶空間(Mirror userspace logging)。
"Zero target"是一個忽視寫入并返回讀取為零的設(shè)備。
接下來,卷管理器應(yīng)該對硬件有多路徑支持(Multipath target)。
這個驅(qū)動會發(fā)現(xiàn)最有效的到存儲設(shè)備的路徑來讀取和寫入(I/O Path Selector based on the number of in-flight I/Os)。
下面的一個驅(qū)動和以上相同,但是會尋找最快路徑(I/O Path Selector based on the service time)。
如果一個邏輯卷上的物理存儲單元正忙,如果可能的話,這個特性會允許讀取/寫入到另一個物理卷上。
udev可以生成設(shè)備管理器操作事件DM uevents)。udev是/dev的設(shè)備管理器。
為了測試軟件/硬件對偶爾失敗的輸入/輸出任務(wù)的邏輯設(shè)備如何反映,啟用這個調(diào)試特性(Flakey target)。
邏輯卷可以創(chuàng)建為一個用于驗證另一個邏輯分區(qū)數(shù)據(jù)的只讀存儲單元(Verity target support)。
注意:如果你喜歡我的文章,并且如果你有的賬號,請在我的文章上點擊"Like"。同樣,再次分享這篇文章在Google、Twitter和/或者Facebook上。
ConfigFS和TCM存儲引擎可以通過這個設(shè)置啟用(Generic Target Core Mod (TCM) and ConfigFS Infrastructure)。ConfigFS是一個基于內(nèi)存的文件系統(tǒng)。
有趣的事實:Linux內(nèi)核沒有"main()"函數(shù)。在程序中,main()被依賴于kernel的libc調(diào)用。內(nèi)核沒有main()函數(shù)是因為libc將無法啟動內(nèi)核。如果內(nèi)核的確有main()函數(shù),那么我們就有一個"雞或者蛋"的問題-誰先來?另外,內(nèi)核的入口點用匯編寫成,這并不使用main()函數(shù)。
下面,"TCM/IBLOCK Subsystem Plugin for Linux/BLOCK"可以禁用或者啟用。
接著"TCM/FILEIO Subsystem Plugin for Linux/VFS"可以啟用/禁用。
再次,還有兩個TCM特性 - (TCM/pSCSI Subsystem Plugin for Linux/SCSI) 和 (TCM Virtual SAS target and Linux/SCSI LDD fabric loopback module)
對于ConfigFS的" iSCSI Target Mode Stack"在這個驅(qū)動中支持( iSCSI Target Mode Stack)。
下一步,可以啟用/禁用"FireWire SBP-2 fabric module"。這允許一臺計算機作為一個硬盤連接到另一臺計算機上。
在這之后,我們可以配置"Fusion Message Passing Technology (MPT) device support"。
在那個標(biāo)題下的第一個選項是一個用于并口適配器的SCSI支持的驅(qū)動(Fusion MPT ScsiHost drivers for SPI)。
SCSI同樣也可以支持光纖通道主機適配器(Fusion MPT ScsiHost drivers for FC)和/或SAS適配器(Fusion MPT ScsiHost drivers for SAS)。
下一步,用戶可以設(shè)置"Maximum number of scatter gather entries"。一個低的數(shù)值可以減少每個控制器實例的內(nèi)存消耗。
下一個驅(qū)動提供了ioctl系統(tǒng)調(diào)用來管理MPT適配器(Fusion MPT misc device (ioctl) driver)。
光纖通道端口可以用這個驅(qū)動支持IP LAN的流量(Fusion MPT LAN driver)。
我可以讀到你們的想法-你們會想到對于這個還有另外一篇文章。是的,你們想對了。請繼續(xù)關(guān)注這個系列的下一篇文章。
如果你喜歡這個系列,請在和/或者Google+上發(fā)表評論告訴我你有多喜歡這個系列,并且告訴我你想在今后的文章中希望看到的方面。或者給我發(fā)郵件)。謝謝!
想要更多地了解作者,請檢查下面的簽名欄中的鏈接(譯注:原文所在論壇有)
如果你已經(jīng)完整地閱讀了這篇文章,那么你應(yīng)該已經(jīng)看到單詞"Facebook"三次了。如果沒有,你沒有閱讀全部文章。
單詞"Facebook"在這段中,上一段,和一個注解中。我打賭你閱讀了上面的段落而沒有通讀文章來試圖尋找第三個單詞實例。
歡迎進(jìn)入Linux內(nèi)核系列文章的下一篇!我們正在接近配置過程的終點。在這篇文章中,我們將會討論固件驅(qū)動和文件系統(tǒng)驅(qū)動。
這個分類中的第一個驅(qū)動是尋找啟動盤(BIOS Enhanced Disk Drive calls determine boot disk)。有時,Linux不會知道哪個盤是啟動盤。這個驅(qū)動允許內(nèi)核詢問BIOS。Linux接著在sysfs上存儲信息。Linux需要知道這些來設(shè)置bootloader。
即使BIOS EDD服務(wù)被編譯進(jìn)了內(nèi)核,這個選項可以設(shè)置這些服務(wù)不激活(Sets default behavior for EDD detection to off )。EDD代表的是"Enhanced Disk Drive"(增強磁盤驅(qū)動器)。
當(dāng)使用kexec加載不同的內(nèi)核時,性能可以通過固件提供的內(nèi)存映射提升(Add firmware-provided memory map to sysfs)。
"Dell Systems Management Base Driver"通過sysfs接口提供了Linux內(nèi)核對于Dell硬件的更好的控制。
啟用這個驅(qū)動可以通過/sys/class/dmi/id/訪問硬件的信息(Export DMI identification via sysfs to userspace)。DMI代表的是Desktop Management Interface(桌面管理接口)。DMI管理硬件的組件和訪問硬件的數(shù)據(jù)。BIOS中數(shù)據(jù)的接口和硬件由SMBIOS(System Management BIOS)規(guī)范調(diào)節(jié)。
從DMI得到的原始數(shù)據(jù)表可以通過這個驅(qū)動訪問(DMI table support in sysfs)。
為了從iSCSI驅(qū)動器中啟動,啟用這個驅(qū)動(DMI table support in sysfs)。
最后的驅(qū)動是一組"Google Firmware Drivers"。這些驅(qū)動用于Google特定的硬件。除非你為Google工作并且需要在硬件上使用Linux或者你在為一臺從Google偷來的電腦編譯內(nèi)核,否則不要啟用它。
下面,我們可以配置內(nèi)核的文件系統(tǒng)支持。
"Second extended fs support"驅(qū)動用于EXT2文件系統(tǒng)。
"Ext2 extended attributes"提供了原生文件系統(tǒng)不支持的額外的元數(shù)據(jù)的使用。
"Ext2 POSIX Access Control Lists"增加了額外的非原生的權(quán)限模型。
"Ext2 Security Labels"增強了由SELinux提供的安全性。
啟用"Ext2 execute in place support"允許可執(zhí)行文件在當(dāng)前的位置執(zhí)行而不必在頁緩存中執(zhí)行。
這個驅(qū)動提供EXT3文件系統(tǒng)(Ext3 journaling file system support)。
"Default to 'data=ordered' in ext3"驅(qū)動設(shè)置數(shù)據(jù)的排序模式為"Ordered"。這種處理方式為日志和寫入工作。數(shù)據(jù)排序在這篇文章中解釋 -
"Ext3 extended attributes"提供了原生文件系統(tǒng)不支持的額外的元數(shù)據(jù)使用。再說一次,接下來的EXT3的驅(qū)動/特性與EXT2相同 - "Ext3 POSIX Access Control Lists" 和 "Ext3 Security Labels"。同樣,對接下來的EXT4也是相同的 - "Ext4 POSIX Access Control Lists"、"Ext4 Security Labels" 和 "EXT4 debugging support"。
EXT3和EXT4支持日志塊設(shè)備調(diào)試(JBD debugging support),(JBD2 debugging support)。
下面的驅(qū)動提供Reiser文件系統(tǒng)支持(Reiserfs support)。
Reiser文件系統(tǒng)也有調(diào)試(Enable reiserfs debug mode)。
內(nèi)核可以存儲ReiserFS統(tǒng)計在/proc/fs/reiserfs (Stats in /proc/fs/reiserfs)。
下面的Reiser驅(qū)動/特性與EXT2/3/4相同 - ReiserFS extended attributes", "ReiserFS POSIX Access Control Lists" 和 "ReiserFS Security Labels".
Linux內(nèi)核同樣支持JFS,同時也包含了不同的特性 "JFS filesystem support"、 "JFS POSIX Access Control Lists"、"JFS Security Labels"、"JFS debugging" 和 "JFS statistics".
再說一次,XFS可以通過啟用這些驅(qū)動/特性支持 - "XFS filesystem support"、"XFS Quota support"、"XFS POSIX ACL support"、"XFS Realtime subvolume support" 和 "XFS Debugging support"。
"Global FileSystem 2"可以被內(nèi)核支持(GFS2 file system support)。這個文件系統(tǒng)用于在集群中共享存儲。
"GFS2 DLM locking"驅(qū)動提供了GFS2的分布式鎖管理(DLM)
"Oracle?Cluster FileSystem 2"被內(nèi)核支持(OCFS2 file system support)。這個文件系統(tǒng)用于在集群中共享存儲。
"O2CB Kernelspace Clustering"提供了OCFS2文件系統(tǒng)的不同服務(wù)。
"OCFS2 Userspace Clustering"允許集群棧在用戶空間執(zhí)行。
"OCFS2 statistics"驅(qū)動允許用戶得到關(guān)于文件系統(tǒng)的統(tǒng)計信息。
像大多樹Linux內(nèi)核一樣,OCFS2提供日志(OCFS2 logging support)。這可能被用來監(jiān)視錯誤或者調(diào)試目的。
"OCFS2 expensive checks"驅(qū)動以性能為代價提供了存儲一致性檢測。一些Linux用戶建議只有在調(diào)試目的在才啟用它。
Linux內(nèi)核同樣包含了新的B樹文件系統(tǒng);這個驅(qū)動提供了磁盤格式化程序(Btrfs filesystem Unstable disk format)。BTRFS仍在開發(fā)中并被計劃某天變的比EXT4更流行。
"Btrfs POSIX Access Control Lists"提供了額外的原生BTRFS沒有提供的權(quán)限模型。
下面,是一個BTRFS檢測工具(Btrfs with integrity check tool compiled in (DANGEROUS))。由于BTRFS是一個最新在開發(fā)中的文件系統(tǒng),大多數(shù)相關(guān)軟件還并不穩(wěn)定。
Linux系統(tǒng)也支持NIL-FileSystem(NILFS2 file system support)。547/。
為了支持一些文件系統(tǒng)使用到的flock()系統(tǒng)調(diào)用,啟用這個驅(qū)動(Enable POSIX file locking API)。禁用這個去的那個會減少11KB的內(nèi)核大小。這個驅(qū)動提供了文件鎖定。文件鎖定是一個允許進(jìn)程在某刻讀取文件的過程。這通常用于網(wǎng)絡(luò)文件系統(tǒng),就像NFS。
"Dnotify support"驅(qū)動是一個古老的文件系統(tǒng)通知系統(tǒng),它提醒文件系統(tǒng)上的事件的用戶空間。它和它的繼承者被用于監(jiān)控應(yīng)用的文件系統(tǒng)。某個應(yīng)用告訴守護(hù)進(jìn)程需要監(jiān)視哪些事件。不然,每個用戶空間應(yīng)用需要它們自己完成這個任務(wù)。
記住,Dnotify是一個古老的系統(tǒng),那么什么是新的通知系統(tǒng)?它就是由這個驅(qū)動提供的Inotify (Inotify support for userspace)。
一個可選的通知系統(tǒng)是fanotify (Filesystem wide access notification)。Fanotify與Inotify一樣,但是fanotify比Inotify傳遞更多的信息到用戶空間中。
用這個驅(qū)動Fanotify可以檢測權(quán)限(fanotify permissions checking)。
對于用戶想要劃分存儲空間的系統(tǒng)需要 "Quota support"。
接下來的驅(qū)動允許通過netlink報告磁盤配額警告和信息(Report quota messages through netlink interface)。netlink是一個用于與內(nèi)核通信的用戶空間的套接字接口。
配額信息同樣可以發(fā)送到控制臺(Print quota warnings to console (OBSOLETE))。
這個驅(qū)動允許配額系統(tǒng)執(zhí)行額外的完整性檢查(Additional quota sanity checks)。在計算機技術(shù)中,完整性檢查是檢測由于不良編程導(dǎo)致的錯誤。文件和輸出都被檢查來確保數(shù)據(jù)正確而不是以奇怪的方式構(gòu)造。
一些舊的系統(tǒng)使用老的配額系統(tǒng)但希望在升級新內(nèi)核時保留舊的配額系統(tǒng)。可以通過啟用這個來容易解決(Old quota format support)。許多讀者可能想要知道為什么一些人想要保留舊的配額系統(tǒng)而不是更新新的。好的,想想一下你是一家很大公司的IT部門的經(jīng)理,公司有許多服務(wù)器運行著非常重要的任務(wù)。當(dāng)你可以繼續(xù)使用現(xiàn)在工作的很好的系統(tǒng),你想要創(chuàng)建并配置一個新的(也可能很大)的文件系統(tǒng)么? 通常上,對于計算機,堅持下面的原則 - 如果它沒有壞或者不會導(dǎo)致安全問題,不要去修復(fù)它。
用這個驅(qū)動,新的配額系統(tǒng)支持32位UID和GID(Quota format vfsv0 and vfsv1 support)。
為了自動掛載遠(yuǎn)程存儲單元,啟用這個驅(qū)動(Kernel automounter version 4 support)。
這個驅(qū)動支持FUSE文件系統(tǒng)(FUSE (Filesystem in Userspace) support)。用戶空間文件系統(tǒng)(FUSE)支持任何用戶創(chuàng)建他們自己的文件系統(tǒng)并在用戶空間內(nèi)使用。
一個特殊的FUSE擴展可以用于在用戶空間使用字符設(shè)備Character device in Userspace support)。
下一篇文章中,我們會繼續(xù)討論緩存,光盤文件系統(tǒng),Linux上的FAT32和其他有趣的文件系統(tǒng)話題。謝謝!
你好! 準(zhǔn)備好讀另一篇很酷的Linux內(nèi)核文章了么?
接下來,在這個任務(wù)中,我們可以啟用/禁用"Fusion MPT logging facility"。MPT代表"Message Passing Technology"(消息傳遞技術(shù))。Fusion驅(qū)動是由LSI Logic公司開發(fā)。MPT一種進(jìn)程間使用的特定消息策略。這個技術(shù)是同步的意味著進(jìn)程將會等待所需的消息。
在這之后,如果計算機處理擁有火線端口就應(yīng)該啟用"FireWire driver stack"。如果沒有,那么就沒有必要去啟動一個不會使用到的火線驅(qū)動。火線很像USB。不過在協(xié)議、速度、物理形狀和端口布局上不同。通常上,蘋果設(shè)備使用火線和USB。一些PC有火線端口,但是不像USB口那樣普及。
一些火線控制器使用OHCI-1394規(guī)范(OHCI-1394 controllers)。如果是這樣,啟用這個驅(qū)動。
為了使用火線存儲設(shè)備,啟用下一個驅(qū)動(Storage devices (SBP-2 protocol))。這個驅(qū)動提供了火線存儲單元與火線總線通信的協(xié)議(the card with the attached FireWire ports)。一些火線掃描儀同樣需要這個驅(qū)動。
IPv4可以用在火線端口(IP networking over 1394)。IEEE 1394或者簡單的"1394"就是火線。使用IPv4在火線多播有局限。
"Nosy"是"FireWire PCILynx"卡上的流量監(jiān)控(Nosy - a FireWire traffic sniffer for PCILynx cards)。
下一步,可以支持I2O設(shè)備(I2O device support)。"Intelligent Input/Output (I2O)"(智能輸入/輸出)總線使用硬件和操作系統(tǒng)層的驅(qū)動。硬件驅(qū)動(hardware drivers (HDM))并不特定與任何操作系統(tǒng)而OS驅(qū)動(OS drivers (OSM))必須在目標(biāo)操作系統(tǒng)上使用。OSM可以與任何HDM通信。I2O卡/總線有一個IOP- 輸入/輸出處理器(Input/Output Processor)。由于主CPU處理更少的數(shù)據(jù),所以加速了系統(tǒng)。
只在缺乏SUN I2O控制器的系統(tǒng)上啟用"Enable LCT notification"。I2C SUN固件不支持LCT通知。 如果目標(biāo)是RAID,Adaptec I2O控制器需要下一個驅(qū)動(Enable Adaptec extensions)。
64位的直接內(nèi)存訪問可以在Adaptec I2O控制器上啟用(Enable 64-bit DMA)。
如果允許,可以配置I2O設(shè)備(I2O Configuration support)。這個特性主要用在RAID設(shè)定中。
可以為I2O啟用支持老的輸入/輸出控制(Enable ioctls (OBSOLETE))。
可以啟用I2O總線適配器的OSM軟件(I2O Bus Adapter OSM)。這組OSM被用來尋找新的在其他適配器末端的I2O設(shè)備。
下面,可以啟用I2O塊設(shè)備上的OSM(I2O Block OSM)。I2O硬件上的RAID控制器需要這個OSM。
下面的OSM用于I2O控制器上的SCSI或者光纖通道設(shè)備。
如果啟用了(I2O /proc support),可以通過/proc讀取I2O設(shè)備的信息。
在啟用/禁用了I2O特性,我們可以繼續(xù)其他的內(nèi)核特性。下面,我們看到"Macintosh device drivers"。這只對蘋果設(shè)備有用。PC的Linux內(nèi)核不應(yīng)該有任何這些驅(qū)動啟用。然而,正如許多說法都有例外一樣。一些PC用戶可能會使用蘋果鼠標(biāo)、鍵盤和/或者一些其他的蘋果設(shè)備。再說一次,最好徹底地理解需求和正在開發(fā)的內(nèi)核。
下一步,我們有一個用于網(wǎng)絡(luò)的驅(qū)動(Network device support)。X11和其他的Linux軟件不依賴于這個驅(qū)動,所以如果內(nèi)核不會連接到另一臺計算機、因特網(wǎng)、內(nèi)聯(lián)網(wǎng)或者網(wǎng)絡(luò),那么這個特性可以安全地禁用。
下面的驅(qū)動就像上面,但是特定于核心驅(qū)動(Network core driver support)。
這個驅(qū)動支持Etherchannel(Bonding driver support)。"bonding"是兩條或者更多的以太網(wǎng)通道的融合。這也成為中繼。
使用這個驅(qū)動(Dummy net driver support),可以在Linux中設(shè)置一個虛擬網(wǎng)絡(luò)。虛擬網(wǎng)絡(luò)(dummy network)就像網(wǎng)絡(luò)中的/dev/null。任何發(fā)送給虛擬網(wǎng)絡(luò)的數(shù)據(jù)都會永久消失,因為它會發(fā)往/dev/null。IP地址沒有設(shè)置。用戶可以定義他們的網(wǎng)絡(luò)相當(dāng)于/dev/null。
下一步,可以支持和EQL(EQL (serial line load balancing) support)。這允許兩臺計算機使用SLIP或者PPP協(xié)議在兩條串行連接上通信。
光纖通道是一種用于連接存儲設(shè)備到計算機的快速串行協(xié)議(Fibre Channel driver support)。
TMII收發(fā)器需要這個驅(qū)動(Generic Media Independent Interface device support)。MII是一種用于最高速度為100Mbit/s以太網(wǎng)的接口。以太網(wǎng)線纜用于連接到PHYceiver,這是一種以太網(wǎng)收發(fā)器。
為了通過虛擬接口組織許多以太網(wǎng)設(shè)備,需要"Ethernet team driver support"。
"MAC-VLAN support"允許用戶在特定的MAC地址和某個接口上映射數(shù)據(jù)包。
TAP字符設(shè)備可以由MAC-VLAN接口生成(MAC-VLAN based tap driver)。TAP設(shè)備從內(nèi)核中獲取數(shù)據(jù)包,這樣它們就可以被送往其他地方。
下一個特性允許虛擬vxvlan接口在3層網(wǎng)絡(luò)上創(chuàng)建2層網(wǎng)絡(luò)(Virtual eXtensible Local Area Network (VXLAN))。這通常用于隧道虛擬網(wǎng)絡(luò)。
內(nèi)核發(fā)送給網(wǎng)絡(luò)的消息可任意通過這個特性記錄下來(Network console logging support)。除非記錄網(wǎng)絡(luò)信息對你很重要時才啟用它。禁用這個特性會增強性能。
這個特性允許不同參數(shù)被改變(Dynamic reconfiguration of logging targets)。這些參數(shù)包括端口號、MAC地址、IP地址和其他一些設(shè)定。
如果用戶空間程序希望使用TAP設(shè)備,那么啟用這個特性可以允許這樣的活動(Universal TUN/TAP device driver support)。
這個驅(qū)動用于本地以太網(wǎng)隧道(Virtual ethernet pair device)。
"Virtio network driver"用于QEMU、Xen、KVM和其他虛擬機。
下一步,可以啟用"ARCnet support"。ARCnet是一種類似令牌環(huán)本地局域網(wǎng)絡(luò)(Local-Area-Network (LAN)協(xié)議。ARCnet代表"Attached Resource Computer Network"(附加資源計算器網(wǎng)絡(luò))。
現(xiàn)在,我們進(jìn)入到"ATM drivers"。ATM代表"Asynchronous Transfer Mode"(異步傳輸模式)。ATM用于電信。
Marevell以太網(wǎng)交換機芯片需要這個驅(qū)動(Marvell 88E6060 ethernet switch chip support)。同樣,這類交換機的芯片同樣需要依賴模型(Marvell 88E6085/6095/6095F/6131 ethernet switch chip support)和(Marvell 88E6123/6161/6165 ethernet switch chip support)。
現(xiàn)在,我們可以學(xué)習(xí)關(guān)于"Ethernet driver support"。
首先我們可以啟用/禁用"3Com devices"。接下來允許內(nèi)核開發(fā)者選擇支持哪些3Com設(shè)備。
下一組選項是對于不同的"Adaptec devices"和接下來的"Alteon devices"。
這些只是特定設(shè)備/供應(yīng)商驅(qū)動。通常地,這些驅(qū)動被作為模塊加入。
在設(shè)置了這兩組選項后,接下來還有"AMD devices"和"Atheros devices"。
注意:請記住內(nèi)核會運行在哪類硬件上。對于大量不同的設(shè)備,或許最好把它們作為模塊加入
這里有不同特定供貨商的設(shè)備驅(qū)動-"Cadence devices"、"Broadcom devices"、"Brocade devices"、"Chelsio devices"、"Cisco devices"、"Digital Equipment devices"。一些其他的特定設(shè)備/供應(yīng)商驅(qū)動遵循它們。
接下來的驅(qū)動并不是特定設(shè)備/供應(yīng)商的 "SLIP (serial line) support"。這個驅(qū)動支持SLIP和CSLIP。SLIP(Serial Line Internet Protocol)是一種用于調(diào)制解調(diào)器和串口的因特網(wǎng)驅(qū)動。PPP現(xiàn)在用來代替SLIP。CSLIP是壓縮的SLIP。
下面,"CSLIP compressed headers"可以啟用用來壓縮TCP/IP頭。CSLIP快于SLIP,但是想要啟用CSLIP,傳輸和接收的計算機都必須理解CSLIP。
當(dāng)在惡劣的模擬線路上使用SLIP時,最好啟用"Keepalive and linefill",這會幫助保持連接。
對于質(zhì)量差的網(wǎng)絡(luò)或者7bit網(wǎng)絡(luò)中運行IP而言,最好啟用"Six bit SLIP encapsulation"。
現(xiàn)在我們可以進(jìn)入流行的USB系統(tǒng),但是這些是用于網(wǎng)絡(luò)的USB驅(qū)動。
第一個啟用/禁用的USB網(wǎng)絡(luò)設(shè)備是"USB CATC NetMate-based Ethernet device support"。這是用于10Mbps的USB以太網(wǎng)EL1210A芯片設(shè)備。USB設(shè)備將會扮演和成為一個以太網(wǎng)設(shè)備即使硬件是USB。
接下來,除了設(shè)備是KLSI KL5KUSB101B芯片組(USB KLSI KL5USB101-based ethernet device support),其他與上面的驅(qū)動一樣。
Pegasus USB是USB轉(zhuǎn)以太網(wǎng)的適配器/轉(zhuǎn)換器(USB Pegasus/Pegasus-II based ethernet device support)。
接下來是另外一個USB轉(zhuǎn)以太網(wǎng)驅(qū)動(USB RTL8150 based ethernet device support)。
下一篇文章中,我們將繼續(xù)配置USB網(wǎng)絡(luò)系統(tǒng)。
你好!在這篇Linux系列文章中,我們將繼續(xù)配置USB網(wǎng)絡(luò)驅(qū)動。接著我們將進(jìn)入輸入設(shè)備。
首先,我們可以啟用/禁用"Multi-purpose USB Networking Framework",這允許連接筆記本到桌面系統(tǒng)上。
下面,可以啟用/禁用ASIX USB-to-Ethernet適配器驅(qū)動(ASIX AX88xxx Based USB 2.0 Ethernet Adapters)。
那么,還有一個ASIX適配器驅(qū)動(ASIX AX88179/178A USB 3.0/2.0 to Gigabit Ethernet)。
注意:通常地,最好將適配器驅(qū)動作為模塊加入。
通信設(shè)備類規(guī)范(Communication Device Class specification)在這個驅(qū)動中提供(CDC Ethernet support (smart devices such as cable modems))。這個規(guī)范用于USB調(diào)制解調(diào)器。Linux系統(tǒng)可以將USB網(wǎng)絡(luò)接口識別為以太網(wǎng)網(wǎng)絡(luò)接口并且指定為"ethX",這里的"X"是以太設(shè)備編號。
下面是一個與上面類似的規(guī)范(CDC EEM support)。CDC EEM代表的是"Communication Device Class Ethernet Emulation Model"(通信設(shè)備類以太網(wǎng)仿真模型)。
CDC網(wǎng)絡(luò)控制模型(NCM)同樣有一個驅(qū)動提供了規(guī)范(CDC NCM support)。
這個驅(qū)動提供了"CDC MBIM (Mobile Broadband Interface Model)"規(guī)范同樣也在Linux內(nèi)核中(CDC MBIM support)。
下面,有一些供貨商/設(shè)備特定驅(qū)動用于不同的USB網(wǎng)絡(luò)設(shè)備和芯片組。
在這之后,有一個用于USB網(wǎng)絡(luò)設(shè)備的通用驅(qū)動,它不需要任何特殊的驅(qū)動(Simple USB Network Links (CDC Ethernet subset))。
再說一次,還有更多的驅(qū)動用于供貨商特定設(shè)備。
有趣的事實:Linux被用于制作James Cameron的電影"泰坦尼克"的特效。
"CDC Phonet support"是用于使用Phonet的Nokia USB調(diào)制解調(diào)器。(譯注:Phonet是Nokia開發(fā)的面向數(shù)據(jù)包的通信協(xié)議,僅用于Nokia maemo/meego產(chǎn)品)
現(xiàn)在,我們可以進(jìn)入使用802.11規(guī)范的無線局域網(wǎng)驅(qū)動了。
主要地,這里有一個供貨商/設(shè)備特定驅(qū)動列表。
"SoftLED Support"控制著關(guān)于Wifi卡/設(shè)備的LED燈。
一些芯片組支持的SDIO在這個驅(qū)動中(Atheros ath6kl SDIO support)。SDIO是用于無線SD卡的SD(Secure Digital)規(guī)范的擴展。SDIO代表的是"Secure Digital Input/Output"
內(nèi)核開發(fā)者可能注意到一些無線設(shè)備可以支持QoS。QoS代表"Quality of Service"(服務(wù)質(zhì)量)。這個特性給予網(wǎng)絡(luò)傳輸優(yōu)先級。假設(shè)需要通過網(wǎng)絡(luò)傳輸兩組數(shù)據(jù)。只有一個可以先發(fā)送。QoS會先發(fā)送最重要的數(shù)據(jù)。
有趣的事實:技術(shù)上來說,Linux并不是一個操作系統(tǒng)。Linux是一種內(nèi)核而GNU/Linux才是操作系統(tǒng)。
WAN卡需要"Generic HDLC layer"。HDLC代表"High-Level Data Link Control"(高級數(shù)據(jù)鏈路控制)。這是一個數(shù)據(jù)鏈路層協(xié)議。
原生HDLC可以通過"Raw HDLC support"驅(qū)動啟用。
"Raw HDLC Ethernet device support"驅(qū)動允許HDLC層模擬以太網(wǎng)。
cHDLC驅(qū)動提供了一個HDLC的擴展,同樣也稱作Cisco HDLC(Cisco HDLC support)。
Linux內(nèi)核同樣也提供了一個HDLC的"Frame Relay support"(幀中繼)驅(qū)動。幀中繼是2層協(xié)議。
HDLC同樣支持PPP(Synchronous Point-to-Point Protocol (PPP) support)和X.25(X.25 protocol support)。
接下來,這個驅(qū)動提供了DLCI下的幀中繼(Frame Relay DLCI support)。
"LAPB over Ethernet driver"創(chuàng)建一個允許用戶在以太網(wǎng)上使用LAPB的點到點連接到另一臺計算機的設(shè)備文件。這個設(shè)備文件對于第一個此類設(shè)備通常是/dev/lapb0。
用這個驅(qū)動,X.25幀可以通過電話線發(fā)送(X.25 async driver)。特別地,這個驅(qū)動允許X.25使用異步串行。
對于ISA SBNI12-xx有一種特殊的驅(qū)動(Granch SBNI12 Leased Line adapter support)。這種卡對于租用線路的調(diào)制解調(diào)器是一種便宜的替代。
下一個驅(qū)動允許使用并行連接攜帶已安排的流量(Multiple line feature support)。這允許Linux系統(tǒng)更加有效地在SBNI12適配器上管理并行連接。一些Linux用戶聲稱這個驅(qū)動雙倍加速了他們的速度。然而,這個我沒有親身測試了解。
接下來,可以配置"IEEE 802.15.4 drivers"。這個是對于慢速WAN設(shè)備。這是一個控制媒體和無線網(wǎng)絡(luò)物理層的標(biāo)準(zhǔn)。這個規(guī)范在不同的大洲使用不同的頻率。不如,在歐洲,這類無線設(shè)備會使用868.0-868.6MHz的頻率。
這個目錄中的第一個設(shè)定是fake LR-WPAN驅(qū)動(Fake LR-WPAN driver with several interconnected devices)。LR-WPAN代表"Low-Rate Wireless Personal Area Network"(低速無線個人網(wǎng)絡(luò))。
有趣的事實:目前內(nèi)核中只有大約2%的代碼是由Linus Torvalds寫的。
VMware使用vmxnet3虛擬以太網(wǎng)需要這個驅(qū)動(VMware VMXNET3 ethernet driver)。當(dāng)在為大量用戶編譯內(nèi)核時,最好將這個啟用為一個模塊,因為一些人可能并不希望在VMware上使用以太網(wǎng)。
Hyper-V虛擬網(wǎng)絡(luò)需要這個驅(qū)動(Microsoft Hyper-V virtual network driver)。你可能想知道這個是否與微軟的Hyper-V相同?是的,Linux支持Hyper-V。
數(shù)字電話服務(wù)ISDN由這個驅(qū)動提供(ISDN support)。ISDN代表"Integrated Services Digital Network"(綜合業(yè)務(wù)數(shù)字網(wǎng))。在法國,ISDN被稱為RNIS,代表" Réseau numérique à intégration de services"。有一臺ISDN適配器,計算機可以開始并接收語音呼叫。這允許計算機用來做因待機或者其他一些電話服務(wù)設(shè)備。ISDN同樣也可以攜帶視頻信息。
現(xiàn)在,我們可以進(jìn)入輸入設(shè)備了(Input device support)。這些是給計算機信息的設(shè)備。鼠標(biāo)和鍵盤是最常被使用和了解的輸入設(shè)備。掃描儀是另外一種輸入設(shè)備的例子。
首先是一個支持不同觸覺反饋設(shè)備的驅(qū)動(Support for memoryless force-feedback devices)。比如,許多游戲控制器的震動就是一種觸覺反饋。
一些輸入設(shè)備會檢測硬件的狀態(tài)(Polled input device skeleton)。這類行為需要這個驅(qū)動。
使用稀疏鍵盤映射的輸入設(shè)備需要這個驅(qū)動(Sparse keymap support library)。鍵盤映射是鍵盤的布局信息。
下面,是另外一種鍵盤映射(Matrix keymap support library)。
注意:當(dāng)為廣泛的用戶組編譯內(nèi)核時,包含大多數(shù)或者全部輸入設(shè)備作為模塊,因為通常不知道用戶可能插到計算機上的設(shè)備類型。
有趣的事實:Vanilla內(nèi)核就是Linux自己的原始內(nèi)核,是未改變的狀態(tài)。
"Mouse interface"對于鼠標(biāo)創(chuàng)建了兩個不同的設(shè)備文件。這兩個設(shè)備文件是/dev/input/mouseX 和 /dev/input/mice。
下一個驅(qū)動創(chuàng)建了一個psaux設(shè)備文件并且它是/dev/input/mice的別名 (Provide legacy /dev/psaux device)。psaux設(shè)備文件是/dev/psaux。
如果系統(tǒng)有一塊數(shù)位板,那么需要設(shè)置水平分辨率(Horizontal screen resolution)和垂直分辨率(Vertical screen resolution)。數(shù)位板是一種支持允許用戶繪畫的觸控筆的觸摸屏。另外的觸摸屏無法支持如此復(fù)雜的輸入。
下一個驅(qū)動支持操縱桿和游戲手柄(Joystick interface)。這個驅(qū)動會創(chuàng)建/dev/input/jsX文件。
"Event interface"驅(qū)動允許輸入設(shè)備通過dev/input/eventX訪問。
"Event debugging"驅(qū)動會輸出所有的輸入事件到系統(tǒng)日志中。除了要調(diào)試系統(tǒng)否則不要以任何理由啟用它。顯然地,這么做為了性能原因,但是我這么建議禁用的主要原因是安全目的。所有的按鍵都會被明文記錄下來包括密碼。
下面,列出了不同的鍵盤(Keyboards)配置驅(qū)動,接下來是鼠標(biāo)(Mice)驅(qū)動和操縱桿和游戲手柄(joystick/gamepad)驅(qū)動。
在這之后,列出了不同特定的平板硬件/供貨商的不同驅(qū)動(Tablets)。在這之后是觸摸屏的驅(qū)動列表。
最后一組輸入設(shè)備驅(qū)動是對于特定硬件和供貨商的雜項驅(qū)動列表(Miscellaneous devices)。
這個系列的下一篇文章會討論輸入端口。不要忘記閱讀這個系列的其他文章和這個網(wǎng)站。謝謝!
?
輸入/輸出端口:
歡迎來到下一篇Linux內(nèi)核文章。在本篇里,我們將討論輸入/輸出端口。
首先,PS/2鼠標(biāo)和AT鍵盤需要"i8042 PC Keyboard controller"驅(qū)動。在USB之前,鼠標(biāo)和鍵盤使用圓形端口的PS/2端口。AT鍵盤是一種84鍵使用AT端口的IBM鍵盤。AT端口有5針而PS/2口有六針。
使用COM口(有時也稱RS232串口)的輸入設(shè)備需要這個驅(qū)動(Serial port line discipline)。COM是一種串口,意味著每次傳輸一位。
TravelMate筆記本需要這個特殊的驅(qū)動來使用連接到QuickPort的鼠標(biāo)(ct82c710 Aux port controller)。
對于PS/2 mice、AT keyboards 和 XT keyboards的并口適配器使用這個驅(qū)動(Parallel port keyboard adapter)。
"PS/2 driver library"用于PS/2鼠標(biāo)和AT鍵盤。
可以啟用"Raw access to serio ports"來允許設(shè)備文件作為字符文件來使用。
下面,下面有一個用于"Altera UP PS/2 controller"的驅(qū)動。
PS/2復(fù)用同樣需要一個驅(qū)動(TQC PS/2 multiplexer)。
ARC FPGA平臺對于PS/2控制器需要特殊的驅(qū)動(ARC PS/2 support)。
注意:我想要說清楚這篇文章中討論的PS/2控制器并不是Sony的PlayStation上的游戲控制器。這篇文章討論的是6針鼠標(biāo)/鍵盤端口。控制器是一種有PS/2端口的卡。
"Gameport support"提供對15針gameport的支持。gameport是一種曾經(jīng)被很多游戲設(shè)備使用直到USB端口的發(fā)明的15針口。
下一個驅(qū)動是在ISA或者PnP總線卡上的gameport驅(qū)動(Classic ISA and PnP gameport support)。ISA代表"Industry Standard Architecture"(工業(yè)標(biāo)準(zhǔn)架構(gòu))并且它是一種在PCI之前的并行總線標(biāo)準(zhǔn)。PnP代表"Plug-and-Play"(即插即用)并且他是一種在ISA之前的通用標(biāo)準(zhǔn)。
"PDPI Lightning 4 gamecard support"提供了一個有g(shù)ameport的游戲卡的專有驅(qū)動。
SoundBlaster Audigy卡是一種專有g(shù)ameport卡(SB Live and Audigy gameport support)。
ForteMedia FM801 PCI音頻控制器在卡上有一個音頻控制器(ForteMedia FM801 gameport support)。這個驅(qū)動只支持gameport。
下一步,我們可以進(jìn)入"Character devices"。字符設(shè)備以字符傳輸數(shù)據(jù)。
首先,可以啟用/禁用TTY(Enable TTY)。移除TTY會節(jié)約很多空間,但是許多終端和這類設(shè)備需要TTY。除非你知道你在做什么,否則不要禁用TTY。
致我的粉絲:如果你知道一個禁用TTY的理由,你能在下面發(fā)表你的答案并與我們共享么?謝謝!
下一步,可以啟用/禁用"Virtual terminals"(虛擬終端)。再說一次,這個可以節(jié)約很多空間,但是虛擬終端很重要。
下一個驅(qū)動支持字體映射和Unicode轉(zhuǎn)換(Enable character translations in console)。這用于轉(zhuǎn)換ASCII到Unicode。
虛擬終端可以用這個驅(qū)動作為系統(tǒng)控制臺(Support for console on virtual terminal)。系統(tǒng)控制臺管理著登陸和內(nèi)核信息/警告。
虛擬終端必須通過控制臺驅(qū)動與物理終端交互(Support for binding and unbinding console drivers)。在虛擬終端可用之前,控制臺驅(qū)動必須被加載。當(dāng)虛擬終端關(guān)閉后,控制臺終端必須被卸載。
下一個驅(qū)動提供了對Unix98 PTY驅(qū)動的支持(Unix98 PTY support)。這是Unix98偽終端。
有趣的事實:Linux內(nèi)核允許某個文件系統(tǒng)一次在很多地方被多次掛載。
接下來,可以支持"Support multiple instances of devpts"(譯注:允許多個"devpts"文件系統(tǒng)實例)。devpts文件系統(tǒng)用于偽終端的slave。
過時的PTY同樣可以啟用(Legacy (BSD) PTY support)。
可以設(shè)置最大數(shù)量的使用中的過時PTS(Maximum number of legacy PTY in use)。
下面的驅(qū)動可以用于提供對其他驅(qū)動不支持的串口的支持 (Non-standard serial port support)。
下面有一些用于特定板和卡的驅(qū)動。
這個驅(qū)動支持GSM MUX協(xié)議(GSM多路復(fù)用)(GSM MUX line discipline support (EXPERIMENTAL))。
下一個驅(qū)動啟用kmem設(shè)備文件(/dev/kmem virtual device support)。kmem通常用于內(nèi)核調(diào)試。kmem可以用于讀取某些內(nèi)核變量和狀態(tài)。
Stallion卡上面有許多串口Stallion multiport serial support)。這個驅(qū)動特別支持這塊卡。
下面,我們可以進(jìn)入到串行設(shè)備驅(qū)動了。如前所述,串行設(shè)備每次傳輸一位。
第一個驅(qū)動用于標(biāo)準(zhǔn)串口支持(8250/16550 and compatible serial support)。
在這個驅(qū)動下,即插即用(Plug-and-Play)同樣存在于串口中(8250/16550 PNP device support)。
下面的驅(qū)動允許串口用于連接一個終端后作為控制臺(Console on 8250/16550 and compatible serial port)。
一些UART控制器支持直接內(nèi)存訪問(DMA support for 16550 compatible UART controllers)。UART代表的是"Universal Asynchronous Receiver/Transmitter"(通用異步收發(fā))。UART控制器轉(zhuǎn)換串行到并行,反之亦然。
下一步,這個驅(qū)動提供了標(biāo)準(zhǔn)PCI串行設(shè)備支持(8250/16550 PCI device support)。
16位PCMCIA串行設(shè)備由這個驅(qū)動支持(8250/16550 PCMCIA device support)。記住,PCMCIA是一種通常使用于筆記本的PC卡。
可以設(shè)置最大數(shù)量支持的串口(Maximum number of 8250/16550 serial ports),接著是在啟動中注冊的最大數(shù)量(Number of 8250/16550 serial ports to register at runtime)。
為了擴展像HUB6的串行能力,啟用這個驅(qū)動(Extended 8250/16550 serial driver options)。
一個特殊驅(qū)動用于支持多于4種的過時串口(Support more than 4 legacy serial ports)。
當(dāng)啟用這個驅(qū)動后,可以共享串口中斷(Support for sharing serial interrupts)。
使用這個驅(qū)動可以自動檢測串口中斷請求(Autodetect IRQ on standard ports)。
RSA串口同樣也在Linux內(nèi)核中支持(Support RSA serial ports)。RSA代表的是"Remote Supervisor Adapter"(遠(yuǎn)程管理適配器)。RSA是一種IBM特定的硬件。
下面,有不同的供應(yīng)商/設(shè)備特定驅(qū)動。
下面有一個使用printk輸出用戶信息的TTY驅(qū)動(TTY driver to output user messages via printk)。printk(print kernel)是一種通常打印啟動信息的特殊軟件。任何由printk顯示的字符串通常在/var/log/messages文件里。shell命令"dmesg"顯示所有被printk使用的字符串。
下面,我們可以啟用/禁用并口打印機的支持(Parallel printer support)。
接下來的驅(qū)動允許打印機作為一個控制臺(Parallel printer support)。這意味著內(nèi)核消息會被逐字地由打印機打印。通常地在這個系列中使用"print"(打印)這個單詞時,意味這將輸出信息到屏幕上。而這次,字面上的意思是將數(shù)據(jù)輸出在紙上。
以下的驅(qū)動使設(shè)備文件在/dev/parport/中(Support for user-space parallel port device drivers)。這使得一些進(jìn)程可以訪問。
再說一次,Linux內(nèi)核有許多特性和驅(qū)動,所以我們還會在下一篇文章中繼續(xù)討論更多的驅(qū)動。謝謝!
致粉絲:我們正在接近配置過程的終點。我有一張你們很多人想知道的內(nèi)核話題列表。這些話題包含了安裝內(nèi)核、管理模塊、加入第三方驅(qū)動、還有許多其他有趣的建議和要求。
你好!這篇文章會覆蓋不同的驅(qū)動。
首先"virtio console"是一種用于hypervisors的虛擬控制臺驅(qū)動。
"IPMI top-level message handler"是用于IPMI系統(tǒng)的消息管理器。IPMI代表的是"Intelligent Platform Management Interface"(智能平臺管理系統(tǒng))。IPMI是一種不需要shell通過網(wǎng)絡(luò)管理系統(tǒng)的接口。
"/dev/nvram support"允許系統(tǒng)讀取和寫入實時時鐘的內(nèi)存。通常上,這個特性用于在掉電時保存數(shù)據(jù)。
下面一個驅(qū)動支持Siemens R3964包驅(qū)動(Siemens R3964 line discipline)。這個是設(shè)備對設(shè)備協(xié)議
現(xiàn)在,我們可以進(jìn)入PCMCIA字符設(shè)備驅(qū)動。然而,大多數(shù)這里的驅(qū)動是供貨商/設(shè)備特定的。
原始塊設(shè)備驅(qū)動允許塊設(shè)備綁定到設(shè)備文件上/dev/raw/rawN(RAW driver (/dev/raw/rawN))。這么做的好處是高效的零拷貝。然而,大多數(shù)軟件更偏好通過/dev/sd** 或者 /dev/hd**訪問存儲設(shè)備。
下面,可以設(shè)置支持的原始設(shè)備的最大數(shù)量。
下面的驅(qū)動可以生成設(shè)備文件/dev/hpet (HPET - High Precision Event Timer)。
注意:你們中很多人可能會想知道為什么要啟用這些設(shè)備文件問題。好的,這些設(shè)備文件充當(dāng)了一個軟件和硬件之間的接口。
通過這個驅(qū)動可以映射HPET驅(qū)動(Allow mmap of HPET)。映射是一個生成設(shè)備和文件在內(nèi)存中的地址列表。文件接著可以通過內(nèi)存地址更快地找到并且接著指揮硬盤從地址中得到數(shù)據(jù)。
"Hangcheck timer"用于檢測系統(tǒng)是否被鎖定。這個定時器監(jiān)視著鎖定進(jìn)程。當(dāng)一個進(jìn)程被凍結(jié)了,定時器就開啟。當(dāng)定時器停止后,如果進(jìn)程還沒有重啟或者關(guān)閉,那么定時器會強迫進(jìn)程關(guān)閉。
引用Linus Torvalds的話:可移植性是對于那些無法寫新程序的人而言的。
使用Trusted Computing Group(可信賴計算組)規(guī)范的TPM安全芯片會需要這個驅(qū)動(TPM Hardware Support)。
現(xiàn)在,我們可以進(jìn)入I2C設(shè)備。I2C代表的是"Inter-Integrated Circuit"(內(nèi)部集成電路)并經(jīng)常被成為"eye two see"。然而,一些人會說"eye squared see"。I2C是一種串行總線標(biāo)準(zhǔn)。
一些舊的軟件將I2C適配器作為類設(shè)備,但是如今的軟件不會這么做(Enable compatibility bits for old user-space)。所以,這個驅(qū)動會提供對舊軟件的向后支持。
接下來,可以生成I2C設(shè)備文件(I2C device interface)。
I2C可以通過這個驅(qū)動提供復(fù)用支持(I2C bus multiplexing support)。
I2C可以通過這個驅(qū)動支持GPIO控制的復(fù)用(GPIO-based I2C multiplexer)。
對于開發(fā)者用這個驅(qū)動可以在I2C和SMBus上執(zhí)行不同的測試(I2C/SMBus Test Stub)。
I2C系統(tǒng)啟用這個特性可以生成調(diào)試信息(I2C Core debugging messages)。
下一個驅(qū)動生成額外的I2C調(diào)試信息(I2C Algorithm debugging messages)。
引用Linus Torvalds的話:Linux中沒有原始設(shè)備的原因似乎我個人任何原始設(shè)備是一個愚蠢的注意。
下面的驅(qū)動會使I2C驅(qū)動生成調(diào)試信息(I2C Bus debugging messages)。
接下來,我們有串行外設(shè)接口(Serial Peripheral Interface)支持(SPI support)。SPi是一種用于SPI總線的同步串行協(xié)議。
在這之后,有一個驅(qū)動用于高速同步串行接口(High speed synchronous Serial Interface support)支持(HSI support)。HSI是一種同步串行協(xié)議。
PPS同樣在Linux內(nèi)核中支持(PPS support)。
"IP-over-InfiniBand"驅(qū)動支持IP包通過InfiniBand(譯注:一種無限帶寬技術(shù))傳輸。
在這之后,有一個調(diào)試驅(qū)動用于IP-over-InfiniBand(IP-over-InfiniBand debugging)。
SCSI的RDMA協(xié)議同樣可以通過InfiniBand傳輸(InfiniBand SCSI RDMA Protocol)。
這里同樣有一種通過InfiniBand傳輸iSCSI協(xié)議的擴展(iSCSI Extensions for RDMA (iSER))。
有時候,錯誤發(fā)生在了整個系統(tǒng)必須知道的核心系統(tǒng)中(EDAC (Error Detection And Correction) reporting)。這個驅(qū)動發(fā)送核心給系統(tǒng)。通常地,這類底層錯誤由處理器中報告并接著由這個驅(qū)動讓其他系統(tǒng)進(jìn)程知道或者處理錯誤。
這個驅(qū)動提供了在老版本中的sysfs中使用的過時EDAC的支持(EDAC legacy sysfs)。
EDAC可以用來設(shè)置發(fā)送調(diào)試信息給Linux的日志系統(tǒng)(Debugging)。
引用Linus Torvalds的話:沒有人可以第一次創(chuàng)造如此好的代碼,除了我。
"Machine Check Exceptions"(機器檢測異常)(MCEs)通過這個驅(qū)動被轉(zhuǎn)化成可讀的信息(Decode MCEs in human-readable form (only on AMD for now))。MCEs是由CPU檢測到的硬件錯誤。MCEs通常觸發(fā)內(nèi)核錯誤。
將MCE解碼成可讀的形式的過程可以被注射用于測試錯誤處理(Simple MCE injection interface over /sysfs)。
下一個驅(qū)動允許錯誤在內(nèi)存中被檢測到并糾正(Main Memory EDAC (Error Detection And Correction) reporting)。
下面,還有很多用于特定設(shè)備組的檢測和糾正錯誤的驅(qū)動。
引用Linus Torvalds的話:理論和實踐有時會沖突。那這個發(fā)生時,理論輸了。每次都是。
現(xiàn)在我們可以進(jìn)入實時時鐘("Real Time Clock")。這通常縮寫為"RTC"。RTC一直跟隨著時間。
下面的設(shè)定允許用戶在Linux系統(tǒng)中使用RTC時間作為"掛鐘"時間(Set system time from RTC on startup and resume)。這個掛鐘是我們在桌面上或者通過"date"命令看到的時間。
另外,掛鐘可以通過NTP服務(wù)器得到時間并與RTC同步(Set the RTC time based on NTP synchronization)。
一些系統(tǒng)有幾個RTC,所以用戶必須設(shè)置哪一個是默認(rèn) (RTC used to set the system time)。最好設(shè)置第一個(/dev/rtc0)為主時鐘。
可以設(shè)置RTC系統(tǒng)的調(diào)試特性(RTC debug support)。
RTC可以使用不同的接口給予操作系統(tǒng)當(dāng)前時間。使用sysfs會需要這個驅(qū)動(/sys/class/rtc/rtcN (sysfs)),而似乎用proc需要這個驅(qū)動 (/proc/driver/rtc (procfs for rtcN))。特殊的RTC字符設(shè)備可以生成并使用 (/dev/rtcN (character devices))。shell命令"hwclock"使用/dev/rtc,所以RTC字符設(shè)備。
下一個驅(qū)動允許在/dev接口上模擬RTC中斷(RTC UIE emulation on dev interface)。這個驅(qū)動讀取時鐘時間并允許新的時間從/dev中檢索。
RTC系統(tǒng)可以通過測試驅(qū)動測試(Test driver/device)。
下面,我們會討論直接內(nèi)存訪問系統(tǒng)。DMA是硬件獨立于處理器的內(nèi)存訪問過程。DMA增加的系統(tǒng)性能因為處理器將做得更少如果硬件自身做了更多的任務(wù)。不然,硬件會等待處理器完成任務(wù)。
這是調(diào)試DMA系統(tǒng)的調(diào)試引擎(DMA Engine debugging)。
接下來,有許多的供貨商/設(shè)備特定驅(qū)動用于DMA支持。
一些DMA通過這個驅(qū)動支持大端讀取和寫入(Use big endian I/O register access)。
大端指的是二進(jìn)制碼的排列。英語國家的數(shù)字系統(tǒng)將數(shù)字的最大端放在左邊。比如,數(shù)字17,最左的數(shù)字是放置十位的地方大于個位。在大端中,每字節(jié)最大的放在左邊。字節(jié)有8位。比如:10110100。每一處都有相應(yīng)的值128、64、32、16、8、4、2、1。所以提到的為被轉(zhuǎn)換成十進(jìn)制180。
DMA系統(tǒng)可以使用網(wǎng)絡(luò)減小CPU使用(Network: TCP receive copy offload)。
"DMA Test Client"用于測試DMA系統(tǒng)。
下一篇文章中,我們會討論顯示/視頻驅(qū)動。謝謝!
參考:Linus Torvalds的引用來自于:
你好!準(zhǔn)備好閱讀下一篇文章了么?在本篇中,我們將會討論輔助顯示。輔助顯示是一些小的LCD屏幕;大多數(shù)小于或等于128x64。接著,我們會討論用戶空間IO驅(qū)動,一些虛擬驅(qū)動,Hyper-V,開發(fā)中驅(qū)動,IOMMU,和其他一些內(nèi)核特性。
第一個配置輔助顯示的驅(qū)動是"KS0108 LCD Controller"。KS0108 LCD Controller是由三星制造的圖形控制器。
下面可以設(shè)置LCD并口地址(Parallel port where the LCD is connected)。第一個并口地址是0x378,下一個是0x278,第三個是0x3BC。這些不是地址唯一的選擇。大多數(shù)人不需要改變這個。shell命令"cat /proc/ioports"會列出可用的并口和地址。
內(nèi)核可以設(shè)置KS0108 LCD 控制器的寫入延時到并口(Delay between each control writing (microseconds))。默認(rèn)的值大部分是正確的,因此一般不需要更改。
"CFAG12864B LCD"屏幕是一塊128x64,雙色LCD屏幕。這塊屏幕依賴于KS0108 LCD控制器。
可以改變這些LCD屏幕的刷新率(Refresh rate (hertz))。通常上,更高的刷新率會導(dǎo)致更多的CPU活動。這意味著一個緩慢的系統(tǒng)需要一個更低的刷新率。
設(shè)置完輔助顯示后,接著設(shè)置"Userspace I/O drivers"。用戶空間系統(tǒng)允許用戶的應(yīng)用和進(jìn)程訪問內(nèi)核中斷和內(nèi)存地址。啟用了它,一些驅(qū)動可以放在用戶空間。
"generic Hilscher CIF Card driver"用于Profibus卡和Hilscher CIF卡。
"Userspace I/O platform driver"在用戶空間創(chuàng)建通用驅(qū)動系統(tǒng)。
下一個驅(qū)動和上面的相同,但是增加IRQ處理(Userspace I/O platform driver with generic IRQ handling)。
下面的驅(qū)動又像前面的一個,但是增加了動態(tài)內(nèi)存支持(Userspace platform driver with generic irq and dynamic memory)。
下面,是一些供應(yīng)商/設(shè)備特性的驅(qū)動。
接著是一些通用PCI/PCIe卡驅(qū)動(Generic driver for PCI 2.3 and PCI Express cards)。
下面的驅(qū)動用于"VFIO support for PCI devices"。VFIO代表Virtual Function Input/Output(虛擬功能輸入/輸出)。VFIO允許設(shè)備直接以安全方式訪問用戶空間。
"VFIO PCI support for VGA devices"允許VGA通過VFIO被PCI支持。
接下來是virtio驅(qū)動。virtio是一個IO虛擬化平臺。這個虛擬軟件用于操作系統(tǒng)虛擬化。這在Linux系統(tǒng)上的虛擬機上運行一個操作系統(tǒng)時需要。
我們第一個可以配置的virtio驅(qū)動是"PCI driver for virtio devices"。這允許虛擬訪問PCI
"Virtio balloon driver"允許虛擬系統(tǒng)的內(nèi)存根據(jù)需要擴展或減少。通常上,沒有人希望在需要內(nèi)存的時候,虛擬系統(tǒng)保留它可能不會使用的內(nèi)存。
下面的驅(qū)動允許內(nèi)存映射到virtio設(shè)備(Platform bus driver for memory mapped virtio devices)。
如果Linux內(nèi)核需要運行在微軟的Hyper-V系統(tǒng)上,那么啟用這個驅(qū)動(Microsoft Hyper-V client drivers)。這允許Linux能夠成為Hyper的訪客/客戶端系統(tǒng)。
下面,我們會配置處于開發(fā)階段的驅(qū)動。這些驅(qū)動正在開發(fā)當(dāng)中,可能會變化很快,或者還沒到Linux內(nèi)核的質(zhì)量標(biāo)準(zhǔn)。這個分類中的驅(qū)動只有Android驅(qū)動(在內(nèi)核3.9.4中)。是的,Andorid使用Linux內(nèi)核,這使得Andorid變成了一個Linux系統(tǒng)。然而,這仍然有爭議。如果內(nèi)核是用于Android,那么最好啟用所有的驅(qū)動。
"Android Binder IPC Driver"提供了對于Binder的支持,它允許Andorid系統(tǒng)進(jìn)程間相互通信。
下面可以啟用ashmen驅(qū)動(Enable the Anonymous Shared Memory Subsystem)。Ashmem代表"Anonymous SHared MEMory"(虛擬內(nèi)存共享)或者"Android SHared MEMory"(Andorid共享內(nèi)存)。
"Android log driver"提供了完整的Andorid日志系統(tǒng)。
"Timed output class driver" 和 "Android timed gpio driver"允許Andorid系統(tǒng)操作GIP引腳并在超時后取消操作。
"Android Low Memory Killer"會在需要更多內(nèi)存關(guān)閉進(jìn)程。這個特性會殺死不再使用或活躍的任務(wù)。
"Android alarm driver"使內(nèi)核在設(shè)定的間隔后喚醒。
在配置完開發(fā)階段的驅(qū)動后,下面的驅(qū)動用于X86平臺。這些驅(qū)動是 X86 (32-bit)的供應(yīng)商/設(shè)備特定硬件。
下一個驅(qū)動是"Mailbox Hardware Support"。這個框架控制郵箱隊列和硬件郵箱系統(tǒng)的中斷信號。
"IOMMU Hardware Support"鏈接內(nèi)存到能夠使用DMA的設(shè)備上。IOMMU增強了DMA。IOMMU映射地址并阻止故障設(shè)備訪問內(nèi)存。IOMMU同樣允許硬件訪問比沒有IOMMU更多內(nèi)存。
"AMD IOMMU support"提供了對AMD設(shè)備更好的IOMMU支持。
對于AMD IOMMU支持存在調(diào)試特性(Export AMD IOMMU statistics to debugfs)。
存在一個對于AMD硬件的更新版本的IOMMU驅(qū)動(AMD IOMMU Version 2 driver)。
Linux內(nèi)核同樣支持對Intel設(shè)備的IOMMU驅(qū)動支持(Support for Intel IOMMU using DMA Remapping Devices)。
一些設(shè)備可能會接受不同的電壓和時鐘頻率。這個驅(qū)動允許操作系統(tǒng)控制設(shè)備的電壓輸出和時鐘頻率(Generic Dynamic Voltage and Frequency Scaling (DVFS) support)。啟用了這個驅(qū)動,可以啟用下面的那些對于電源/性能管理特性。
"Simple Ondemand"就像上面的,但是只會基于設(shè)備活動改變時鐘頻率。通常上,更多的活動意味著設(shè)備需要更快的時鐘速率來使用更多的資源需求。
"Performance"允許系統(tǒng)設(shè)置最高支持的時鐘速度以滿足最好的性能。這會增加電源消耗。
"Powersave"會設(shè)置時鐘頻率到最低以節(jié)約電源。
"Userspace"允許用戶空間設(shè)置時鐘頻率。
"External Connector Class (extcon) support"使得用戶空間可以監(jiān)視外部連接器如USB和AC口。這允許應(yīng)用了解是否插入了線纜。用戶幾乎都希望啟用這個。如果任何人由于某個合理的理由禁用了它,請告訴我們?yōu)槭裁催@么做。
"GPIO extcon support"驅(qū)動就像上面的驅(qū)動,但是它只對于GPIO管腳。
接下來是不同的供貨商/設(shè)備特定的內(nèi)存控制器(Memory Controller drivers)。內(nèi)存芯片控制器可能是獨立的設(shè)備或者內(nèi)置在內(nèi)存芯片上。這些控制器管理這輸入和輸出的數(shù)據(jù)流。
"Industrial I/O support"驅(qū)動提供了標(biāo)準(zhǔn)的傳感器接口而不管總線的類型(像PCIe、spi、GPIO等等)。IIO是"Industrial I/O support"(工業(yè)IO)的通用縮寫。
Linux內(nèi)核提供了大量不同的加速器、放大器模數(shù)轉(zhuǎn)換器、慣性測量單元、光敏傳感器、磁場傳感器和其他許多傳感器和轉(zhuǎn)換器的支持。
"Intel Non-Transparent Bridge support"驅(qū)動支持連接到系統(tǒng)的PCIe硬件橋。所有到映射內(nèi)存的寫入會鏡像到兩個系統(tǒng)中。
"VME bridge support"和上面的相同除了橋使用的是VME,這是一個不同的總線標(biāo)準(zhǔn)。
"Pulse-Width Modulation (PWM) Support"通過調(diào)節(jié)從這些設(shè)備收到的平均功率調(diào)節(jié)背光燈和風(fēng)扇速度。
"IndustryPack bus support"提供了對IndustryPack總線標(biāo)準(zhǔn)的支持。
?
來源:https://blog.csdn.net/ffmxnjm/article/details/72933915
總結(jié)
以上是生活随笔為你收集整理的Linux配置并编译内核的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: RS485通讯与RS232通讯的区别
- 下一篇: Linux内核专题 - 介绍