好了,當(dāng)我們已經(jīng)可以基本操控這臺 Linux 機器之後,不妨幫它動點手術(shù),讓它更適合自己的環(huán)境。就像喜歡飆車的朋友,總免不了要對心愛的座架改裝改裝一樣。
要改車,除了要改彈簧、輪胎、煞車、排氣、裙邊、尾翼等,要想車子真正能發(fā)揮性能,當(dāng)然免不了改引擎啦。下面我們進(jìn)行的核心編譯,就是為 Linux 改引擎了。日後,我們還要裝 KDE、GNOME 等等這些 X Window,那是霧燈、座椅、方向盤、表板等這些‘裝飾’改裝了。這些修改,都一一顯示了使用者的個人風(fēng)格,而且也有許多產(chǎn)品可供選擇,就如改車除了用“momo”之外,還可以選擇“無限”。
何謂核心?
前面介紹 shell 的時候,已經(jīng)略略提到過核心這個東西,如果您有看過“電腦基礎(chǔ)”中關(guān)於作業(yè)系統(tǒng)部分的文章,相信不用我再多做解釋了。而且,我也不想再重復(fù)了,假如您不知道核心是做什麼的,可以到“電腦基礎(chǔ)”去看看。
我們通常掛在嘴邊的 Linux ,其靈魂所在,就是它穩(wěn)定而強大的核心。而事實上,Linux 的定義,也只是這個核心,只是大家目前使用的系統(tǒng),是經(jīng)過包裝的,在核心之外,還有各種各樣的套件( 包括不同的 shell )整合一起。如果您有時間,而且愿意上網(wǎng)路去抓,那些套件都可以自己找得到。有些人,幫您把核心編好,套件也設(shè)定好并加以整合,同時將安裝程式寫好,還提供套件管理工具,以及將環(huán)境設(shè)定妥當(dāng),然後燒成 CD,那就是我們常見的 Linux 套裝系統(tǒng)了。我們稱這些 Linux 套裝系統(tǒng)的發(fā)行版本為 Distribution ,例如大家聞名的 RedHat,Slackware,OpenLinux,TurboLinux,SuSE,Debian,等等,都是 distrobutions 。不管它們?nèi)绾伟b,但骨子里頭的東西,也就是使用的核心,都一樣:都是 Linux !
那核心究竟如何定義呢?說簡單些,就是作業(yè)系統(tǒng) (Operating System),它負(fù)責(zé)處理所有系統(tǒng)的東西,包括硬碟的控制、記憶體管理、行程管理、檔案系統(tǒng)、網(wǎng)路功能、等等。我們可以將核心看成是一個架於程式和硬體之間的界面操作系統(tǒng),離開來核心,什麼東西都用不了。而核心的編譯好壞,也會影響到系統(tǒng)的效能,甚至,一些系統(tǒng)功能(如 tcp/ip),就必須要編進(jìn)核心才行。
不過,在動手編譯核心之前,請先問問自己是否真的有這個必要?因為,現(xiàn)在的 Linux Distro,其預(yù)裝的核心力都盡可能的將所有東西以模組的方式進(jìn)行編譯,而這些模組都是可以插入和移除的。這是一個非常靈活的設(shè)計:當(dāng)您需要模組的時候,就載入到核心里面;鳥盡弓藏的時候,可以將模組從核心中移除:呼之則來、揮之則去,怎一個方便了得!要知道,作業(yè)系統(tǒng)的效能好壞、穩(wěn)定與否,其中一個很關(guān)鍵的因素是核心的體積短小精悍。一個臃腫的核心,沒錯,能提供樣樣俱到的功能,但也犧牲掉系統(tǒng)效能和穩(wěn)定性。所以在編譯核心的時候,‘將核心編得盡量的小’,是原則。
就像改車一樣:車身越輕,其可控性越佳,如果您完全是一個 飆車發(fā)燒友,很可能,您的車箱里面,除了改良後的前坐位和防翻側(cè)支架外,其它能拿掉的都拿掉,連儀 都是裸露的。呵~~ 如果您的車子里面還有一大堆 Kitty 、Snoppy,以及上十組喇叭和 CD 音響,那我只能說您是“愛車一族”,而不夠資格稱得上“飆車一族”!如果您能將所有的汽車周邊都設(shè)計成模組,那就不過了:需要泡馬子的時候,將所有耍 cool 玩意都弄上;需要午夜狂奔的時候,全部拿掉,一件不留。
同樣的,如果您真的是一個 的 Linux 發(fā)燒友,假如發(fā)現(xiàn)核心里面竟然載有您不想要的東西,是不能容忍的。不過,對於初入門的朋友,倒不必急於以 Linux 發(fā)燒友來自居,先摸熟核心的功能之後,才真正打造適合自己的精確核心吧。說實在,若不是趕時髦,一般用 Distro 預(yù)裝的核心已經(jīng)非常足夠了。而且預(yù)裝核心都帶有非常充足的模組,隨時應(yīng)付您的需求。除非您千真萬確的知道您要的硬體只有在新核心里面才能支援,或是從 kernel.org 上面得知舊核心有嚴(yán)重的漏洞,否則,不需要如此勞師動眾。
好了,現(xiàn)在,就假設(shè)您有十萬零一個理由需要進(jìn)行核心的編譯,那就不妨一起共赴一趟核心的編譯之旅吧!
選擇版本
不管您的核心是從網(wǎng)路上抓的,還是從 CDROM 里面 copy 出來的,首先要確定的事情是:這個版本是否適合您?
事實上,Linux 核心的版本號碼上面,就隱含著一些重要的資訊。先讓我們看看您目前使用的核心版本吧: # uname -r
2.4.2-2
不知道您對這這些數(shù)字有何認(rèn)識呢?不知道不要緊,讓我告訴您吧:
<主版本>.<次版本>.<修訂版本>-<副版本>
然後,再讓我們看看核心版本的維護流程:
kernel
2.2.0
|
V
2.2.1
:
|
V Kernel
2.2.8 ---> 2.3.0
| |
V V
2.2.9 2.3.1
: :
| |
V V Kernel
2.2.60 ... ---> 2.4.0
|
V Kernel
: ---> 2.5.0
| |
V V
: :
事實上,在眾多的核心版本中,我們需要特別留意的是第二個數(shù)字,也就是次版本的號碼:
如果它是一個奇數(shù),那這個版本是實驗性的版本,或許有些新的設(shè)備和功能能夠在這個種版本找到,但因為尚處於開發(fā)期,不能保證其穩(wěn)定性和安全性。無論如何,不建議在真正用來工作的系統(tǒng)上面安裝實驗性的核心版本。例如:2.1.1、2.3.2、2.3.3、2.5.0 ....
如果它是一個偶數(shù),基本上,該版本已經(jīng)獲得一定程度的測試和肯定,已趨於穩(wěn)定和可靠的狀態(tài)。如果您的系統(tǒng)是真正用來工作的,只建議安裝穩(wěn)定的核心版本。例如:2.2.1、2.2.17、2.4.2、2.4.9 ....
無論如何,當(dāng)新核心推出之後,都不建議立即在真正工作的系統(tǒng)上面應(yīng)用,尤其是在商業(yè)機構(gòu)中,不要拿營運中的系統(tǒng)來做白老鼠。就算您獲得一個被認(rèn)為是穩(wěn)定的版本,也應(yīng)該經(jīng)過反復(fù)的測試,以及隨時留意核心團體所公布的資訊。只有經(jīng)過一段時期和廣泛的應(yīng)用與回報,再加上自己的嚴(yán)格測試之後,才能決定是否要應(yīng)用在工作的環(huán)境中。
事實上,更新核心不是為了干時髦,您必須很清楚您的需要是什麼,假如當(dāng)前核心已經(jīng)能應(yīng)付您的需要,那就繼續(xù)保留它就是了。下面這篇文章,是小州兄的建言,非常有代表性,希望大家能深切領(lǐng)會其中的要旨:
"小州" 撰寫於郵件
news:3iFIVR$84V@bbs.cynix.com.tw...
※ 引述《asho (阿信)》之銘言∶
這樣是否因為沒有化
cpu以及周邊的關(guān)系ㄋ
我想...如果編譯核心的時候
不選duron而選x86系列ㄉ話
效能應(yīng)該會打折扣吧
我會去 compile kernel,一般來說只因為:
1. 你抓取新版 kernel source,當(dāng)然你就需要自己編譯。
2. 雖然目前 kernel 在 linux dist 出廠時都盡可能編入需要的項目
到核心內(nèi),其他項目都選擇編譯成為 module 可以事後掛入。若是
很巧你用的周邊裝置該好很冷僻,預(yù)先編譯好的 kernel 既沒把你
需要的項目編入核心,也沒有編譯成為 module,這時候才需要
自己重新編譯核心。
3. 特殊環(huán)境使用....
重新編譯 kernel 并不會提升效能,recompile kernel 多只是調(diào)選
自己需要的項目編譯核心或者是編譯成為模組來使用。也許在選擇
編譯核心項目時,把 cpu 等級選好一點,那編譯出來的 kernel 是針對
該 cpu 化編譯,但是整體增加效能百分比卻是很低,比方可能增加了
1 ~ 3 %,這對於目前的 cpu 來說,其實也沒有大幅度增快多少。
若是你用 mandrake,他全部 package 都是針對 pentium 的系統(tǒng)
編譯程式,那整體效率上的確才會比一般 linux dist 的 package 都是用
i386 指令集的程式套件快上許多。
至於編譯核心時,留下這臺機器需要的,其他根本不用的不編入。像是
一般 linux dist 可能預(yù)先編譯好的 kernel 是支援 qos 機制,若是
不需要該機制,拿掉也許能夠減少一些編出來的 kernel image 大小,
但是這并不會增加系統(tǒng)效能..... 不過對於以前古老環(huán)境來說,當(dāng)時
記憶體不多,而且那時候模組化還不成熟的年代,讓 kernel image 變小
一點,是可以減少一些記憶體耗費,但是對於目前其實都是不需要去擔(dān)心。
另外,還有一個地方要留意的:就是您目前使用的應(yīng)用程式和新版核心之間的兼容性如何?其中頭痛的地方莫過於 Library 的更新。因為 Library 是核心和程式之間的主要溝通界面,實在有太多的程式需要使用到 Library 提供的函式庫。如果單純?yōu)榱松壞骋粋€套件,而需要更新 Library 版本的話,在很大程度上也會牽涉到核心版本的升級;但其它應(yīng)用程式是否能使用新版的 Library 卻是個非常棘手的難題。調(diào)過來說,如果您單純?yōu)榱四骋缓诵墓δ芏壓诵模鴮?dǎo)致所有 Library 和應(yīng)用程式都必須更新,您必須有足夠的 study 和風(fēng)險評估,否則當(dāng)您發(fā)現(xiàn)牽一發(fā)動全身的時候,再臨急抱佛腳,恐為時已晚了。況且,許多隱藏性的問題,可能要等到積壓了某一時期之後才能浮現(xiàn)出來,這個恐怕更是讓人吃不了兜著走。
無論如何,如果您覺得要升級核心的話,三思而後行!
取得 source
Linux核心的發(fā)展,可以說是相當(dāng)迅速的,其版本更新反而有時候讓人覺得受不了呢。
如果您使用的我們這里用來作范例的 RedHat 7.1 套件,那您應(yīng)該看到和我一模一樣的版本:2.4.2-2。想要獲得的核心版本資訊,不妨到 http://www.kernel.org/ 走走,說不定會滿載(指頻寬)而歸呢!上面有 http 和 ftp 的下載選擇,如果您是用網(wǎng)頁瀏覽器的話,建議用 http 模式;如果您習(xí)慣了 ftp 界面,那就用 ftp 好了。
以小弟經(jīng)驗看,是在系統(tǒng)安裝完畢之後,馬上就進(jìn)行核心編譯工作,免得以後每次裝一些特定功能的時候又要花一大輪時間編譯。當(dāng)然了,我是假設(shè)您如我在“安裝 Linux”文章中所說的:已經(jīng)明確知道自己的系統(tǒng)要用來做什麼的。例如,您打算架設(shè) NAT 和 QoS,并且閱讀過文件,明確知道要將什麼東西編譯進(jìn)核心里面。當(dāng)然,如果您不怕花時間,每裝一次服務(wù)就重新編譯一次核心,也未嘗不可。只是,當(dāng)您真的有過幾次核心編譯經(jīng)驗之後,我相信您巴不得一次過就將核心編好,還是別人已經(jīng)編好,然後送一個現(xiàn)成的過來!呵呵~~ 我常會在編核心的是許這樣的愿望哦~~ ^_^
如果您不是到網(wǎng)路上抓的核心,但當(dāng)初安裝的時候又不是選擇 everything,而且也沒選擇 Development Tools (kernel source) ,那您也可以使用安裝光碟帶來的核心版本 (RH7.1 是在 Disk2 上面)。當(dāng)您將光碟 mount 好之後,然後轉(zhuǎn)到這個目錄去:: cd /mnt/cdrom/RedHat/RMPS
然後將 kernel-source 的 rpm 裝上。別說您不會使用 rpm 哦,果真的話,請往前面翻看看程式管理 (RPM)再回來: rpm -Uvh kernel-source-2.4.2-2.i386.rpm
(如果您看到錯誤信息顯示您還需要其他程式,一一裝好它們的 rpm 後再來安裝 kernel-source 的rpm。)
完成之後,您應(yīng)該會在 /usr/src/ 目錄里面看到一個 linux-2.4.2 的子目錄。這就是剛才的 rpm 程式干的好事了!
如果您的核心是從 internet 上面下載回來的,通常會是‘.tar.gz’或‘.tar.bz2’這樣的壓縮檔。目前,我在 http://www.kernel.org/pub/linux/kernel/v2.4/ 所找到的版本是 2.4.9 ,請先將 linux-2.4.9.tar.bz2 這個檔案抄進(jìn) /usr/src 再進(jìn)行解壓: tar Ixvf linux-2.4.9.tar.bz2
(因為這是 bz2 的壓縮,所以用 I 參數(shù),如果您抓的是 gz 格式,就用 z 參數(shù)吧。)
這樣您就會產(chǎn)生一個‘linux’的目錄!注意哦:這個和您用 rpm 從 RH7.1 Disk2 的 CD 裝的目錄不一樣哦,如果您是用 CD 來裝的話,建議您建立一個 link: ln -sf linux-2.4.2 linux
無論您是用光碟的 rmp,還是下載回來的核心,終我們都應(yīng)該有一個‘/usr/src/linux’的目錄:如果原來已經(jīng)有這樣一個目錄存在,而不是 link 的話,那就先用 mv 將它改一個名字吧。
當(dāng)我們的目錄準(zhǔn)備好之後,就是我們進(jìn)行編譯的步驟了:
進(jìn)行編譯
不過,編譯核心一點都不輕松,而且是相當(dāng)費神費時的事情。幸好現(xiàn)在的機器越來越快,而且核心的編譯程式也好用多了。
首先確定您在安裝 Linux 時候準(zhǔn)備的開機片可以工作,用它boot 一下就知道了,要確定您的 BIOS 里面的開機順序是以“A”(即軟碟)為先。如您當(dāng)初忘記了制作開機片,或磁片壞掉了,先在這里自行做一張: mkbootdisk --device /dev/fd0 `uname -r`
(用 uname -r 命令是找出您當(dāng)前的核心版本,如果您確定是 2.4.2-2 , 那可以直接用版本號碼來代替。)
重新啟動機器,確定是用 bookdisk 開機的。然後用 root 身份進(jìn)行登錄,并取出開機磁碟,貼好標(biāo)簽,然後換一張新的磁碟進(jìn)去。
然後,讓我們轉(zhuǎn)換到 /us/src/linux/Documentation/ 目錄里面,看看里面您認(rèn)為需要了解的資訊,例如 Changes,modules.txt、Configure.help 和其它 .txt 檔。
當(dāng)您閱讀完新 kernel 的重要資訊之後,然後回到 /usr/src/linux 目錄,并輸入: make menuconfig
如果在Xwindows里面,可以輸入:make xconfig。不過,我們這里使用 menuconfig 就好。在這個界面里面,不如先學(xué)習(xí)一下如何操作鍵盤吧:
界面是以層級形式顯示選項,您首先進(jìn)入的頂層選單。然後您可以用‘向上’和‘向下’方向鍵來選擇選項。
如果您發(fā)現(xiàn)所選擇的選項的右邊有一個向右的箭頭,那就表示其下還有更進(jìn)一層的子選單。
在選單的底部,分別有:Select、Exit、和 Help 的按鈕,只要按‘tab’鍵就可以循環(huán)選擇。
當(dāng)您用上下方向鍵選擇好有子選單的選項,以及確定底部按鈕為 Select 之後,敲‘Enter’就可以進(jìn)入下一層選單。
如果按 tab 鍵選擇 Exit 的話,就會退回上一級選單 (也可以按‘Esc’,但要非常小心,因為不留神多按兩下的話可能會退出程式,然後您又不確定是保存還是放棄好!所以不鼓勵用‘Esc’)。
當(dāng)您選擇到部的選項的時候,也就是選項的右邊沒有箭頭了,那麼在選項的左邊應(yīng)該是一個 [ ] 或 < > 的符號。分別是:前者只能選擇為內(nèi)建或不選擇;後者則可以讓您選擇為內(nèi)建、或模組、或不選擇。您可以按空白鍵來循環(huán)您的選擇:[ * ] 和 < * > 為內(nèi)建、[ ] 和 < > 是不選擇、 < M > 則為模組。(我的建議是:能夠編成模組的就盡量編成模組,除非某些特別的效能考慮或沒有模組選擇的,才編成內(nèi)建。)
當(dāng)您退回目錄的時候,如果按 Exit 或 Esc 就會退出所有選單,同時系統(tǒng)會問您是否保存設(shè)定。您只有 ‘Yes’ 或 ‘No’的選擇,如果不確定,請用 no ,然後重新進(jìn)行選擇。不過,您在任何時候,在目錄那里可以選擇:Save Configuration to an Alternate File ,將當(dāng)前設(shè)定保存在 /usr/src/linux 目錄下,檔案名稱您自定則可;您也可以選擇:Load an Alternate Configuration File ,從設(shè)定檔載入以前的設(shè)定。我強烈建議您在進(jìn)行任何改動之前,先為目前的設(shè)定保存起來,請選擇 Save Configuration 那個選項,然後輸入 origin,那您就可以隨時用 Load Configuration 還原核心的原始設(shè)定了。(如果對核心的選項夠了解,可以復(fù)制一份設(shè)定檔,然後直接修改里面的設(shè)定,是快的方法!)
接下來,應(yīng)該是傷神的時候了,這里,我們要面對一大堆的選擇。如果您不確定哪些需要,可以接受預(yù)設(shè)值,或是一股腦做成模組。當(dāng)您不知道某應(yīng)該項目是什麼意思,可以按‘help’看看您是否需要,如沒需要的話可以不要編進(jìn)核心里面,否則核心編得太大,會影響系統(tǒng)效能。
Code maturity level options --->
[*] Prompt for development and/or incomplete code/drivers
# 如果您想用核心進(jìn)行研發(fā)工作,如測試新硬體,可以考慮,
# 否則不用理會,
# 不過,有些尚處於 alpha 階段的新功能必須選擇後才用。
Loadable module support --->
[*] Enable loadable module support
[*] Set version information on all module symbols
[*] Kernel module loader
# 如果您要采用其它版本(或舊版本)編譯過來的模組,
# 那就要打開第二項,但可能不那麼安全。
# 然則,您也要確定裝有 genksyms 程式,
# 否則可能會編譯失敗。
Processor type and features --->
(Pentium-III/Celeron(Coppermine)) Processor family
( ) 486
( ) 586/K5/5x86/6x86/6x86MX
( ) Pentium-Classic
( ) Pentium-MMX
( ) Pentium-Pro/Celeron/Pentium-II
(X) Pentium-III/Celeron(Coppermine)
# 如果項的 CPU 型號不是您目前機器的,
#可以 Enter 進(jìn)行選擇。
# 上面這些因為是模組的關(guān)系,所以才選。
(off) High Memory Support
(X) off
( ) 4GB
( ) 64GB
# 如果您的實體記憶體少於 1G 的話,用預(yù)設(shè)的 off 就行;
# 如果您的記憶體介於 1G 到 4G 之間,選擇 4GB;
# 如果您的記憶體超過 4G ,那可以選擇 64GB。
[ ] Math emulation
# 除非您的 CPU 是 intel 386,否則不用選擇。
[*] MTRR (Memory Type Range Register) support
# 如果您有打算跑 X window,不妨將之加上。
[ ] Symmetric multi-processing support
# 如果您的機器是雙 CPU 的,可以選擇上面這個。
[ ] APIC and IO-APIC support on uniprocessors (NEW)
General setup --->
[*] Networking support
[ ] SGI Visual Workstation support
[*] PCI support
(Any) PCI access mode
( ) BIOS
( ) Direct
(X) Any
[*] PCI device name database
[ ] EISA support
[ ] MCA support
[*] Support for hot-pluggable devices
PCMCIA/CardBus support --->
<*> PCMCIA/CardBus support
[*] CardBus support
[*] i82365 compatible bridge support
[ ] Databook TCIC host bridge support
# 如果您使用 notebook,或許會有 PCMCIA 裝置,
# 不妨將 i82365 加進(jìn)來,除非您確定不使用 PCMCIA。
# 我實際上是沒有選擇的,這里僅作示范而已。
# 如果您沒選擇這個,後面許多 PCMCIA 的選擇就看不到了,
# 參考的時候請留意這點!
[*] System V IPC
[*] BSD Process Accounting
# 是是非常好用的東西,可以將您的行程資料記錄下來,
# 強烈建議選擇,要不然開機可能會看到錯誤信息。
[*] Sysctl support
# 這個不能不選,否則 /proc/sys 就沒作用了。
(ELF) Kernel core (/proc/kcore) format
(X) ELF
( ) A.OUT
<*> Kernel support for a.out binaries
<*> Kernel support for ELF binaries
<*> Kernel support for MISC binaries
[*] Power Management support
<*> Advanced Power Management BIOS support
# 上面這行要編成模組或內(nèi)建,然後才看得到下面的哦:
[ ] Ignore USER SUSPEND (NEW)
[ ] Enable PM at boot time (NEW)
[ ] Make CPU Idle calls when idle (NEW)
[ ] Enable console blanking using APM (NEW)
[ ] RTC stores time in GMT (NEW)
# 如果您的硬體時鐘是使用世界標(biāo)準(zhǔn)時間,可以選擇,
# 如果是本地時則不選。
[ ] Allow interrupts during APM BIOS calls (NEW)
[ ] Use real mode APM BIOS call to power off (NEW)
# 如果您的系統(tǒng)不能自己切斷電源,就選這個吧。
# 不過,對某些 BIOS 而言,選了這個反而不能關(guān)機!
# 這樣的話,您自己試試看棉~~
# 我這里沒選啦,因為我用的是華碩的舊板 P2L97。
# 另外,我還發(fā)現(xiàn)如果您是單 CPU 的機器,
# 前面卻將 SMP 選擇起來的話,那也不能關(guān)機哦~~
Memory Technology Devices (MTD) --->
< > Memory Technology Device (MTD) support
# 如果您要做 embedded 系統(tǒng),
# 使用到 FDM 和 DOM/DOC 的話,可選。
# 不過選擇之後,還有很多選項,請盡量用模組來編譯就是了。
# 如果不知道是什麼,請看 Help 的說明!
# 我這里沒選。
Parallel port support --->
# 如果您有使用平行埠,如接印表機,那就選吧。
[ ] Support foreign hardware (NEW)
[*] IEEE 1284 transfer modes (NEW)
# 假如您的印表機有狀態(tài)回報功能的話,可以考慮。
Plug and Play configuration --->
<*> Plug and Play support
<*> ISA Plug and Play support
# 哇:PnP 耶~~ 這麼好的事情為什麼不用?
Block devices --->
<*> Normal PC floppy disk support
--- Parallel IDE high-level drivers
--- Parallel IDE protocol modules
<*> Loopback device support
# 這個建議做到核心去。
<*> RAM disk support
(4096) Default RAM disk size (NEW)
[*] Initial RAM disk (initrd) support
# 呵這趟收獲甚豐:反正是模組嘛~~ ^_^
# 不過,如果您確定真的是用不上,那也可以不選啦。
# 至於後 3 項的使用時機,是當(dāng)系統(tǒng)在開機過程中,
# 必須先載入某些模組才能完成檔案系統(tǒng)的掛載,
# 例如 SCSI 模組,或核心太大裝不進(jìn)磁片中,
# 那您可以將 RD 和 initrd 選進(jìn)核心里面。
# 我這里打算嘗試這個選項,因為我有 SCSI 控制卡。
# 如果您使用這個選項,請確定您的 SCSI 模組
# 要寫在 /etc/modules.conf 檔中;
# 您也可以執(zhí)行 mkinitrd 幫助您完成。
Multi-device support (RAID and LVM) --->
[*] Multiple devices driver support (RAID and LVM)
# 您想在 Linux 玩 RAID 和 LVM 嗎?這些可要選哦。
Networking options --->
# 在這里的選項非常多,若想將 Linux 當(dāng)成 gateway 來玩,
# 那可能會選擇較多的選項。
# 無論如何,參考 Help 的說明來決定您的需求。
<*> Packet socket
# 這個可以加快封包的雙向溝通。
[*] Packet socket: mmapped IO
# 目的同上。
[*] Kernel/User netlink socket
# 如果您想架設(shè) diskless 工作站,
# 同時要這臺機器提供 RARP 這樣的服務(wù),
# 那就選擇它。
# 其它一些服務(wù)如 ipvsadm 也需要它。
[*] Routing messages (NEW)
# 如果您想用 iproute2 接收路由資訊,請選擇。
# 這個選項應(yīng)該很快合并到前面的 netlink socket 那里去。
[*] Network packet filtering (replaces ipchains)
# 呵~~ 這個是許多人都想玩的功能: NAT 和 firewall !
# 一定要選哦~~
[ ] Network packet filtering debugging (NEW)
# 如果您還有能力幫助 iptables 進(jìn)行 debug,可以選。
# 我嘛,暫時偷懶~~
[*] Socket Filtering
# 這功能似乎很神奇,
# 如果您會寫 socket 程式,應(yīng)該蠻受惠的。
<*> Unix domain sockets
# 許多程式,例如 X window 和 syslog ,都用到。
# 除非您做 embedded 系統(tǒng),確定不會使用到,
# 否則一定要選。
[*] TCP/IP networking
# 上面這項如果不選,也別想上 Internet 了。
[*] IP: multicasting
# 如果沒用到 MBONE 功能,可以不選。
[*] IP: advanced router
# 如果要將 Linux 當(dāng) router 用,那就選吧。
[*] IP: policy routing (NEW)
# 如果您打算用 iproute2 來管理 TOS ,那就要選。
[*] IP: use netfilter MARK value as routing key (NEW)
# 可以用 iproute2 配合 iptalbes 來控制頻寬,很好玩哦。
[*] IP: fast network address translation (NEW)
# 哦:NAT 耶~~ 當(dāng)然選擇啦。
[*] IP: equal cost multipath (NEW)
# 如果網(wǎng)路環(huán)境有多重路由,不妨考慮。
[*] IP: use TOS value as routing key (NEW)
# 如果您打算用 TOS 來做路由判定依據(jù),那可以選。
[*] IP: verbose route monitoring (NEW)
# 建議選擇,這樣可以讓核心告訴您一些奇怪的路由資訊。
[ ] IP: large routing tables (NEW)
# 如果您的路由區(qū)域可能超過 64 個,可以考慮。
[ ] IP: kernel level autoconfiguration
# 只有上面這項選擇了,下面三項才會跑出來:
[ ] IP: DHCP support (NEW)
[ ] IP: BOOTP support (NEW)
[ ] IP: RARP support (NEW)
# 如果您要構(gòu)建一個 diskless 工作站的核心,
# 可以選擇前面四項。
# 如果您是做 diskless 的伺服器,就不要選了。
# 可以用來架設(shè) VPN 哦,反正又是模組,干嘛不選?
[*] IP: broadcast GRE over IP (NEW)
# 如果您的網(wǎng)路混合了 IPv6 和 IPv4,
# 可以考慮選擇前兩項。
[*] IP: multicast routing
[*] IP: PIM-SM version 1 support (NEW)
[*] IP: PIM-SM version 2 support (NEW)
# 和前面的提到的 MBONE 一樣,前面三項有用才選吧。
[*] IP: TCP Explicit Congestion Notification support
# 網(wǎng)路擁塞通知協(xié)定可以減少封包遺棄及加速傳送,
# 然而許多防火墻目前都不支援這些封包,
# 有可能會影響到防火墻後面的連線,
# 如果您不確定,那就不選為佳。
# 不過,您也可以用如下命令將此功能關(guān)閉:
# echo 0 > /proc/sys/net/ipv4/tcp_ecn
[*] IP: TCP syncookie support (disabled per default)
# 使用 SYN cookies 來抵御 SYN Flood 攻擊,
# 但光設(shè)定這里是不夠的,您還必須確定
# /proc/sys/net/ipv4/tcp_syncookies 的值為 1 。
IP: Netfilter Configuration --->
# 不是一大票人要玩封包過濾嗎?可別忘了打開這里哦:
< > ipfwadm (2.0-style) support (NEW)
# 簡而言之,除非您確定不用,
# 這里的東西全部都可以編為模組就是了。---
[*] IPX: Full internal IPX network (NEW)
# 要和 Novell 機器連接嗎?前兩項要選擇哦。
# 還想和 mac 電腦連接?那也不能不選哦。
< > DECnet Support
# 如果您了解 802.1d 協(xié)定,
# 同時想用 Linux 當(dāng) Bridge,那就選吧。
QoS and/or fair queueing --->
# 想玩流量控管,這里的可不要忘了打開:
[*] QoS and/or fair queueing
[*] QoS support (NEW)
[*] Rate estimator (NEW)
[*] Packet classifier API (NEW)
[*] Traffic policing (needed for in/egress) (NEW)
# 和前面的封包過濾一樣,能選為模組的就用 M ,
# 否則就內(nèi)建。
Telephony Support --->
< > Linux telephony support
# 除非您確定用 Linux 玩 VoIP,否則不用設(shè)定。
# 我這里沒設(shè)啦。
ATA/IDE/MFM/RLL support --->
<*> ATA/IDE/MFM/RLL support
# 相信今天的硬碟沒有不支援 ATA 的吧?一定要選哦。
IDE, ATA and ATAPI Block devices --->
<*> Enhanced IDE/MFM/RLL disk/cdrom/tape/
floppy support
--- Please see Documentation/ide.txt
for help/info on IDE drives
[ ] Use old disk-only driver on primary interface
<*> Include IDE/ATA-2 DISK support
[*] Use multi-mode by default
<*> Include IDE/ATAPI CDROM support
--- IDE chipset support/bugfixes
[*] CMD640 chipset bugfix/support
[ ] CMD640 enhanced support
[ ] ISA-PNP EIDE support
[*] RZ1000 chipset bugfix/support
[*] Generic PCI IDE chipset support
[*] Sharing PCI IDE interrupts support
[*] Generic PCI bus-master DMA support
[ ] Boot off-board chipsets first support
[*] Use PCI DMA by default when available
[ ] AEC62XX chipset support
[ ] ALI M15x3 chipset support
[ ] AMD Viper support
[ ] CMD64X chipset support
[ ] CY82C693 chipset support
[ ] Cyrix CS5530 MediaGX chipset support
[ ] HPT34X chipset support
[ ] HPT366 chipset support
[*] Intel PIIXn chipsets support
[*] PIIXn Tuning support
[ ] NS87415 chipset support (EXPERIMENTAL)
[ ] PROMISE PDC202{46|62|65|67|68} support
[ ] ServerWorks OSB4/CSB5 chipsets support
[ ] SiS5513 chipset support
[ ] SLC90E66 chipset support
[ ] Tekram TRM290 chipset support (EXPERIMENTAL)
[ ] VIA82CXXX chipset support
[ ] Other IDE chipset support
[ ] IGNORE word93 Validation BITS
# 上面這些,如果能做成模組的就盡量做,其它的,
# 除非確定您會使用到,例如 Promise 的 IDE RAID 晶片,
# 否則不要選擇或接受預(yù)設(shè)的選項。
SCSI support --->
# 如果您機器上有 SCSI 裝置,那就打開這里:
<*> SCSI support
--- SCSI support type (disk, tape, CD-ROM)
<*> SCSI disk support
(40) Maximum number of SCSI disks that can be loaded as modules
# 如果您確定您的 SCSI 控制卡可以超過這個速度,可以調(diào)整這里的數(shù)值。
# 例如 Utra-Wide,可以到 160。
# 相反,如果您的卡太舊,或許調(diào)低一點。
[ ] Enable vendor-specific extensions (for SCSI CDROM) (NEW)
# 請看 help ,以確定您是否使用到其中提到的型號,否則不要設(shè)。
(2) Maximum number of CDROM devices that can be loaded as
modules (NEW)
--- Some SCSI devices (e.g. CD jukebox) support multiple LUNs
[*] Enable extra checks in new queueing code
[*] Probe all LUNs on each SCSI device
[*] Verbose SCSI error reporting (kernel size +=12K)
[ ] SCSI logging facility
# 上面那些選項,如果是模組的話,盡量選,其它的,接受預(yù)設(shè)就好,
# 除非您確切知道。
SCSI low-level drivers --->
# 這里基本上是關(guān)於特定 SCSI 控制卡的型號的支援,
(4) default tagged command queue depth
(32) maximum number of queued commands
(20) synchronous transfers frequency in MHz
# 不過,因為實在太多了,不全部列出來了。
# 不過,原則還是一樣:能模組就模組,
# 不能模組的就確定的才選擇
# 像我這里,我確定 SCSI 控制卡是 Symbios 的 53C810 ,
# 這也是預(yù)設(shè)的,但我嘗試用 initrd (RAM DISK) 方式來啟動,
# 所以改為模組。
PCMCIA SCSI adapter support --->
# 如果前面的 generic 中沒選 PCMCIA ,那這里就沒有了。
[ ] PCMCIA SCSI adapter support
# 除非您確定有使用這些設(shè)備,否則可以不理。
Fusion MPT device support --->
< > Fusion MPT (base + ScsiHost) drivers
# 這個我不知道是什麼,也就不理了。
I2O device support --->
< > I2O support
# 如果您確定您有 I2O 設(shè)備,可以選擇。我沒有,所以沒選。
Network device support --->
# 到這里可不能不選了,要不我們怎麼上網(wǎng)啊?
[*] Network device support
ARCnet devices --->
< > ARCnet support
# 如果您沒有 ARCnet 的界面,可以不理。
Appletalk devices --->
[ ] Appletalk interfaces support (NEW)
# 如果您沒有 Appletalk 界面,可以不理。
<*> Dummy net driver support
# 這個我建議您編為內(nèi)建,許多網(wǎng)路功能都會用到。
# 如果您想用多張網(wǎng)路卡合并頻寬,模擬 Etherchannel
# 和 Trunking 功能,那就選擇。
# 主意哦,支援此功能的 switch 很貴哦!
# 咦?可以合并多條 PPP 或 SLIP 頻寬?真的假的?
# 不妨試試看~~~
# 如果您沒有 tunX 或 tapX 設(shè)備,可以不設(shè),
# 但,反正是模組嘛~~~
# 如果您有 SURFboard 1000 插卡式 Cable Medem ,
# 不妨試試。
Ethernet (10 or 100Mbit) --->
# 這可是重點哦,不能不看:
[*] Ethernet (10 or 100Mbit)
[ ] ARM EBSA110 AM79C961A support
< > Sun Happy Meal 10/100baseT support
< > Sun GEM support
[*] 3COM cards
# 假如您已經(jīng)有或打算買 3Com 的網(wǎng)路卡,就打開這里吧。
support (NEW)
# 不管,全部編成模組,說不定某天也有那麼好的福氣用哦。
< > AMD LANCE and PCnet (AT1500 and NE2100) support
[*] Western Digital/SMC cards
# 也難保證某天不會用到 Digital 的網(wǎng)路卡,反正模組嘛:
[ ] Racal-Interlan (Micom) NI cards
[*] Other ISA cards
# 如果您手上還有 ISA 的舊網(wǎng)路卡,不要浪費哦。
support (NEW)
# 許多 ISA 網(wǎng)路卡,都支援 NE2000 的模組,
# 其它不選也要選這個。
[*] EISA, VLB, PCI and on board controllers
# 相信您的網(wǎng)路卡不會是非 PCI 的吧?
# 您應(yīng)該會看過 DEC 的網(wǎng)路卡吧?
[*] Use PCI shared mem for NIC registers
# 居然核心內(nèi)定就有 Intel 的這張卡!
# 太不公平了,改成模組,否則心里不平衡 ^_^
# 嗯,還有 PCI 的 NE2000 呢,
# 如果您的網(wǎng)路卡怎麼都找不到模組,不妨碰碰這個運氣。
# 呵~~ 俗稱‘便宜大碗’的螃蟹卡,就是使用這個模組的啦 ^_^
[ ] Use PIO instead of MMIO
[ ] Support for older RTL-8129/8130 boards
# 如果您不確定您可以使用這兩個選擇,那就不要選擇,
# 否則可能會開不了機!
# 唉~~ 那張惡名遠(yuǎn)撥的 DL-530TX 網(wǎng)路卡,
# 有時候可以用這個模組哦。
# 後面我專門介紹如何裝這張惡卡!
# 嗯,Winbond 的和螃蟹卡一樣好裝!
[ ] Pocket and portable adapters
# 如果您有口袋型網(wǎng)路卡(非 PCMCIA),可以選擇其下的模組看看。
Ethernet (1000 Mbit) --->
# 您什麼時候那麼好命啊?竟然連 Giga-bit 的網(wǎng)路都享受得到:
[ ] Omit support for old Tigon I based AceNICs
[ ] FDDI driver support
# 目前來說,我是鐵定沒運氣用 FDDI 的了~~~
<*> PPP (point-to-point protocol) support
# 如果用 MODEM 撥接上網(wǎng)的話,這個一定要!
# 雖說這個也可以篇成模組,不過,目前還離不開 PPP,
# 尤其用撥接式 ADSL(PPPoE) ,不妨直接編進(jìn)核心里面,
# 除非您覺得這個會影響到核心的體積。
[*] PPP filtering (NEW)
# 看起來是不錯的功能哦,試試看?可惜不能編成模組。
# 雖說,要手工編寫 SLIP 撥接 script 的時代已經(jīng)很久遠(yuǎn)了,
# 不過,很多程式都會用到哦,例如 vpnd ,還有 ippfvsadm,有備無患。
[*] CSLIP compressed headers (NEW)
# 如果雙方都支援 SLIP 壓縮技術(shù),用這個可以提高傳送量哦。
[*] Keepalive and linefill (NEW)
# 除非線路品質(zhì)太差,否則不用計較。
[ ] Six bit SLIP encapsulation (NEW)
# 這個也太古老了吧?不確定的話,不必理會。
Wireless LAN (non-hamradio) --->
# 咦?無線網(wǎng)路耶~~ 這麼好的玩意,怎能不試呢?
# 不過,我短期內(nèi)是用不到的了,真有那麼好福氣,
# 也愿意回來編核心啦 ^_^
# 所以,下面僅作范例參考:
[*] Wireless LAN (non-hamradio)
[*] Aironet 4500/4800 PNP support (NEW)
[*] Aironet 4500/4800 PCI support (NEW)
cards (NEW)
--- Wireless Pcmcia cards support
Symbol 802.11b
cards) (NEW)
# 上面有幾個一定要內(nèi)建,如果計較的話,應(yīng)該不選。
Token Ring devices --->
[ ] Token Ring driver support
# 這玩意,看來我也沒什麼機會玩的了~~
[*] Fibre Channel driver support
# 搞不好您還真的這麼有福氣,用得到 FC 哦。
# 不過,我目前看來應(yīng)該沒此機會的了。
# 上兩項也只作范例參考,實際上我并沒安裝。
Wan interfaces --->
[*] Wan interfaces support
# 知道一個 router 有多貴嗎?
# 居然小小的 Linux 也能玩 WAN?真的假的?
# 這項我沒選,下面僅作例子:
boards (NEW)
[*] Synchronous Point-to-Point Protocol (PPP) support (NEW)