Devyn的Linux內(nèi)核專題:配置PCI特性和網(wǎng)絡(luò)
來享受這個Linux內(nèi)核系列的下一篇文章。我們將繼續(xù)配置PCI特性,接著是計算機(jī)中最重要的特性-網(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)在運(yùn)行時加入一件設(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代表的是個人計算機(jī)存儲卡國際協(xié)會(Personal Computer Memory Card International Association)。PC卡、PCMCIA卡和Cardbus卡都是卡片形狀的筆記本外設(shè)。
下一個PCMCIA選項處理"16-bit PCMCIA support"。一些舊的計算機(jī)使用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的主機(jī)橋。
下面的驅(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ā)者輸入在主機(jī)完成枚舉前系統(tǒng)發(fā)現(xiàn)節(jié)點(diǎn)應(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ī)范。強(qiáng)烈建議啟動這個。
為了執(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)不會運(yù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é)議處理的連接。一些在獨(dú)立系統(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)行通信。這個增強(qiáng)了性能。
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域套接字是運(yùn)行在同一臺機(jī)器上的進(jìn)程間的網(wǎng)絡(luò)協(xié)議。
上面的Unix套接字可以被ss工具監(jiān)控,但是下面一個特性必須先啟用(UNIX: socket monitoring interface)。
轉(zhuǎn)換(Transformation (XFRM))用戶配置接口被許多Linux原生工具用到,所以這個特性強(qiáng)烈建議啟用(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)計算機(jī)與路由器或者任何形式的網(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ò)點(diǎn)上。即使可能是相同的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的免費(fèi)協(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ù)個計算機(jī),"IP: multicasting"必須啟用。多播是一種給多臺計算機(jī)但不是全部計算機(jī)發(fā)送消息的能力。廣播會給網(wǎng)絡(luò)中的所有計算機(jī)發(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)。
via: http://www.linux.org/threads/the-linux-kernel-configuring-the-kernel-part-7.4490/



















