天天看點

戴文的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)。

原文釋出時間為:2013-12-17

本文來自雲栖社群合作夥伴“linux中國”

繼續閱讀