天天看點

Linux核心配置和編譯過程詳解

  一、引言:

本文檔的内容大部份内容都是從網上收集而來,然後配合一些新的截圖(核心版本:V2.4.19)。在每一配置項後會有一個選擇指南的部份,用來指導大家怎麼樣根據自己的情況來做相應的選擇;還有在每一個大項和文檔的最後會有一個經驗談,它是一些高手們在應對問題和處理特有硬體時的一些經驗(這個還得靠各位)。文檔最後會發到網上,到時會根據網友們的回複随時進行更新。

我們的目的是讓我們有一個全面的、簡單明了核心編譯幫手。

#make mrproper -----删除不必要的檔案和目錄.

#make config(基于文本的最為傳統的配置界面,不推薦使用)

#make menuconfig(基于文本選單的配置界面,字元終端下推薦使用)

#make xconfig(基于圖形視窗模式的配置界面,Xwindow下推薦使用)

#make oldconfig(如果隻想在原來核心配置的基礎上修改一些小地方,會省去不少麻煩)

目的都是生成一個.config檔案,這三個指令中,make xconfig的界面最為友好,如果你可以使用Xwindow,你就用這個好了,這個比較友善,也好設定。如果你不能使用Xwindow,那麼就使用make menuconfig好了。界面雖然比上面一個差點,總比make config的要好多了。 選擇相應的配置時,有三種選擇,它們分别代表的含義如下:

Y--将該功能編譯進核心 N--不将該功能編譯進核心 M--将該功能編譯成可以在需要時動态插入到核心中的子產品

[注:]

請大家能夠發表自己的經驗和想法,使本文能夠不斷充實!但是最好不要發一些從網cp過來的沒有經過自己實踐的文章!

二、配置核心

有了要編譯配置的核心,先來介紹怎麼樣配置核心。具體的步驟分為一下幾步:

1.在開始配置核心之前,首先需要通過下面的指令清除所有的臨時檔案、中間件和配置檔案。對于一個剛從網上下載下傳的核心來說,它肯定是幹淨的,這麼做隻會多此一舉。但是這是一個良好習慣,而且不會有壞結果。

#make mrproper

2. 然後要了解自己系統的硬體配置情況,比如CPU的類型、主辦晶片、顯示卡和聲霸卡的型号等。

3. 配置核心選項,用到的指令是:

#make <config_opt>

用到的配置工具有:

◆ config 基于互動式的文本配置界面。每個問題以線形格式出現,并被一個一個地回答,而且一旦作出了回答就不能再修改了。

◆ oldconfig 同config相似,但是使用原有的配置檔案,而且隻會提問有關新核心特性的問題,對于核心更新很友善。

◆ menuconfig 一個文本模式、選單驅動的配置界面。

◆ xconfig 基于Tcl/Tk的X圖形配置界面。

現在開始配置核心,使用的工具為menuconfig。在指令行模式下執行下面的指令:

#make menuconfig

在閃過幾行字之後就出現核心配置界面。

使用方向鍵在各選項間移動;使用“Enter”鍵進入下一層選單;每個選項上的高亮字母是鍵盤快捷方式,使用它可以快速地到達想要設定的選單項。在括号中按“y”将這個項目編譯進核心中,按“m”編譯為子產品,按“n”為不選擇(按空格鍵也可在編譯進核心、編譯為子產品和不編譯三者間進行切換),按“h”将顯示這個選項的幫助資訊,按“Esc”鍵将傳回到上層選單。

    注意,如果“make menuconfig”指令失敗,很可能是ncurses庫沒有安裝。

1.Code maturity level options:代碼成熟等級。

1.1.prompt for development and/or incomplete code/drivers.

如果要試驗現在仍處于實驗階段的功能,比如khttpd、IPv6等,就必須把該項選擇為Y了;否則可以把它選擇為N。在linux的世界裡,每天都有許多人為它發展支援的driver和加強它的核心。但是有些driver還沒進入穩定的階段。但其作者很歡迎其他人去測試這些driver并提出一些 bugs。這個問題是說,有一些drive還在做測試中,問您是否要選擇這些drive或支援的程式碼。如果鍵入Y,往後将會出現一些還在測試中的東西給您做選擇。(像Java的程式碼和PCI bridge),否則就鍵入N。

經驗談:

2.Loadable module support:對子產品的支援。

預備知識:

子產品就像你特意插入核心中的某些東西,如果辦公室有一個小網絡并且有時想用一下(但并不經常),也許你想把網卡編譯成一個子產品。使用這個子產品,機器必運作和存取/libs下的子產品,意思是驅動程式(IDE,SCSI等但必須是NFS支援的網卡),檔案系統(通常是ext2但也可以是nfs)和核心類型(最好是elf)必須編譯在核心并且不能是子產品,子產品隻有核心引導時才起作用,驅動程式(來網絡)的存取,和檔案系統安裝。這些檔案必須編譯在核心内否則将能安裝啟動分區。如果安裝啟動分區和網絡,你需要網絡系統檔案,和己經編譯的網卡。為什麼要使用子產品? 子產品化使核心變的更簡捷,它減少核心釋放大量的受保護的空間。子產品的安裝和解除安裝使用的空間是可重複配置設定利用的。如果你打開機器有90%以上的時間用到一個子產品,編譯它。運用這類子產品是浪費記憶體的,原因是一旦你編譯了子產品它們同樣将占用大量的記憶體,核心需要一些代碼來挂上子產品。記住,核心在保護空間運作,但子產品并不是。這麼說,并不經常使用我的裝置,把它編譯成隻支援ext2,ide和elf。而一直使用的網卡,把其它的編譯成子產品:如a.out, java, floppy, iso9960, msdos, minix, vfat,smb,nfs,smcultra(ethernetcard),serial,printer,sound,ppp,等等。它們許多隻是在這或那用上那麼幾分鐘。嚴格的說,這樣做會使核心增大許多而降低它的執行速度。這時我們就可以把這些可能會用的驅動程式編譯成一個—個的子產品,在需要用的時候才用insmod這個指令加入核心,不用的時候也能rmmod把它從核心移除,或是用lsmod察看目前所載入的子產品。

2.1.Enable loadable module support.

除非準備把所有需要的内容都編譯到核心裡面,否則該項應該是必選的。

2.2.Set version information on all module symbols.

通常,我們更新核心版本之後,子產品耍重新的編譯。這個選項使您不必更新編譯子產品而能使用以前的子產品。可以不選它。但如果您選y,則按照它的說明,您必須有genksyms這個程式(可用whereis指令檢視有無此程式)。

2.3.Kernel module loader.

讓核心在啟動時有自己裝入必需子產品的能力,建議選上。注意:在開機就會 mount 上來的 partition 的 FS 、device driver 記得要 compiler 進 kernel,不能把它弄成 modules。請不要誇張到為了完全模組化而忘了把ext2fs和IDE dirver compiler 進 kernel 裡。

經驗談:

a.可加載子產品是指核心代碼(kernel code)的一些片斷,比如驅動程式,當編譯核心的時候它們也被單獨編譯。是以,這些代碼不是核心的一部分,但是當你需要它的時候,它可以被加載并使用。通常的建議是如果可能,将核心代碼編譯成可加載子產品,因為這樣可以使核心更小,而且更穩定。 警告!千萬不要将檔案系統(File System)部分的代碼編譯為可加載子產品,如果你犯了這個錯誤,将檔案系統(File System)部分的代碼編譯為可加載子產品,結果将是核心無法讀取它自己的檔案系統。然後核心無法加載它自己的配置檔案——一些很明顯是在正常啟動linux時所必需的東西。我很少使用可加載子產品:我喜歡我的核心能夠直接和硬體對話,但這隻是我自己的偏好。

3.Processor type and features:處理器類型和特色。

3.1.Processor family.

它會對每種CPU做最佳化,讓它跑得快又好。一般來說,沒有選擇正确的CPU并不會有重大的影響(特别是選擇386 ,這樣編譯出來的核心也許會比較小但它的速度可能就會變慢了)。是以,最好要知道您的CPU是哪一種。不過,如果您的gCC編譯器是2.7.0版以前的。那麼隻能選擇386或是486。通常"/dev/cpu"選項更進階,多數使用者并不需要選擇它。

3.2.High Memory Support.

隻有當你的計算機有超過1GB記憶體(不是磁盤空間)時才是必須的。 多數計算機的記憶體從64到512MB(并且擁有8到60GB硬碟空間),是以"High Memory Support"通常并不使用。

3.3.Math emulation.

這項詢問是否需L1nux核心模拟數學浮點運算器。如果有486Dx、AMD以及Pentium機器的話,這個選項就不必選了,因為它們都有内建的浮點運算器。協處理器是在386時代的寵兒,現在早已不用了。不過,對于有内建浮點運算器的人來說,選了這個選項并不會是以讓内建的浮點運算器失效。但它會增大核心約45KB。

3.4.MTTR (memory type range register)support.

這項允許在PCI或者AGP總線衆進行更快速的通訊。 由于現在所有系統都将它們的顯示卡接在PCI或AGP總線上,你通常需要選擇"MTRR":無論如何,打開這個選項通常都是安全的——即使你的機器沒有使用PCI或AGP總線的顯示卡

3.5.Symmetric multi-processing support.

選項保證核心能夠以最佳方式加載多處理器。除非有多個CPU,否則就不用選了。

3.6.Mutiquad NUMA system.

通常也需要多處理器,但它通常是關閉的。

經驗談:

4.General setup:正常核心選項。

4.1. Networking support.

通常每個人都會選擇"Networking support",因為你通常需要它,比如Internel。 linux有很重的Internet偏向,而且它在沒有聯網的情況下無法充分發揮優勢。另外,許多其他的操作也網絡支援——即使它們看上去跟網絡沒多大關系。核心在沒有網絡支援選項的情況下甚至無法編譯。簡而言之:一定要打開"Networking support"選項。

4.2. PCI support.

現在的所有系統都使用PCI總線,是以你應該選擇相關選項。

4.3. PCI access mode.

PCI存取模式。可供選擇的有BIOS、Direct和Any,選Any吧。

4.4. Support for hot-pluggabel devices.

熱插拔裝置支援。支援的不是太好,可不選。

4.5. PCMCIA/CardBus support------>PCMCIA/CardBus support.

有PCMCIA就必選了。

4.6. System V IPC.

如果将來想編譯dosemu(DOS模拟器),則這個選項一定要選,它是一個讓各個程式(process)同步且能彼此交換資料的函數庫和一些系統的調用,沒它,很多的程式将會無法執行。

4.7. BSD Process Accounting.

4.8. Sysctl support.

除非你的記憶體少的可憐,否則你應該啟動這個功能,啟用該選項後核心會大8K,但能讓你直接改變核心的參數而不必重新開機。以上三項是有關程序處理/IPC調用的,主要就是System V和BSD兩種風格。如果你不是使用BSD,就按照預設吧。

4.9. Kernel core (/proc/kcore/) format.

現在的linux發行版以ELF格式作為它們的"核心核心格式"。

4.10. Kernel support for A.OUT binaries.

a. out的執行檔案是比較古老的可執行碼,用在比較早期的UNIX系統上。linux最初也是使用這種碼來執行程式,一直到ELF格式的可執行碼出來後,有愈來俞多的程式碼随着ELF格式的優點而變成了ELF的可執碼。将來勢必完全取代a.out格式的可執行碼。但目前由于沿有許多的程式還沒有取代過來,是以隻好選擇Y,等将來有一天,全部的程式都變成了ELF的天下時,那時再disable掉。

4.11. Power Management support.

電源管理支援。

4.12. Advanced Power Management BIOS support.

進階電源管理BIOS支援。這通常是用在筆記本電腦上的東西,如果您有APM的BIOS,支援省電的裝置的(有電池的那種),那麼您可以選上這項,一般人這一項是選n,以避免一些可能會發生的問題。後有8個選項。ATX主機闆需要這兩個選項來自動關閉計算機(turn off the computer,包括關閉電源)。

經驗談:

5.Memory Technology Devices (MTD):配置儲存設備。

5.1. Memory Technology Devices (MTD) support.

你需要這個選項來使linux可以讀取閃存卡(Flash Card)之類的存儲器。 閃存卡通常用于數位相機。通過這個選項,Linux可以讀取閃存卡(從特殊的裝置中,比如讀卡機),并且将圖檔儲存為.jpg格式。除非你确定你需要它,否則不必打開它:如果你發現自己需要,你可以在以後加上。

6.Parallel port support:配置并口。

6.1. Parallel port support.

如果不打算使用,就别選了。

7.Plug and Play configuration:即插即用支援。

7.1. Plug and Playsupport.

幾乎所有人都有即插即用裝置,是以需要這個選項的支援。 打開這個選項使核心能夠自動配置即插即用裝置并且使它們在系統中能夠使用。 有時需要在BIOS中打開"Plug & Play OS",否則linux(當然Windows也一樣)無法配置即插即用裝置。

7.2. ISA Plug & Play support.

選項需要以即插即用模式運作的ISA卡(ISA Card)。 例如AWE64聲霸卡。ISA總線(ISA bus)從來都沒有即插即用标準,這增加了配置這些闆卡的難度。在2.4.x核心之前的早些時候,linux使用者在啟動時必須呼叫(call)"isapnp"程式(isapnptools包,使用rpm qil isapnptools檢視包含的所有檔案)。 "isapnp"讀取"/etc/isapnp.conf"檔案。這個檔案包含不同闆卡使用的所有端口,位址和中斷。如果/etc/isapnp.conf中的資訊不正确,或者"isapnp"沒有被激活,即插即用裝置就無法使用,甚至網卡、modem、聲霸卡也無法工作。 打開"ISA Plug & Play support"選項來代替以前的工序:不再需要/etc/isapnp.conf檔案。檢測和配置工作都自動進行。 在SuSE 7.1中,在編譯2.4.x核心後我必須重命名/etc/isapnp.conf為"/etc/isapnp.conf.old"之類的名稱。因為核心和 "isapnp"使用相同的資源,造成很慘的後果。 問題在于SuSE 7.1(以及更老的版本)在啟動時自動激活"isapnp",即使核心已經包括了對即插即用的必要支援。這隻是對于老Linux系統而言,新的系統預設不使用"isapnp"。

8.Block devices:塊裝置支援。

8.1. Normal PC floppy disk support.

普通PC軟碟支援。每個人都要使用軟碟(floppy),是以這個選項要打開(或者,象我這樣,作為一個可加載子產品)。倘若 /etc/modules.conf或者/etc/conf.modules檔案在你的linux發行版中已經被适當配置了,當需要通路軟碟的時候,核心會自動加載必須的子產品。其他的選項在你使用并口連結IDE儲存設備的時候是必需的,但是它們通常是關閉的。"loopback device support"選項可能例外。在Linux下,刻錄(burn)CD光牒之前你通常需要制作一個CD光牒鏡像,在檢視鏡像檔案的内容時需要"loopback device"。 我選擇了這個選項作為可加載子產品。

8.2. XT hard disk support.

支援XT的古董硬碟,這是IBM電腦時代的東西,如果您還有這種很舊很舊的硬碟。那麼,您可以把它編進核心或是編成一個子產品。大部分的人這個選項都是選擇N的。

8.3. Loopback device support.

這個選項的意思是說,可以将一個檔案挂成一個檔案系統。如果要燒CD光牒片的,那麼您很有可能在把一個檔案燒進去之前,看看這個檔案是否符合IS09660的檔案系統的内容,是否符合您的需求。而且,可以對這個檔案系統加以保護。不過,如果您想做到這點的話,您必須有最新的mount程式,版本是在2.5X版以上的。而且如果您希望對這個檔案系統加上保護,則您必須有des.1.tar.gz 這個程式。注意:此處與網絡無關。

9.Multiple devices driver support:多裝置驅動支援。

9.1. Multiple devices driver support.

普通linux使用者通常不需要RAID(廉價備援磁盤陣列)或者LVM支援。 "RAID"的意思是系統使用兩塊或兩塊以上硬碟存儲并行資訊。當一塊磁盤出現問題的時候另一塊可以繼續工作,系統不停頓。 LVM讓使用增加一塊硬碟來擴充一個分區成為可能。。在實際應用中,這意味着你不必重新分區或将一個小的分區複制到一個大分區中。 路徑名也不會改變。 這可能會十分友善,但是普通使用者并不需要它。

10.Networking options:網絡選項。

10.1. Packet Socket.

選擇"Y",你需要這個選項來與網卡進行通信而不需要在核心中實作網絡協定。 在這裡我可以簡捷一些:一般情況下,打開這個選項。 大多數選項是關閉的,除非你需要特殊的支援。

10.2. TCP/IP networking.

選擇"Y",核心将支援TCP/IP協定。這個選項無論如何請您選擇Y,即使沒有網絡卡,或是沒有連到網絡上的裝置,在linux上仍有所謂的 lookback裝置而且有些程式需要這個選項。在說明檔案中提到,如果您沒有打開這個設定,則X-window system可能會有問題(回為它也需要 TCP/IP)。

10.3. IP:multicasting.

所謂的 multicasting是群組廣播,它是用在視訊會議上的協定,如果想送一個網絡封包(網絡的資料),同樣的一份資料将送往十部機器上。您可以連續送十次給十台機器(點對點的傳送),也可以同時送一次,然後讓十台機器同時接收到。當然後者比前者好,由于視訊會議要求是最好每個人都能同時收到同一份資訊,是以如果您有類似的需要,這個選項就要打開。同時您還必須去找相關的軟體。

經驗談:

a. 我選擇了"Network packet filtering (replaces ipchains)",因為我使用了SuSE的标準防火牆(Standard Firewall)。 防火牆可以保護你的機器不受來自外部Internet的攻擊——至少當你正确配置了防火牆的時候是如此。核心級的防火牆保護顯然是十分優越的。為了使防火牆能夠正常工作,SuSE linux需要對ipchains的相容支援(Backwards Support)。 是以,我為我的SuSE Linux打開了這個選項。 如果你也在其他發行版中使用了防火牆,請參考它們的手冊。你需要"Unix domain sockets"來進行網絡連結,但也可以使用其他的東西: XWindow要自動使用Unix sockets,是以如果沒有打開這個選項,XWindow将無法啟動。 通常這個選項是打開的。 "TCP/IP networking"選項包括了Internet和内部網絡所需要的協定。 通常你會希望激活TCP/IP支援。如果你不确定是否應該打開一個選項,參考一下幫助文檔。 如果你還是不知道是否應該打開它,一般來說,就把它打開,然後通過試用來決定是否保留。将某些特定的選項編譯為子產品也是一個很好的辦法。

11.Telephony Support:電話支援。

11.1.linux Telephony Support.

這個選項隻有當你在計算機中使用電話卡的時候才有用,比如在Internet上打電話。 大多數普通使用者沒有電話卡,是以不需要這個選項。

12.ATA/IDE/MFM/RLL support:配置對ATA,IDE,MFM和RLL的支援。

12.1. ATA/IDE/MFM/RLL support.

幾乎每個人都需要這些協定,除非你的機器隻有SCSI硬碟而沒有其他任何類型的硬碟。 是以,大多數使用者都應該把它打開。 點選它下面的那一欄将會出現一個有更詳細配置選項的菜單。仔細填寫它們:它們極為重要!

12.2.Enhanced IDE/MFM/RLL disk/cdrom/tape/floppy support.

選項是每個使用IDE/ATAPI界面的人都需要的。 包括硬碟,錄音帶機,ZIP盤,光驅(CDROM)和刻錄機(CD-R(W))。 基本上現在的所有計算機(譯者注:這裡指的是PC)都使用IDE/ATAPI界面,是以這個選項必須打開。

12.3. Include IDE/ATA-2 DISK support.

選項在支援硬碟的時候需要。 是以這個選項也必須打開,除非你的機器是一個純粹的SCSI系統。

其它的就使用預設的選項吧,如果你使用了比較特殊的裝置,比如PCMCIA等,就到裡面自己找相應的選項吧。

經驗談:

a. 如果你有ATAPI CDROM的話,應該打開"include IDE/ATAPI CDROM support"選項。 ATAPI的CD-R(W)需要仿真為SCSI的才能被通路。SCSI仿真可以用來通路CDROM和CD-R(W)。如果你使用仿真SCSI的方式來通路CDROM,你将會遇到問題,比如當你挂載(mount)CD的時候出現錯誤資訊(Error Message),或者使用CDROM播放CD唱片(Audio CD) 最好的辦法是象圖這樣,将"include IDE/ATAPI CDROM support"和"SCSI emulation support"選項都打開。需要SCSI仿真的裝置通常是CD-R(W),可以在/etc/lilo.conf中加入"append="hdd=ide-scsi":"行進行定義,這将在"配置lilo"中進行讨論。 因為我有一個使用ATAPI界面的内置ZIP驅動器,是以我把"include IDE/ATAPI FLOPPY support"選項打開。 如果你有軟碟類的驅動器(譯者注:包括ZIP盤、LS-120等大容軟驅,但不包括MO磁CD光牒)。大部分主機闆使用"PCI IDE"(譯者注:就是指通過占用PCI總線帶寬進行通信的IDE接口)對硬碟、CDROM和軟驅進行通路,是以這個選項必須打開。同樣的有兩種開啟DMA的可能性。 DMA使你的硬體直接通路記憶體,而不需要處理器的幹預。 是以,正如你所希望的,IDE磁盤的通路速度會加快。 "sharing PCI IDE interrupts support"是關閉的,因為你通常不需要它。的确,某些IDE控制器允許和其他裝置共享中斷,比如網卡。不幸的是,共享IDE中斷會使磁盤性能下降,是以通常你不需要共享中斷,除非這是解決硬體問題的唯一辦法。

我的主機闆有一顆Pentium II CPU,而且使用的是Intel的晶片組,是以我希望能夠對該晶片組提供特殊支援。 當你選擇你自己的核心選項時,你應該看看圖沒有顯示的其他晶片組。

13.SCSI support:SCSI裝置的支援。

13.1. SCSI support.

如果你有一塊SCSI卡,你當然需要打開相關選項。這張截圖隻顯示了當你為你的CD-R(W)選擇"SCSI emulation support"

13.2. SCSI disk support.

指硬碟而言,如果有SCSI硬碟,那麼就要選這個選項。

13.3. SCSI tape support.

指錄音帶機而言,如果您有SCSI的錄音帶機,那麼就要選這個選項。

13.4. SCSI CDROM support.

指CDROM,如果您有SCSI光驅,這一項一定要選。

13.5. SCSI generic support.

指其他有關SCSI的東西,也許您有一台SCSI的掃描器或是燒錄機,或是其他有關SCSI的配備,您就要選這一項。而且,除此之外,您還必須準備關于這些配備的軟體。

13.6. Probe a11 LUNs on each SCSI device.

通常這個選項大部分的人都不會選。我們舉個例子來說,如果您的SCSI光驅是那種多片裝的,就是一台光驅,但可以一次放好幾片CD光牒片的那種。這種我們叫做Lun。I2O Device Support:配置I2O裝置支援。

13.7. Verbose SCSI error reporting(kernel size+=12K).

如果認為您的SCSI硬體配備有些問題,想了解一下它出現的錯誤資訊。那麼您可以把這個選項選y,linux核心會告訴您有關于您的SCSI配備的問題(如果有的話)。不過,它會增加核心約 12KB左右。

13.8. SCSI low—level drivers.

下面總共有接近30張的SCSI卡,您可以依需求做選擇SCSI卡牌子。

14.I2O Device Support:I20裝置支援。

14.1. I2O Device Support.

如果你有I2O界面,你必須選擇這個選項。大多數人沒有,如果你也沒有的話,可以直接将它關閉。

15.Network Device Support:網絡裝置支援。

15.1. Network Device Support.

網絡裝置支援。上面選好協定了,現在該選裝置了,可想而知,内容肯定多得很。還好還好,裡面大概分類了,有ARCnet裝置、Ethernet(10 or 100 Mbit)、Ethernet(1000Mbit)、Wireless LAN(non-hamradio)、Token Ring device、Wan interfaces、PCMCIA network device support幾大類。我用的是10/100M的以太網,看來隻需要選則這個了。還是10/100M的以太網裝置熟悉,内容雖然多,一眼就可以看到我所用的RealTeck RTL-8139 PCI Fast Ethernet Adapter support,為了免得麻煩,編譯到核心裡面好了,不選M了,選Y。耐心點,一般說來你都能找到自己用的網卡。如果沒有,你隻好自己到廠商那裡去要驅動了。

15.2. Dummy net driver support.

如果有SLIP或PPP的傳輸協定,那麼要把這一項打開。因為一來它不會讓您的linux核心增大。二來,對某些應用程式來說,它可以讓我們模拟出來的TCP/IP環境更像TCP/IP環境。如果您沒有SLIP或PPP 協定,就不用打開了。#EQL(serial line load balancing) support------如果有兩個MODEM,兩條電話線而且用SLIP或PPP協定,可以用這個Driver以便讓您的MODEM有兩倍的速度。當然,在網絡的另一端也要有同樣的裝置。

15.3. PPP(point-to-point)support.

點對點協定,近年來,PPP協定已經慢慢的取代SLIP的規定了,原因是PPP協定可以擷取相同的IP位址,而SLIP則一直在改變IP位址,在許多的方面,PPP都勝過SLIP協定。

15.4. SLIP(serial line) support.

這是MODEM族常用的一種通訊協定,必須通過一台Server(叫ISP)擷取一個IP位址,然後利用這個IP位址,可以模拟以太網絡,使用有關TCP/IP的程式。

15.5.1. Ethernet(10 or 100Mbit).

如果您使用網絡卡,那麼這個選項一定要選y,否則以下對網絡卡的選擇将不會出現。或是您有網絡卡,這時您同樣的也要選y。之後,下面會列出許多網絡卡讓您選擇。像我們平常用的都是NE2000相容卡。

15.5.2. EISA, VLB, PCI and on board controllers.

選擇網絡卡,包括直接附在主機闆上的那種。如果選擇y,則底下會列出其他的網絡卡讓您做選擇,這些卡對于一般人來說很少會去用到。是以大部分的人這項是選N的。

15.5.3. Pocket and portable adaptors.

通常用在可攜式的電腦上,這類型的網絡卡(口袋型的),由于體積很小在安裝和取下方面很友善,是以筆記本相關電腦上便常常采用這種網絡卡。

15.5.4. Token Ring driver support.

Token Ring是 IBM電腦上的網絡。它叫令牌環網絡,和以太網絡是很類似的東西。如果您希望使用的Token Ring網絡卡以便連接配接到這種網絡,那麼選Y,一般人都選N。

15.5.5. ARCnet support.

這也是一種網絡卡,通常一般人用不到,是以選n。如果您有這樣的網絡卡,請看Documentation/networking/arcnet.txt的說明。

經驗談:這一般是新手難辦的一個地方。

a. 我從來都沒有在沒有網卡支援的情況下将linux核心編譯成功過。 是以,你應該打開這個選項。 你還應該打開虛拟驅動(Dummy Driver),作為核心的一部分或者一個可加載子產品。 當沒有實體網卡的時候,Linux需要一塊虛拟網卡(Dummy Network)。即使已經有了實體網卡,Linux仍然經常使用虛拟網卡。 在圖所示的菜單中,你可以選擇網絡類型和網卡。注意,如果你想要通過modem來通路Internet的話,你需要進行更多的設定: 你必須打開"PPP support for async serial ports"(用于COM端口)或者"PPP support for sync tty ports"(用于通過諸如SyncLink adapter進行的高速連接配接)選項以提供PPP支援。 如果你沒有打開它們,核心将會告訴你PPP子產品(PPP Module)不存在——即使你已經編譯了,錯誤資訊(Error Message)對于查找真正問題的所在幾乎沒有作用。你可以将它們都選上,這樣可以避免一些問題:如果核心需要它們,就會使用它們,如果不需要,就不用。

我的以太網卡是一塊使用 3c509/3c529晶片的3COM百兆網卡。因為我并不需要與網絡進行實體連接配接(我有網卡,但是我并不通過modem來通路網絡),是以我将這個趨同編譯成一個可加載子產品,以便萬一要需要網卡的時候可以使用。 你當然需要選擇與你機器的情況相符的網絡類型和網卡。另外,你必須使用諸如SuSE linux下的"yast2"之類的配置程式配置網絡連結。

16.Amateur Radio support:配置業餘廣播支援。

16.1. Amateur Radio support.

如果你希望使用業餘廣播支援,應該打開這個選項,并且打開相應的驅動。 多數人不需要這個選項。

17.IrDA(infrared)support:配置紅外線(無線)通訊支援。

17.1. IrDA(infrared)support.

如果你有無線裝置,比如無線滑鼠或無線鍵盤,你應該打開這個選項。 多數桌面機器不需要這個選項。

18.ISDN subsystem:配置ISDN。

18.1. ISDN support.

如果使用ISDN上網,這個就必不可少了。ISDN(Integrated Services Digital Network),它的中文名稱是綜合數字服務網絡,是一個利用電話線,把聲音,影片資訊以數字的方式傳送的數字網絡,它需要電話交換機裝置有支援 ISDN,這通常需要電信局來做安裝,對于在家工作的人來說,ISDN可能是最舒适最便宜的一種方式,是以有愈來愈多的人使用它。不過,除非是公司,不然一般人很少會使用到ISDN的,是以這部分的選項大都選N。如果您選擇Y,則下面會出現一些有關ISDN的問題。如果需要用到ISDN,可以去看看雜志的介紹。隻要是有關網絡的雜志應該都會有介紹。還需要啟用Support synchronous PPP選項(參考PPP over ISDN)。

19.Old CD-ROM drivers(not SCSI、not IDE):配置老CDROM。

在486和386機器中,CDROM并不是通過硬碟IDE(ATAPI)控制器連接配接的,而是通過聲霸卡或一塊特殊的闆卡。 使用這些老CDROM需要選擇對應的驅動。 這個選項在現在的系統中顯得多餘。

20.Input Core Support:

這個選項提供了2.4.x核心中最重要的特性之一的USB支援。 Input core support是處于核心與一些USB裝置之間的層(Layer)。如果你擁有其中一種USB裝置,你必須打開"input core support"選項。 現在所有的主機闆都有USB接口,是以,原則上你應該打開它。

21.Character devices:字元裝置。

21.1. Virtual terminal.

選擇"y",核心将支援虛拟終端。

21.2. Support for console on virtual terminal.

選擇"y",核心可将一個虛拟終端用作系統控制台。

21.3. Standard/generic (dumb) serial support.

選擇"y",核心将支援串行口。标準序列接口的標明。如果您是用serial的滑鼠(大部分的人都是用這個),或是MODEM的話,則這一項一定要選。大部分的人這一項都選y。

21.4. Support for console on serial port.

選擇"y",核心可将一個串行口用作系統控制台。

21.5. I2C support.

I2C是Philips極力推動的微控制應用中使用的低速串行總線協定。如果你要選擇下面的Video For linux,該項必選。

21.6. Mice.

滑鼠。現在可以支援總線、序列槽、PS/2、C&T 82C710 mouse port、PC110 digitizer pad------根據需要選擇。非串行的滑鼠,支援象PS/2。看一看你滑鼠的鍵。許多雙鍵滑鼠是PS/2,即使它們的連接配接看起來象串行的。

21.6.1. PS/2 mouse (aka "auxiliary device") support.

如果使用者使用的是PS/2滑鼠,則該選項應該選擇"y"。

21.7. Joysticks.

搖桿。即使在linux下把搖桿驅動起來意義也不是太大,遊戲太少了。

21.8. Watchdog Cards.

雖然稱為Cards,這個可以用純軟體來實作,當然也有硬體的。如果你把這個選中,那麼就會在你的/dev下建立一個名為watchdog的檔案,它可以記錄你的系統的運作情況,一直到系統重新啟動的1分鐘左右。有了這個檔案,你就可以恢複系統到重新開機前的狀态了。

經驗談:

a.

最上面的選項("virtual terminal")允許在XWindow中打開xterm和使用字元界面登入。 通常這個選項是打開的。第二個選項("support for console on virtual terminal")告訴核心将諸如子產品錯誤、核心錯誤啟動資訊之類的警告資訊發送到什麼地方,在XWindow下,通常設定一個專門的視窗來接收核心資訊,但是在字元界面下,這些資訊通常被發送到第一個虛拟終端(Virtual Terminal)(CTRL+ALT+F1)。 将這個選項打開。 你還可以選擇将資訊發送到序列槽(Serial Port)裝置,比如列印機或其他的終端(第四個選項)。 如果将資訊發送到列印機,你還必須使用選項三激活序列槽。同樣,如果你使用序列槽滑鼠(Serial Mouse),你也必須激活序列槽。 再說一遍,選項三("standard/generic (8250/16550 and compatible UARTs) serial support")通常是打開的。在我的系統中,我将它編譯為一個可加載子產品。原因是在啟動的時候SuSE老抱怨"serial support"丢失,而如果确定子產品的确存在,将其編譯為可加載子產品是避免上述抱怨的的好辦法。 配置字元型裝置是極為重要的工作。如果你的配置不正确,你有可能得到一個根本不能工作的系統。

如果你想使用遠端使用自己機器上的xterm,比如通過telnet或者ssh,你必須打開"unix98 PTY support"選項。 桌面系統看上去似乎不需要這個選項,但是許多背景程序需要使用這個選項。是以,無論如何,将它打開是個好主意,至少可以避免啟動時顯示錯誤資訊(至少SuSE是這樣)。 所有擁有并口列印機的人當然需要"Parallel printer support"。 不過,并不是所有人都需要并口:USB列印機就不需要。 核心資訊可以通過打開"Support for console on line printer"選項傳送到并口:通常,你并不需要它。 如果你有某些裝置需要占用并口,你需要"support for user-space parallel port device drivers"選項,但是通常不必。 同樣,你通常不需要"I2C support"選項:這是視訊處理卡所需要的,但是如果你發現你需要它,你通常可以在以後加入到核心中——隻要你覺得核心運作得好。如果你使用滑鼠和遊戲杆,你需要打開相應的支援,但是并不是所有滑鼠都使用這個驅動。 現在的CD-R(W)使需要"QIC-02 Tape support"的錄音帶機(Tape Drives)大量閑置,是以這個選項通常是關閉的。

如果你使用序列槽滑鼠,你根本不需要這個選項的任何項目,但是所有其他類型的滑鼠則需要在這裡進行參數配置。 如果你使用最初的總線滑鼠(ORIGINAL Bus Mouse)你需要打開最上面的選項。 現在的許多計算機使用另外一種滑鼠,通常(而且是錯誤的)稱作"busmouse"或者"PS/2滑鼠"。這些滑鼠通常連接配接到/dev/aux,并且插在一個與鍵盤相同的小接口中。 通常,這種滑鼠通過鍵盤來連接配接到計算機。要讓這些滑鼠正常工作,你必須打開如圖29所示的選項,"mouse support (not serial and bus mice)"和"PS/2 mouse (aka "auxiliary device" support)"。這些是上面沒有讨論的核心選項。它們通常是關閉的。 "Ftape, the floppy tape device driver"選項需要對連接配接到軟驅控制器的錄音帶機的支援。甚至即使你有一個那樣的錄音帶機,這個選項都不是必須的,至少不是首要的。 其他選項需要3D顯示卡。 如果你有一塊連接配接到AGP總線(AGP Bus)的顯示卡,你需要打開AGP支援,還需要相應的驅動(在/dev/agpgart(AGP支援))。注意,你可以編譯一個不包含這些選項,但是能夠正常工作的核心,但那沒必要! 如果沒有這些選項,XWindow 4.0或者更高版本(被現在的多數發行版使用)将無法工作。 我的機器有一塊AGP顯示卡,nVidia TNT2,但是核心的相應子產品并不支援這塊顯示卡(nVidia拒絕透露開發驅動所必須的技術細節)。 很不幸,打開AGP支援對于我來說沒有多大意義。雖然有這個問題,我仍然可以在不需要核心驅動的情況下使用XWindow 4.0。 "Direct rendering support"是為XWindow 4.0提供的圖形加速選項。 要想使用這個選項,你的顯示卡必須能夠被支援,而且你必須使用XFree86 4.0及以上版本。 另外,你還需要打開"AGP support"選項。 你可以編譯一個不包含這些選項的核心,它照樣可以正常工作。

22.Multimedia Devices:配置多媒體裝置。

如果你有一塊視訊處理卡或者廣播卡,需要打開這個選項。 跟前面一樣,這個選項不是必需的。

23.File System:配置檔案系統。

23.1. Kernel automounter support.

選擇"y",核心将提供對automounter的支援,使系統在啟動時自動 mount遠端檔案系統。

23.2. DOS FAT fs.

DOS FAT檔案格式的支援,可以支援FAT16、FAT32。這個選項是DOS的檔案系統,如果您沒有選y,則下面的MSDOS,VFAT,umsdos将不會出現。

23.3. MSDOS fs support.

如果你想要在 linux 下使用你硬碟中的 MS-DOS 分割區,或是想将用 MS-DOS 格式化的磁盤挂進來的話,回答y 。

23.4. FAT(Windows95) fs support.

windows95所支援的檔案系統,是我們常說的vfat檔案系統,如果您的系統中裝有windows95,那麼選擇這個檔案系統将對以讓您看到windows95的長檔案名。

23.5. umsdos: UNIX like fs on top of std MSDOS FAT fs.

如果把linux裝進DOS的一個目錄下那麼您則要選擇這一項。不建議這樣做,因為如此一來,就不能看到長檔案名了。而且效率上不是很好。

23.6. Quota support.

Quota可以限制每個使用者可以使用的硬碟空間的上限,在多使用者共同使用一台主機的情況中十分有效。

23.7. /proc file system support.

這是最 slick 的檔案系統之一。它不是你硬碟分割區裡的任何東西,不占用硬碟的空間,而是核心與程式之間的檔案系統介面,它表示的隻是記憶體裡頭的狀況和各個程式執行的情形,它也記錄了您硬體上配備。。許多程式工具(像″ps ″)都會用到它。如果已經将它安裝好了,有空不妨試試看″cat /proc/meminfo ″或者是″ cat /proc/devices ″。有些 shells ,像是 rc ,會用 proc/self/fd(在其它系統上為 /dev/fd )來處理輸出入。幾乎可以确定你在這裡得要回答y ,有許多重要的 linux标準工具是靠它來運作的,否則有些指令會出問題。

23.8. ISO 9660 CD-ROM file system support.

CD光牒使用的就是ISO 9660的檔案格式。

23.9. NTFS file system support.

ntfs是NT使用的檔案格式。

23.10. UFS filesystem support.

這是BSD,SunoS,FreeBSD,NetBSD或Nextstep所使用的檔案系統。如果您在電腦上有這些作業系統的話,那麼可以選這一項。否則一般人都選n。

23.11. Network File Systems:網絡檔案系統。

23.11.1. NFS file system support.

如果你在網絡環境下而且想要分享檔案,回答 y 。如果希望挂上别的電腦的檔案系統,那麼這個選項一定要選進去。它可以讓您利用網絡把别人的硬碟當成自己的來使用(把它變成一個目錄)。對于一般人來說,這個選項是選y。

23.11.2. SMB filesystem support.

這個檔案系統讓您可以挂上windows95或windowsNT的檔案系統,也就是您也可以抓到在windows下,網路上的芳鄰上的電腦。

23.12. Partition Types.

分區類型,該選項支援一些不太常用的分區類型,使用者如果需要,在相應的選項上選擇"y"即可。

23.13. Native Language Support:本地語言支援。

經驗談:

a.

在這裡,你可以指定linux能夠通路的檔案系統。或許你希望制作一個能夠通路Windows分區和Windows軟碟的核心,但是你必須保證核心可以通路Linux自己的ext2檔案系統,或者是更新的 ReiserFS檔案系統。如果你沒有這樣做,Linux會無法啟動,因為核心無法讀取它自己的啟動盤。要想通路DOS/Windows軟碟和分區,你需要打開"DOS FAT support"選項:但是要想通路Windows NT/2000的分區,你需要另外一個隻讀(Read-only)驅動,這将在後面進行選擇。要想讀寫DOS/Windows分區和軟碟,你需要打開"MSDOS fs support"選項(注意,"DOS FAT support"并不提供讀寫功能)。 事實上,每個人都希望這樣,是以通常這個選項是開着的。 "VFAT"需要Windows95/98的長檔案名支援。我的機器是一個可以通過lilo啟動Windows 98和Linux的雙重新開機動系統(dual boot system)。 是以,我需要激活"VFAT"。 你需要加入對ISO 9660的支援來讀取标準格式的CD光牒(CD)。 "Joliet extensions"選項允許在ISO 9660标準中使用長檔案名。多數人都希望能夠讀取現在的CD光牒,是以這些選項通常也是打開的。 圖詳細講述了一些附加選項,其中包括包括Linux的ext2檔案系統。

/proc 目錄中的檔案包含了關于系統狀态的許多重要資訊,比如那些中斷正在使用。 一般來說,你應該把這個選項("/proc file system support")打開。。 "Second extended fs support"選項針對linux的标準檔案系統(Ext2 FS)你必須打開這個選項,并且編譯進核心(不是作為可加載子產品)!圖32和33沒有顯示"ReiserFS"選項,它也可以在這裡打開:Ext2檔案系統的繼承者,ReiserFS能夠更好的對付由于斷電或者類似情況而帶來的對檔案系統的破壞。 目前ReiserFS仍然處于開發階段,是以被标志為試驗代碼。即使是這樣,多數發行版現在都已經支援ReiserFS,但是,雖然ReiserFS被認為會在将來取代Ext2,我現在并不推薦将它作為所有分區的檔案系統。 如果你(在Windows下)使用一個叫"packetCD"的将CD光牒虛拟成低速磁盤的軟體,你需要打開"UDF file system support"選項 這對在與其他PC交換資料時十分友善。在Linux下通過将這些被封包的CD光牒挂載(mount)為UDF檔案系統也可以進行讀取,比如使用指令"mount -t udf /dev/scd0 /cdrom"。 這一部分還包括"Network file systems"、"partition types"和"Native language support"選項。 你不必選擇"Network file systems",除非你的計算機處于一個需要使用"Network file systems"選項的大型網絡之中,"SMB file support"選項也是一樣,對于普通的單機(Standalone Computer)來說,并不需要這些選項。 "Partition Types"選項是一個很進階但對于有效的使用Linux核心來說并不必要的選項。 最好是關閉它。

b.不知道需要那些檔案系統怎末辦?

鍵入″ mount ″它看起來會像這樣:

sunlyy% mount

/dev/hda1 on / type ext2 (defaults)

/dev/hda3 on /usr type ext2 (defaults)

none on /proc type proc (defaults)

/dev/fd0 on /mnt type msdos (defaults)

仔細看看每一行;在" type "後面的那個字就是檔案系統的格式。在這個例子中,我的 / 和 /usr 分割區是 second extended 格式,我使用 /proc ,而且挂有一張以msdos (bleah) 為檔案系統格式的磁片。如果你有使用 /proc ,可以試試″cat /proc/filesystems ″。它會給你一份目前使用的核心所支援的檔案系統清單。

24.Console drivers:配置控制台驅動。

24.1. VGA text console.

選項在VGA模式下啟動字元模式。 多數人都需要它,是以這個玄學愛你跟通常是開着的。 隻有一些386計算機沒有VGA相容顯示卡,選擇這個選項對于現在的多數計算機來說都沒有問題。

24.2. video mode selection support.

使啟動的時候能夠使用字元模式的分辨率。 如果你希望一行能夠有更多的字的話,這通常會給你提供友善,不過通常你不必打開它們。 下面兩個選項是試驗性質的,我建議你關閉它們。

25.Sound sound:聲霸卡驅動。

在這部分,你可以配置聲霸卡。 如果你的linux發行版使用ALSA的聲霸卡驅動(比如SuSE 6.3及以上版本),将"sound card support"作為可加載子產品就足夠了。 ALSA驅動将會在待會兒被編譯并連接配接進來(見"SuSE和ALSA聲霸卡驅動")。如果你的發行版使用的是核心的标準聲霸卡驅動,你必須正确選擇你使用的聲霸卡。 事實上,這裡列出了所有牌子的聲霸卡,是以,理論上選擇聲霸卡不成問題。如果你的聲霸卡在你的發行版的标準核心下工作的很正常,你也可以使用配置程式(比如SuSE的"yast2")來找出你的聲霸卡使用什麼驅動。請放心,聲霸卡并不是十分關鍵的:如果某些地方出錯,你将會失去音效,但是核心仍然可以正常工作。

26.USB support:配置USB支援。

27.kernel hacking:配置"kernel hacking"選項.這很簡單:不要打開!

三、編譯核心

    編譯核心的軟體環境是kbuild系統,它泛指建構一個完整并能夠運作的Linux核心所需要的一切資源。這些資源包括建構程式、腳本、中間件、配置檔案和Makefile。現在就講解核心的編譯過程,具體步驟如下:

    1.“make dep”或“make depend”

   kbuild調用中間件scripts/mkdep來生成描述與相關核心檔案形成依賴關系的.h檔案(絕大多數)清單。這個清單儲存在.depend中。使用者即使不執行這一步,kbuild也會自動執行的。

    2. 建構核心鏡像的指令是:

#make <boot_opt>

其參數如下:

◆ zImage 建構小核心鏡像。

◆ compressed 同zImage。

◆ bzImage 建構大核心鏡像。

◆ zdisk 使用zImage生成一張引導軟碟。

◆ bzdisk 使用bzImage生成一張引導軟碟。

◆ zlilo 使用lilo作為zImage的引導器。

◆ bzlilo 使用lilo作為bzImage的引導器。

根據實際情況選擇核心境象類型,大多數情況下選擇“make bzImage”。

2.6.0核心的kbuild系統與2.4.23比起來有一定的差異,但是絕大多數功能都是相似的。隻是建構核心鏡像的指令參數增加了一下幾項:

◆ fdimage 制作一張1.44M的引導軟碟

◆ fdimage144 同fdimage

◆ fdimage288 制作一張2.88M的引導軟碟

3.通過下面的指令安裝核心:

#make install

如果使用者使用LILO,它會把核心鏡像放到正确的位置并且修改LILO的配置,那麼使用者可以免去手動操作。如果使用别的引導器(例如GRUB),那麼不使用這個指令。因為修改grub.conf需要互動式的手動編輯,自動修改可能會帶來一些不可預計的錯誤,是以編譯完畢後使用者需要進行一些手動操作(見下面第6步)。

在2.6.0中“make install”更加智能,它會依此将arch/i386/boot/bzImage、System.map複制為/boot/vmlinuz-2.6.0,/boot/System.map-2.6.0,并建立vmlinuz-2.6.0的軟連結vmlinuz和System.map-2.6.0的軟連結System.map。kbuild還會自動建立/boot/initrd-2.6.0.img,并且修改grub.conf,以前這一切都要手動才能完成。引用别人的話來說:“2.4.x還是半自動的,而2.6.x是全自動的。”

4. 用下條指令編譯所有被配置為子產品的核心元件:

#make modules

5. 把所有編譯好的核心子產品按照功能拷貝到/lib/modules/2.4.23/目錄下,使用下面指令:

#make modules_install

6. 手動操作将核心境像檔案(/linux/arch/i386/boot/bzImage)拷貝到/boot分區,然後修改LILO或GRUB的相關設定。這裡以grub.conf為例:

default=0

timeout=10

splashimage=(hd0,1)/grub/image/37.xpm.gz

title kernel-2.4.22

               root (hd0,1)

               kernel/vmlinuz-2.4.22 ro root=oot=LABEL=/

        initrd /initrd-2.4.22.img

title kernel-2.4.23

        root (hd0,1)

        kernel /vmlinuz-2.4.23 ro root=/dev/hda1

        initrd /initrd-2.4.23.img

title kernel-2.6.0

        root (hd0,1)

        kernel /vmlinuz-2.6.0 ro root=/dev/hda1

        initrd /initrd-2.6.0.img  

注意,在2.4.23之前的核心,通常制定LABEL參數,但是對于2.4.23和2.6.0核心,這個參數已經被廢棄了,使用root參數指定根檔案系統的位置。

如果重新啟動後出現“kernel panic”錯誤或顯示應該修改“init”資訊,則基本都是以上kernel語句錯誤。

根據發行版的不同,通常GRUB配置檔案會在/etc/grub.conf、/boot/grub/menu.lst或/boot/grub/grub.conf三個地方。

7.最後将在編譯過程中的垃圾檔案進行清理,指令如下:

#make clean  

附:(随時更新)

(1).參考文檔:http://www.linuxfocus.org/ChineseGB/July2002/article252.shtml 

繼續閱讀