Devyn的Linux內(nèi)核專題:配置PCI特性和網(wǎng)絡
來享受這個Linux內(nèi)核系列的下一篇文章。我們將繼續(xù)配置PCI特性,接著是計算機中最重要的特性-網(wǎng)絡。
進程地址空間標識符(Process Address Space Identifiers (PASIDs))允許PCI設備同時訪問多個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)在運行時加入一件設備的能力并且不需要重啟。這個驅(qū)動是為了PCI主板能擁有處理輸入/輸出APIC熱插拔的能力。
在這之后,下面的問題詢問的是啟用"ISA-style DMA support"。在前文中提到過,DMA是直接內(nèi)存訪問,它是一種設備無需借助CPU直接訪問內(nèi)存的能力。ISA代表的是工業(yè)標準架構(Industry Standard Architecture),它是一種像PCI的總線標準。這個特性允許在ISA主板上支持DMA。
現(xiàn)在,我們可以移步到"PC Card (PCMCIA/CardBus) support"。PCMCIA代表的是個人計算機存儲卡國際協(xié)會(Personal Computer Memory Card International Association)。PC卡、PCMCIA卡和Cardbus卡都是卡片形狀的筆記本外設。
下一個PCMCIA選項處理"16-bit PCMCIA support"。一些舊的計算機使用16位PCMCIA卡。
為了從用戶空間加載卡式信息結構(Card Information Structure (CIS))以使PCMCIA卡正常工作,這個特性應該啟用(Load CIS updates from userspace)。
CardBus是16位PCMCIA的更新32位版本。這個驅(qū)動提供對這類設備的支持(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"可以在下一個選項中啟用/關閉。
下一個提供的設備驅(qū)動是"Cirrus PD6729 compatible bridge support"。這在一些老的筆記本上需要。
下一個PCMCIA橋驅(qū)動是Itel的"i82092 compatible bridge support"。這也在一些老的筆記本上出現(xiàn)。這是另外一種橋驅(qū)動。
在這之后,以下的選項詢問關于是否啟用"Support for PCI Hotplug"。
下一步,ACPI PCI熱插拔可以啟用(ACPI PCI Hotplug driver)。這個驅(qū)動允許擁有ACPI的PCI設備熱插拔(這個特性之前已經(jīng)討論過)。
對于IBM系統(tǒng),為了ACPI熱插拔下一個驅(qū)動應該啟用(ACPI PCI Hotplug driver IBM extensions)。這就像上面的特性但特定與IBM設備。
對于帶有支持CompactPCI熱插拔支持的CompactPCI卡的系統(tǒng),啟用"CompactPCI Hotplug driver"。
下面,我們有一個選項對于另一種CompactPCI系統(tǒng)卡(Ziatech ZT5550 CompactPCI Hotplug)。
使用#ENUM熱插拔信號通過標準IO口作為系統(tǒng)注冊位的CompactPCI卡需要這個驅(qū)動(Generic port I/O CompactPCI Hotplug)。
使用SHPC PCI熱插拔控制器的主板需要下一個驅(qū)動(SHPC PCI Hotplug driver)。SHPC代表的是標準熱插拔控制器(Standard Hot-Plug Controller)。這對于PCI主板是一個通用熱插拔系統(tǒng)。
RapidIO互聯(lián)設備也需要一個特殊的驅(qū)動(RapidIO support)。RapidIO芯片和主板快于PCI和PCIe。
"IDT Tsi721 PCI Express SRIO Controller"是一個特殊類型的RapidIO控制器。
下一個選項允許開發(fā)者輸入在主機完成枚舉前系統(tǒng)發(fā)現(xiàn)節(jié)點應該等待多久時間(以秒計)。這通常選擇默認值
下一個特性會允許RapidIO系統(tǒng)接受除了維護信號外其他流量(Enable RapidIO Input/Output Ports)。
為了使用DMA引擎框架從RIO設備上發(fā)送或接收RapidIO數(shù)據(jù),啟用這個驅(qū)動(DMA Engine support for RapidIO)。RIO設備是可重配的輸入/輸出設備。RapidIO使用NREAD和NWRITE請求來在本地和遠程內(nèi)存間傳輸數(shù)據(jù),因此驅(qū)動需要允許RapidIO使用DMA訪問RIO設備。DMA控制器需要在內(nèi)存中完成這個特性。
如果允許,RapidIO可以提供調(diào)試信息(RapidIO subsystem debug messages)。如前面所說,調(diào)試特性可以禁用,除非你或者其他人使用的內(nèi)核需要調(diào)試特性。
下一個驅(qū)動提供"IDT Tsi57x SRIO switches support"。這是一組串口RapidIO開關,下面的四個選項是對于不同串口RapisIO開關驅(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í)行那些需要解釋器的腳本和二進制文件,這個特性必須啟用(Kernel support for MISC binaries)。這些可執(zhí)行文件的類型通常稱為包裝器驅(qū)動的二進制格式。例如包括Python2/3、 .NET、Java、DOS執(zhí)行程序等等。
當這個選項啟用時(Enable core dump support),內(nèi)核可以生成崩潰文件。這是一個調(diào)試特性。除非這個內(nèi)核是用來調(diào)試(無論內(nèi)核本身還是軟件),不然這個并不必要。
64位處理器可以執(zhí)行32位程序如果啟用了"IA32 Emulation"。最好啟用這個特性除非開發(fā)者確定內(nèi)核永遠不會運行32位代碼。
老式的a.out二進制文件也被支持(IA32 a.out support)。就像它稱呼的那樣,"匯編輸出"(Assembler Output),這是一種已編譯代碼的文件格式。
下一個設置允許32位處理器訪問完整的64位寄存器文件和寬數(shù)據(jù)路徑(x32 ABI for 64-bit mode)。然而,仍舊使用32位指針。這些32位進程將比同樣的為64位編譯的進程使用內(nèi)存更少,因為他們使用32位指針。
下面,我們將講網(wǎng)絡支持。
我們第一個網(wǎng)絡設定是啟用一般的網(wǎng)絡(Networking Support)。很少有開發(fā)者會禁用這個特性。如果他們這么做了,內(nèi)核會變得又小又快,但是它將無法使用Wifi、藍牙、以太網(wǎng)或者任何由網(wǎng)絡設備或協(xié)議處理的連接。一些在獨立系統(tǒng)上程序也需要這個特性,即使硬件上不存在網(wǎng)絡設備。舉例來說,X11依賴于網(wǎng)絡特性。如果你能提供一個替代方案在屏幕上顯示圖形,你才能在內(nèi)核中禁用網(wǎng)絡特性。
"Packet socket"允許在沒有中介物的情況下,進程與網(wǎng)絡設備間進行通信。這個增強了性能。
ss工具需要啟用這個特性用來數(shù)據(jù)包監(jiān)控(Packet: sockets monitoring interface)。包監(jiān)控意味著監(jiān)視相關本地設備的網(wǎng)絡流量。
"Unix domain sockets" (Unix域套接字)是用來建立和訪問網(wǎng)絡連接。X窗口系統(tǒng)需要這個特性;這是一個極好的例子來說明為什么即使系統(tǒng)中不會使用網(wǎng)絡但是仍然在內(nèi)核中啟用網(wǎng)絡特性。Unix域套接字是運行在同一臺機器上的進程間的網(wǎng)絡協(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)絡數(shù)據(jù)包第二個政策(稱作sub-policy)(Transformation sub policy support)。
IPsec安全聯(lián)合定位器可以當這個特性啟用時(Transformation migrate database)動態(tài)更新。使用移動IPv6的設備需要這個特性。當計算機與路由器或者任何形式的網(wǎng)絡設備設置了一個網(wǎng)絡連接,安全協(xié)議會確保兩者不會意外地連接到網(wǎng)絡上的其他設備上。IP數(shù)據(jù)包被設定發(fā)送到一個特定的設備上。然而,移動設備會使用不同的網(wǎng)絡,比如說提供了4G信號,也需要能夠使用相同的連接到新的網(wǎng)絡點上。即使可能是相同的4G供應商,不同的設備會提供一個4G連接到它的物理位置。當設備處在新的區(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)絡中最著名的需要啟用的特性-"TCP/IP networking"。大多數(shù)網(wǎng)絡(包括因特網(wǎng))依賴于這個協(xié)議。甚至X窗口系統(tǒng)也使用TCP/IP。這個特性甚至允許用戶ping它們自己(命令:ping 127.0.0.1)。要使用因特網(wǎng)或者X11,這個必須啟用。
為了尋找網(wǎng)絡中數(shù)個計算機,"IP: multicasting"必須啟用。多播是一種給多臺計算機但不是全部計算機發(fā)送消息的能力。廣播會給網(wǎng)絡中的所有計算機發(fā)送信號。
如果這是一個路由器Linux系統(tǒng)的內(nèi)核,那就啟用這個選項(IP: advanced router)。
如果下面的特性啟用了,那么IP地址會在啟動時自動配置(IP: kernel level autoconfiguration)。當用戶希望不用配置就能連接到一個網(wǎng)絡時是很有用的。
啟用了DHCP協(xié)議支持,那么Linux系統(tǒng)可以通過網(wǎng)絡像NFS掛載它的根文件系統(tǒng)并且使用DHCP發(fā)現(xiàn)IP地址(IP: DHCP support)。這允許Linux系統(tǒng)通過網(wǎng)絡擁有它的遠程根文件系統(tǒng)而不必用戶在每次系統(tǒng)啟動時手動管理進程。
下面的選項和上面的類似除了使用的是BOOTP而不是DHCP(IP: BOOTP support。BOOTP是自舉協(xié)議;這個協(xié)議使用UDP而不是TCP并且只能使用IPv4網(wǎng)絡
RARP是一個被BOOTP和DHCP替代了的舊協(xié)議,但是它仍可以加到內(nèi)核中(IP: RARP support)。
網(wǎng)絡協(xié)議可以在另一個概念中使用,稱作"隧道"。這個特性可以用在Linux內(nèi)核中(IP: tunneling)。安全shell協(xié)議(The secure shell protocol (SSH))就是隧道協(xié)議的一個例子。SSH需要這個特性。
下面的驅(qū)動可以多路復用通用路由封裝包(GRE (Generic Routing Encapsulation))(IP: GRE demultiplexer)。多路復用是一個使單個信號進入不同部分的過程(這不會復制消息,只是分解它)。GRE是一種隧道協(xié)議。
下面的特性允許GRE通道在IP連接中形成(IP: GRE tunnels over IP)。這允許GRE隧道在IP網(wǎng)絡中形成。
當啟用這個特性(IP: broadcast GRE over IP),廣播可以通過IP使用GRE。
在Linux系統(tǒng)的路由器內(nèi),為了讓IP包發(fā)往多個地址,需要啟用這個(IP: multicast routing)。
via: http://www.linux.org/threads/the-linux-kernel-configuring-the-kernel-part-7.4490/