戴文的Linux內核專題:11 配置內核(7)
來享受這個Linux內核系列的下一篇文章。我們將繼續配置PCI特性,接著是計算機中最重要的特性-網路。
進程地址空間標識符(Process Address Space Identifiers (PASIDs))允許PCI設備同時訪問多個IO地址空間(PCI PASID support)。這個特性需要一個支持PASIDs支持的IOMMU。
下面我們可以啟用/禁用"PCI IO-APIC hotplug support"。APIC代表高級可編程中斷控制器(Advanced Programmable Interrupt Controllers)。可編程中斷控制器(PIC)收集所有來自不同源發給一個或者多個CPU流水線的中斷。高級PIC與PIC一樣,但是它們有更多的特性像高級中斷管理和更多的優先順序模型。熱插拔是一種在系統在運行時加入一件設備的能力並且不需要重啟。這個驅動是為了PCI主板能擁有處理輸入/輸出APIC熱插拔的能力。
在這之後,下面的問題詢問的是啟用"ISA-style DMA support"。在前文中提到過,DMA是直接內存訪問,它是一種設備無需藉助CPU直接訪問內存的能力。ISA代表的是工業標準架構(Industry Standard Architecture),它是一種像PCI的匯流排標準。這個特性允許在ISA主板上支持DMA。
現在,我們可以移步到"PC Card (PCMCIA/CardBus) support"。PCMCIA代表的是個人計算機存儲卡國際協會(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位版本。這個驅動提供對這類設備的支持(32-bit CardBus support)。為了使用32位PC卡,需要一個兼容Cardbus的主機橋。
下面的驅動提供對上面提到的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"的驅動。
"Special initialization for Toshiba ToPIC bridges"可以在下一個選項中啟用/關閉。
下一個提供的設備驅動是"Cirrus PD6729 compatible bridge support"。這在一些老的筆記本上需要。
下一個PCMCIA橋驅動是Itel的"i82092 compatible bridge support"。這也在一些老的筆記本上出現。這是另外一種橋驅動。
在這之後,以下的選項詢問關於是否啟用"Support for PCI Hotplug"。
下一步,ACPI PCI熱插拔可以啟用(ACPI PCI Hotplug driver)。這個驅動允許擁有ACPI的PCI設備熱插拔(這個特性之前已經討論過)。
對於IBM系統,為了ACPI熱插拔下一個驅動應該啟用(ACPI PCI Hotplug driver IBM extensions)。這就像上面的特性但特定與IBM設備。
對於帶有支持CompactPCI熱插拔支持的CompactPCI卡的系統,啟用"CompactPCI Hotplug driver"。
下面,我們有一個選項對於另一種CompactPCI系統卡(Ziatech ZT5550 CompactPCI Hotplug)。
使用#ENUM熱插拔信號通過標準IO口作為系統註冊位的CompactPCI卡需要這個驅動(Generic port I/O CompactPCI Hotplug)。
使用SHPC PCI熱插拔控制器的主板需要下一個驅動(SHPC PCI Hotplug driver)。SHPC代表的是標準熱插拔控制器(Standard Hot-Plug Controller)。這對於PCI主板是一個通用熱插拔系統。
RapidIO互聯設備也需要一個特殊的驅動(RapidIO support)。RapidIO晶元和主板快於PCI和PCIe。
"IDT Tsi721 PCI Express SRIO Controller"是一個特殊類型的RapidIO控制器。
下一個選項允許開發者輸入在主機完成枚舉前系統發現節點應該等待多久時間(以秒計)。這通常選擇默認值
下一個特性會允許RapidIO系統接受除了維護信號外其他流量(Enable RapidIO Input/Output Ports)。
為了使用DMA引擎框架從RIO設備上發送或接收RapidIO數據,啟用這個驅動(DMA Engine support for RapidIO)。RIO設備是可重配的輸入/輸出設備。RapidIO使用NREAD和NWRITE請求來在本地和遠程內存間傳輸數據,因此驅動需要允許RapidIO使用DMA訪問RIO設備。DMA控制器需要在內存中完成這個特性。
如果允許,RapidIO可以提供調試信息(RapidIO subsystem debug messages)。如前面所說,調試特性可以禁用,除非你或者其他人使用的內核需要調試特性。
下一個驅動提供"IDT Tsi57x SRIO switches support"。這是一組串口RapidIO開關,下面的四個選項是對於不同串口RapisIO開關驅動-"IDT CPS-xx SRIO switches support"、"Tsi568 SRIO switch support"、"IDT CPS Gen.2 SRIO switch support"和"Tsi500 Parallel RapidIO switch support"。
管理這些驅動後,我們可以繼續其他的內核選項。下一個選項提供對ELF的支持(Kernel support for ELF binaries)。可執行與可鏈接格式(Executable and Linkable Format (ELF))支持是一種可執行文件規範。強烈建議啟動這個。
為了執行那些需要解釋器的腳本和二進位文件,這個特性必須啟用(Kernel support for MISC binaries)。這些可執行文件的類型通常稱為包裝器驅動的二進位格式。例如包括Python2/3、 .NET、Java、DOS執行程序等等。
當這個選項啟用時(Enable core dump support),內核可以生成崩潰文件。這是一個調試特性。除非這個內核是用來調試(無論內核本身還是軟體),不然這個並不必要。
64位處理器可以執行32位程序如果啟用了"IA32 Emulation"。最好啟用這個特性除非開發者確定內核永遠不會運行32位代碼。
老式的a.out二進位文件也被支持(IA32 a.out support)。就像它稱呼的那樣,"彙編輸出"(Assembler Output),這是一種已編譯代碼的文件格式。
下一個設置允許32位處理器訪問完整的64位寄存器文件和寬數據路徑(x32 ABI for 64-bit mode)。然而,仍舊使用32位指針。這些32位進程將比同樣的為64位編譯的進程使用內存更少,因為他們使用32位指針
下面,我們將講網路支持。
我們第一個網路設定是啟用一般的網路(Networking Support)。很少有開發者會禁用這個特性。如果他們這麼做了,內核會變得又小又快,但是它將無法使用Wifi、藍牙、乙太網或者任何由網路設備或協議處理的連接。一些在獨立系統上程序也需要這個特性,即使硬體上不存在網路設備。舉例來說,X11依賴於網路特性。如果你能提供一個替代方案在屏幕上顯示圖形,你才能在內核中禁用網路特性。
"Packet socket"允許在沒有中介物的情況下,進程與網路設備間進行通信。這個增強了性能。
ss工具需要啟用這個特性用來數據包監控(Packet: sockets monitoring interface)。包監控意味著監視相關本地設備的網路流量。
"Unix domain sockets" (Unix域套接字)是用來建立和訪問網路連接。X窗口系統需要這個特性;這是一個極好的例子來說明為什麼即使系統中不會使用網路但是仍然在內核中啟用網路特性。Unix域套接字是運行在同一台機器上的進程間的網路協議。
上面的Unix套接字可以被ss工具監控,但是下面一個特性必須先啟用(UNIX: socket monitoring interface)。
轉換(Transformation (XFRM))用戶配置介面被許多Linux原生工具用到,所以這個特性強烈建議啟用(Transformation user configuration)。這個會啟用Ipsec-Internet Protocol SECurity(互聯網協議安全)。Ipsec控制著驗證並且/或者加密IP數據包。
下一個特性允許開發者給予網路數據包第二個政策(稱作sub-policy)(Transformation sub policy support)。
IPsec安全聯合定位器可以當這個特性啟用時(Transformation migrate database)動態更新。使用移動IPv6的設備需要這個特性。當計算機與路由器或者任何形式的網路設備設置了一個網路連接,安全協議會確保兩者不會意外地連接到網路上的其他設備上。IP數據包被設定發送到一個特定的設備上。然而,移動設備會使用不同的網路,比如說提供了4G信號,也需要能夠使用相同的連接到新的網路點上。即使可能是相同的4G供應商,不同的設備會提供一個4G連接到它的物理位置。當設備處在新的區域時,它仍會使用相同的IP地址。
下一個特性是顯示在包處理中的傳輸錯誤統計(Transformation statistics)。這對開發者有用。如果不需要,可以禁用掉它。
"PF_KEY sockets"與KAME套接字兼容且它在使用從KAME移植來的IPsec工具時有用。KAME是IPv4 IPsec、IPv6 IPsec和IPv6的免費協議棧。
這是另外一個需要的移動IPv6特性,它增加了到PF_KEYv2套接字的PF_KEY MIGRATE消息(PF_KEY MIGRATE)。
下面的是最重要的並且是在網路中最著名的需要啟用的特性-"TCP/IP networking"。大多數網路(包括網際網路)依賴於這個協議。甚至X窗口系統也使用TCP/IP。這個特性甚至允許用戶ping它們自己(命令:ping 127.0.0.1)。要使用網際網路或者X11,這個必須啟用。
為了尋找網路中數個計算機,"IP: multicasting"必須啟用。多播是一種給多台計算機但不是全部計算機發送消息的能力。廣播會給網路中的所有計算機發送信號。
如果這是一個路由器Linux系統的內核,那就啟用這個選項(IP: advanced router)。
如果下面的特性啟用了,那麼IP地址會在啟動時自動配置(IP: kernel level autoconfiguration)。當用戶希望不用配置就能連接到一個網路時是很有用的。
啟用了DHCP協議支持,那麼Linux系統可以通過網路像NFS掛載它的根文件系統並且使用DHCP發現IP地址(IP: DHCP support)。這允許Linux系統通過網路擁有它的遠程根文件系統而不必用戶在每次系統啟動時手動管理進程。
下面的選項和上面的類似除了使用的是BOOTP而不是DHCP(IP: BOOTP support。BOOTP是自舉協議;這個協議使用UDP而不是TCP並且只能使用IPv4網路
RARP是一個被BOOTP和DHCP替代了的舊協議,但是它仍可以加到內核中(IP: RARP support)。
網路協議可以在另一個概念中使用,稱作"隧道"。這個特性可以用在Linux內核中(IP: tunneling)。安全shell協議(The secure shell protocol (SSH))就是隧道協議的一個例子。SSH需要這個特性。
下面的驅動可以多路復用通用路由封裝包(GRE (Generic Routing Encapsulation))(IP: GRE demultiplexer)。多路復用是一個使單個信號進入不同部分的過程(這不會複製消息,只是分解它)。GRE是一種隧道協議。
下面的特性允許GRE通道在IP連接中形成(IP: GRE tunnels over IP)。這允許GRE隧道在IP網路中形成。
當啟用這個特性(IP: broadcast GRE over IP),廣播可以通過IP使用GRE。
在Linux系統的路由器內,為了讓IP包發往多個地址,需要啟用這個(IP: multicast routing)。
via: http://www.linux.org/threads/the-linux-kernel-configuring-the-kernel-part-7.4490/
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive