轉(zhuǎn)載)編譯你自己的Linux內(nèi)核(Kernel)
你馬上就會(huì)發(fā)現(xiàn),你也可以獲得(get),配置(configure),編譯(compile)和安裝(install)屬于你自己的Linux內(nèi)核(Kernel)。
引言 為什么你想要編譯并安裝一個(gè)完全屬于你自己的內(nèi)核(Kernel)? 可能是下列原因中的一種吧:
編譯(或說(shuō)“軋制”)你自己的內(nèi)核需要對(duì)計(jì)算機(jī)(譯者 注:不僅要對(duì)機(jī)器本身有了解,還要對(duì)Linux系統(tǒng)有一定的了解)有一定的理解——這是一個(gè)難題。 因此一個(gè)Linux新手是根本不會(huì)嘗試編譯內(nèi)核的。這篇文章中展示了一些在使用“make xconfig”命令編譯內(nèi)核過(guò)程中的截圖。 使用這個(gè)命令(“make xconfig”),用戶可以通過(guò)圖形用戶界面(GUI)和鼠標(biāo)來(lái)對(duì)內(nèi)核進(jìn)行處理。 這里有差不多40張截圖,它們解釋了在某種特定的情況下為什么你需要或不能選擇某個(gè)特定的內(nèi)核選項(xiàng)(options)。 將這40幅截圖逐一討論看上去似乎有些夸張,但這的確是解釋內(nèi)核的內(nèi)部工作機(jī)理(internal workings)以及特定內(nèi)核選項(xiàng)存在的原因和工作原理的比較好的方法。 這些截圖是kernel-2.4.6的。最新的內(nèi)核是2.4.19,但是除去在菜單中有一些新的項(xiàng)目(e.g.對(duì)新硬件的支持)以外, 屏幕的顯示以及編譯的過(guò)程應(yīng)該是一樣的。建議你在開(kāi)始編譯前把這篇文章打印出來(lái),這樣你就可以隨時(shí)查找必要的信息! 本文的結(jié)構(gòu)如下。首先討論你在Internet的什么地方能夠找到內(nèi)核的源碼以及如何安裝這些源碼, 然后通過(guò)屏幕截圖討論使用圖形界面配置內(nèi)核。 一旦內(nèi)核配置完畢,它就需要被編譯,但是一個(gè)新編譯的內(nèi)核并不能直接使用。 首先,新內(nèi)核需要和引導(dǎo)程序“l(fā)ilo”一起安裝,然后,在使用lilo前你必須寫(xiě)配置文件“/etc/lilo.conf”。 另外,還有需要指出一些特殊的要點(diǎn)(specific points),比如筆記本電腦需要的PCMCIA支持。 看上去象信用卡的PCMCIA,小型板卡(small inserts)通常負(fù)責(zé)聯(lián)網(wǎng)任務(wù),在2.4.x的內(nèi)核中已經(jīng)可以直接提供支持。 但之前的內(nèi)核需要重新編譯安裝后才能提供PCMCIA支持。SuSE Linux還有一個(gè)問(wèn)題,那就是ALSA聲卡驅(qū)動(dòng)程序的音效支持。 這些驅(qū)動(dòng)程序并不是內(nèi)核的一部分,它們需要被編譯進(jìn)去然后重新安裝,因?yàn)樵嫉尿?qū)動(dòng)程序通常沒(méi)有工作。 更麻煩的是,從一個(gè)系列的內(nèi)核轉(zhuǎn)到另一個(gè)系列的內(nèi)核,比如從2.2.x系列轉(zhuǎn)到2.4.x系列, 可能會(huì)由于使用某種(某些)內(nèi)核工具(kernel utilities)而產(chǎn)生一些問(wèn)題。 這就是所謂的“modutils”(譯者注:可以看為“Modules Utilities”的所寫(xiě),這樣就不會(huì)對(duì)這個(gè)名稱感到費(fèi)解了),包括代碼(code)需要載入(load)的內(nèi)核模塊(kernel module):圖3解釋了什么是內(nèi)核模塊。 有時(shí)新內(nèi)核不知道如何處理老的modutils,所以你必須編譯和安裝更新版本的modutils。 這樣的問(wèn)題雖然不多但是它們的確存在,而且目前只能預(yù)先指出它們。 但是如果你完全按照本文的步驟進(jìn)行,幾乎不會(huì)發(fā)生錯(cuò)誤。新內(nèi)核被添加到lilo,或者被復(fù)制(copy)到loadlin所在的分區(qū)。 因此,在緊急情況下,你仍然可以通過(guò)老內(nèi)核啟動(dòng)機(jī)器。然后可以在老內(nèi)核下試著解決新內(nèi)核的問(wèn)題。 即使你遇到modutils的問(wèn)題,你也可以從老內(nèi)核重新啟動(dòng)計(jì)算機(jī),然后通過(guò)將它們(內(nèi)核和modutils)分別編譯和安裝來(lái)修復(fù)(fix)這個(gè)問(wèn) 題: 所有新版本的modutils都對(duì)老內(nèi)核向下兼容,所以新modutils在老內(nèi)核下可以很好的工作。 安裝內(nèi)核源碼 你在這一節(jié)所進(jìn)行的所有工作都需要root權(quán)限,所以你必須以root登錄(login)。 首先,也是最重要的,你必須安裝內(nèi)核源碼,比如從安裝盤(pán)上。 在SuSE中,源碼是被放在“d”類(lèi)(為開(kāi)發(fā)準(zhǔn)備的文檔)的“l(fā)x_kernel”包中。 安裝適合你的發(fā)行版(distribution)的內(nèi)核是比較適當(dāng)?shù)模驗(yàn)椴煌腉UI在那時(shí)都會(huì)被自動(dòng)安裝。 一旦這件事情完成,最新版本的Linux內(nèi)核的tar包,比如linux-2.4.6.tar.bz2可以從 http://www./pub/linux/utils/kernel/modutils/v2.4/ 。 注意modutils的版本號(hào)和內(nèi)核的版本號(hào)可以不完全吻合:只需要下載并安裝最新的版本就行。 編譯并安裝modutils將在后面的“安裝modutils”討論,現(xiàn)在我們先討論內(nèi)核的安裝。 你機(jī)器上的內(nèi)核(譯者注:指的是你的老內(nèi)核)的源碼被放在/usr/src/linux/目錄下。 比較明智的做法是保證源碼的安全,比如通過(guò)更名(rename)linux目錄: cd /usr/src mv linux linux-2.2.19 (如果原來(lái)的內(nèi)核源碼是2.2.19.的) 只有當(dāng)你安全的保存了原始內(nèi)核后,你才可以解包新的內(nèi)核:你將會(huì)看見(jiàn)linux-2.4.6.tar.bz2默認(rèn)將所有東西解包到 “l(fā)inux”目錄, 如果這個(gè)目錄已經(jīng)存在,它將重寫(xiě)這個(gè)目錄,然后,你將會(huì)遇到一個(gè)麻煩:你無(wú)法重新編譯老內(nèi)核,你已經(jīng)沒(méi)有它的配置和其他東西。 在這個(gè)例子中,我在解包linux-2.4.6.的源碼后立即將“l(fā)inux”更名(rename)為“l(fā)inux-2.4.6”,并且創(chuàng)建一個(gè)新的符號(hào) 鏈接“l(fā)inux”到“l(fā)inux-2.4.6”。 這樣的優(yōu)點(diǎn)是你可以馬上知道系統(tǒng)現(xiàn)在使用的內(nèi)核的版本。 另外,還可以很容易的安裝一個(gè)內(nèi)核補(bǔ)丁(kernel upgrade)。 命令是:(以root身份執(zhí)行,切記!) cd /usr/src cp ~/linux-2.4.6.tar.bz2 (加入tar包已經(jīng)下載) (進(jìn)入你的家目錄(home-directory ),“~”) bzip2 -d linux-2.4.6.tar.bz2 (這將花費(fèi)一段時(shí)間 ) tar -xvf linux-2.4.6.tar mv linux linux-2.4.6 ln -s /usr/src/linux-2.4.6 /usr/src/linux 當(dāng)你完成這個(gè)步驟后,你到kernel的目錄下,然后執(zhí)行: cd /usr/src/linux make xconfig (見(jiàn)圖1) ![]() 圖1: 執(zhí)行“make xconfig”命令后的用于定義(define)你的內(nèi)核的圖形界面。 這是用于定義(define)內(nèi)核的主菜單。你需要點(diǎn)選(click on)不同的選項(xiàng)。然后點(diǎn)擊“Save and Exit”保存你的選擇, 然后你就可以編譯和安裝你的內(nèi)核了(見(jiàn)圖40)。 但是我們還沒(méi)有到那一步。(才剛開(kāi)始呢!) 配置內(nèi)核(Configuring the kernel) 下面,我展示了配置內(nèi)核的過(guò)程中的一些圖片。 每幅圖片都有為什么會(huì)選擇特定的選項(xiàng)的說(shuō)明。 仔細(xì)閱讀這些例子,你會(huì)知道我這樣選擇的原因,你也可以更好的了解那些選項(xiàng)是適合你的。 “help”(幫助)提供了相同的信息。 你make xconfig自己的Linux發(fā)行版(distribution)時(shí)可以參考“help”。點(diǎn)擊“Help”,幫助文檔通常會(huì)建議你應(yīng)該選擇某個(gè)選項(xiàng)。 這些例子當(dāng)然不可能討論你所有的硬件設(shè)備。 但是它們能夠說(shuō)明你應(yīng)該如何處理自己的硬件,如何查找內(nèi)核是否支持你的硬件。 ![]() 圖2: “code maturity level options”選項(xiàng) 在這部 分,你可以允許內(nèi)核的一些試驗(yàn)選項(xiàng)(experimental options)。 有時(shí),這些選項(xiàng)是必需的,比如,需要支持新的顯卡。 但是,多數(shù)情況下,如果這些試驗(yàn)選項(xiàng)(experimental options)導(dǎo)致內(nèi)核不穩(wěn)定的話,最好撤銷(xiāo)這些選項(xiàng)。 在圖1中,你可以看見(jiàn)“IEEE 1394 (FireWire) support”和“Bluetooth support”選項(xiàng)處于灰色狀態(tài)。 它們對(duì)應(yīng)的代碼正處于試驗(yàn)階段,因此你暫時(shí)不能選擇它們。 圖三: 可加載模塊支持 . (從現(xiàn)在起,截圖都在超鏈接里,你可以自己在新的窗口里瀏覽它們) 可 加載模塊是指內(nèi)核代碼(kernel code)的一些片斷,比如驅(qū)動(dòng)程序,當(dāng)編譯內(nèi)核的時(shí)候它們也被單獨(dú)編譯。 因此,這些代碼不是內(nèi)核的一部分,但是當(dāng)你需要它的時(shí)候,它可以被加載并使用。 通常的建議是如果可能,將內(nèi)核代碼編譯成可加載模塊,因?yàn)檫@樣可以使內(nèi)核更小,而且更穩(wěn)定。 警告!千萬(wàn)不要將文件系統(tǒng)(File System)部分的代碼編譯為可加載模塊,見(jiàn)圖32。 如果你犯了這個(gè)錯(cuò)誤,將文件系統(tǒng)(File System)部分的代碼編譯為可加載模塊,結(jié)果將是內(nèi)核無(wú)法讀取它自己的文件系統(tǒng)。 然后內(nèi)核無(wú)法加載它自己的配置文件——一些很明顯是在正常啟動(dòng)Linux時(shí)所必需的東西。 你將會(huì)發(fā)現(xiàn)我很少使用可加載模塊:我喜歡我的內(nèi)核能夠直接和硬件對(duì)話,但這只是我自己的偏好。 圖4:選擇處理器類(lèi)型(processor type)和特征(features) . 在 這里,你可以選擇你的處理器(Processor)的類(lèi)型,決定是否選擇不同的選項(xiàng)。 通?!?dev/cpu”選項(xiàng)更高級(jí),多數(shù)用戶并不需要選擇它。 “High Memory Support”只有當(dāng)你的計(jì)算機(jī)有超過(guò)1GB內(nèi)存(不是磁盤(pán)空間)時(shí)才是必須的。 多數(shù)計(jì)算機(jī)的內(nèi)存從64到512MB(并且擁有8到60GB硬盤(pán)空間),因此“High Memory Support”通常并不使用。 如果你的計(jì)算機(jī)是386或486SX的話,你必須打開(kāi)“Math Emulation”選項(xiàng)。 這些老系統(tǒng)沒(méi)有Linux需要的浮點(diǎn)運(yùn)算單元(Math Emulation,也稱數(shù)學(xué)協(xié)處理器),所以必須選擇“Math Emulation”選項(xiàng)。 實(shí)際上現(xiàn)在所有的處理器都集成了浮點(diǎn)運(yùn)算單元(譯者注:從586級(jí)開(kāi)始所有CPU集成了浮點(diǎn)運(yùn)算單元),所以通常你可以不選擇這個(gè)選項(xiàng)。 “MTRR”選項(xiàng)允許在PCI或者AGP總線眾進(jìn)行更快速的通訊。 由于現(xiàn)在所有系統(tǒng)都將它們的顯卡接在PCI或AGP總線上,你通常需要選擇“MTRR”:無(wú)論如何,打開(kāi)這個(gè)選項(xiàng)通常都是安全的——即使你的機(jī)器沒(méi)有使用 PCI或AGP總線的顯卡。 對(duì)稱多處理器(SMP)需要能夠支持超過(guò)一個(gè)處理器的主板,比如一塊支持雙Pentium II處理器的主板。 “Symmetric multi-processing”選項(xiàng)保證內(nèi)核能夠以最佳方式加載雙處理器。 最后一個(gè)選項(xiàng)(“APIC”選項(xiàng))通常也需要多處理器,但它通常是關(guān)閉的。 圖5: 常規(guī)內(nèi)核選項(xiàng) . 在 這里,你可以制定特定的內(nèi)核常規(guī)選項(xiàng)。 通常每個(gè)人都會(huì)選擇“Networking support”,因?yàn)槟阃ǔP枰?,比如Internel。 Linux有很重的Internet偏向,而且它在沒(méi)有聯(lián)網(wǎng)的情況下無(wú)法充分發(fā)揮優(yōu)勢(shì)。 另外,許多其他的操作也網(wǎng)絡(luò)支持——即使它們看上去跟網(wǎng)絡(luò)沒(méi)多大關(guān)系。 內(nèi)核在沒(méi)有網(wǎng)絡(luò)支持選項(xiàng)的情況下甚至無(wú)法編譯。簡(jiǎn)而言之:一定要打開(kāi)“Networking support”選項(xiàng)。 現(xiàn)在的所有系統(tǒng)都使用PCI總線,所以你應(yīng)該選擇相關(guān)選項(xiàng)。 “PCMCIA/CardBus support”選項(xiàng)處于灰色不可用狀態(tài),因?yàn)槟銊偛乓呀?jīng)選擇你不虛妄使用試驗(yàn)代碼(見(jiàn)圖2)。 如果你使用筆記本電腦,你當(dāng)然需要內(nèi)核支持PCMCIA/CardBus以便使用網(wǎng)卡或者調(diào)制解調(diào)器(modem,即通常所說(shuō)的“貓”)。(請(qǐng)參考 “PCMCIA支持(筆記本電腦)”) “System V IPC”允許程序通信和同步,“BSD process accounting”保持諸如進(jìn)程結(jié)束時(shí)產(chǎn)生的錯(cuò)誤代碼的東西,“Sysctl support”允許程序修改某些內(nèi)核選項(xiàng)而不需要重新編譯內(nèi)核或者重新啟動(dòng)計(jì)算機(jī)。 這些選項(xiàng)通常是打開(kāi)的。 現(xiàn)在的Linux發(fā)行版(distributions)以ELF格式作為它們的“內(nèi)核核心格式”(kernel core (/proc/kcore/) format): 這是不同系統(tǒng)庫(kù)(system libraries)的標(biāo)準(zhǔn)格式,比如那種格式的提供給程序使用的系統(tǒng)代碼片斷。 “ELF”是已淘汰的“a.out”格式的繼承者,和Microsoft Windows的.dll文件。 現(xiàn)在,所有Linux程序都使用ELF庫(kù)(ELF library),不幸的是有些老的程序仍然需要a.out格式支持。 一個(gè)典型的例子是“Word Perfect 8 for XWindow”:這個(gè)應(yīng)用程序只有在a.out格式下可用,所以“xwp”無(wú)法在沒(méi)有a.out格式支持的情況下運(yùn)行。 如果你想用“xwp”,將“a.out”作為一個(gè)可加載模塊。 我還把“MISC”作為一個(gè)可加載模塊。 原則上,我并不使用它,但是如果你經(jīng)常使用java,python或者DOS模擬器“DOSEMU”,這樣可能更方便。 我還打開(kāi)了“Power Management support”和“Advanced Power Management BIOS support”選項(xiàng)(在圖5中沒(méi)有顯示)。 ATX主板需要這兩個(gè)選項(xiàng)來(lái)自動(dòng)關(guān)閉計(jì)算機(jī)(turn off the computer,包括關(guān)閉電源)。 另外的電源管理功能被關(guān)閉是因?yàn)樗鼈冊(cè)赬Window下無(wú)法正常工作,而我通常在XWindow下使用Linux。 KDE和Gnome有它們自己的標(biāo)準(zhǔn)電源管理功能。 圖6:配置存儲(chǔ)設(shè)備(Memory Technology Devices) . 你 需要這個(gè)選項(xiàng)來(lái)使Linux可以讀取閃存卡(Flash Card)之類(lèi)的存儲(chǔ)器。 閃存卡通常用于數(shù)碼相機(jī)。 通過(guò)這個(gè)選項(xiàng),Linux可以讀取閃存卡(從特殊的設(shè)備中,比如讀卡機(jī)),并且將圖片保存為.jpg格式。 除非你確定你需要它,否則不必打開(kāi)它:如果你發(fā)現(xiàn)自己需要,你可以在以后加上。 圖7:配置并口(parallel port) . 在USB技術(shù)出現(xiàn)以前,并口是最常用的連接計(jì)算機(jī)和打印機(jī)、掃描儀的方式。 我的打印機(jī)使用了一個(gè)并口,所以我希望這個(gè)端口在Linux下可用。 注意 ,配置并口和配置打印機(jī)不同:這將在后面的圖28討論。 圖8:配置即插即用(PnP)設(shè)備 . 幾 乎所有人都有即插即用設(shè)備,因此需要這個(gè)選項(xiàng)的支持。 打開(kāi)這個(gè)選項(xiàng)使內(nèi)核能夠自動(dòng)配置即插即用設(shè)備并且使它們?cè)谙到y(tǒng)中能夠使用。 有時(shí)需要在BIOS中打開(kāi)“Plug & Play OS”,否則Linux(當(dāng)然Windows也一樣)無(wú)法配置即插即用設(shè)備。 “ISA Plug & Play support”選項(xiàng)需要以即插即用模式運(yùn)行的ISA卡(ISA Card)。 例如AWE64聲卡。ISA總線(ISA bus)從來(lái)都沒(méi)有即插即用標(biāo)準(zhǔn),這增加了配置這些板卡的難度。 在2.4.x內(nèi)核之前的早些時(shí)候,Linux用戶在啟動(dòng)時(shí)必須呼叫(call)“isapnp”程序(isapnptools包,使用rpm qil isapnptools查看包含的所有文件)。 “isapnp”讀取“/etc/isapnp.conf”文件。 這個(gè)文件包含不同板卡使用的所有端口,地址和中斷。 如果/etc/isapnp.conf中的信息不正確,或者“isapnp”沒(méi)有被激活,即插即用設(shè)備就無(wú)法使用,甚至網(wǎng)卡、modem、聲卡也無(wú)法工 作。 打開(kāi)“ISA Plug & Play support”選項(xiàng)來(lái)代替以前的工序:不再需要/etc/isapnp.conf文件。 檢測(cè)和配置工作都自動(dòng)進(jìn)行。 在SuSE 7.1中,在編譯2.4.x內(nèi)核后我必須重命名/etc/isapnp.conf為“/etc/isapnp.conf.old”之類(lèi)的名稱。因?yàn)閮?nèi)核和 “isapnp”使用相同的資源,造成很慘的后果。 問(wèn)題在于SuSE 7.1(以及更老的版本)在啟動(dòng)時(shí)自動(dòng)激活“isapnp”,即使內(nèi)核已經(jīng)包括了對(duì)即插即用的必要支持。 這只是對(duì)于老Linux系統(tǒng)而言,新的系統(tǒng)默認(rèn)不使用“isapnp” 圖9: 配置塊設(shè)備(block devices) . 事 實(shí)上,每個(gè)人都要使用軟盤(pán)(floppy),所以這個(gè)選項(xiàng)要打開(kāi)(或者,象我這樣,作為一個(gè)可加載模塊)。 倘若/etc/modules.conf或者/etc/conf.modules文件在你的Linux發(fā)行版中已經(jīng)被適當(dāng)配置了,當(dāng)需要訪問(wèn)軟盤(pán)的時(shí)候, 內(nèi)核會(huì)自動(dòng)加載必須的模塊。 如果你選擇了圖3中適當(dāng)?shù)倪x項(xiàng),你的使用應(yīng)該沒(méi)有問(wèn)題。 訪問(wèn)軟盤(pán)當(dāng)然內(nèi)核必須能夠讀取軟盤(pán)的文件系統(tǒng)。 因此你必須正確完成圖32的工作(配置文件系統(tǒng))。 其他的選項(xiàng)在你使用并口鏈接IDE存儲(chǔ)設(shè)備的時(shí)候是必需的,但是它們通常是關(guān)閉的。 “l(fā)oopback device support”選項(xiàng)可能例外。 在Linux下,刻錄(burn)光盤(pán)之前你通常需要制作一個(gè)光盤(pán)鏡像,在查看鏡像文件的內(nèi)容時(shí)需要“l(fā)oopback device”。 我選擇了這個(gè)選項(xiàng)(第五行)作為可加載模塊(在圖9中沒(méi)有顯示出來(lái))。 圖10: 配置多驅(qū)動(dòng)器(multiple devices) . 普 通Linux用戶通常不需要RAID(廉價(jià)冗余磁盤(pán)陣列)或者LVM支持。 “RAID”的意思是系統(tǒng)使用兩塊或兩塊以上硬盤(pán)存儲(chǔ)并行信息。 當(dāng)一塊磁盤(pán)出現(xiàn)問(wèn)題的時(shí)候另一塊可以繼續(xù)工作,系統(tǒng)不停頓。 LVM讓使用增加一塊硬盤(pán)來(lái)擴(kuò)展一個(gè)分區(qū)成為可能。。 在實(shí)際應(yīng)用中,這意味著你不必重新分區(qū)或?qū)⒁粋€(gè)小的分區(qū)復(fù)制到一個(gè)大分區(qū)中。 路徑名也不會(huì)改變。 這可能會(huì)十分方便,但是普通用戶并不需要它。 圖11: 網(wǎng)絡(luò)配置選項(xiàng) . 你 需要“Packet Socket”選項(xiàng)來(lái)與網(wǎng)卡進(jìn)行通信而不需要在內(nèi)核中實(shí)現(xiàn)網(wǎng)絡(luò)協(xié)議。 在這里我可以簡(jiǎn)捷一些:一般情況下,打開(kāi)這個(gè)選項(xiàng)。 大多數(shù)選項(xiàng)是關(guān)閉的,除非你需要特殊的支持。 比如,我選擇了“Network packet filtering (replaces ipchains)”,因?yàn)槲沂褂昧薙uSE的標(biāo)準(zhǔn)防火墻(Standard Firewall)。 防火墻可以保護(hù)你的機(jī)器不受來(lái)自外部Internet的攻擊——至少當(dāng)你正確配置了防火墻的時(shí)候是如此。 內(nèi)核級(jí)的防火墻保護(hù)顯然是十分優(yōu)越的。 圖12展示了在“network packet filtering”選項(xiàng)中的高級(jí)選項(xiàng)(Further choices)。 你需要“Unix domain sockets”來(lái)進(jìn)行網(wǎng)絡(luò)鏈接,但也可以使用其他的東西: XWindow要自動(dòng)使用Unix sockets,所以如果沒(méi)有打開(kāi)這個(gè)選項(xiàng),XWindow將無(wú)法啟動(dòng)。 通常這個(gè)選項(xiàng)是打開(kāi)的。 “TCP/IP networking”選項(xiàng)包括了Internet和內(nèi)部網(wǎng)絡(luò)所需要的協(xié)議。 通常你會(huì)希望激活TCP/IP支持。 如果你不確定是否應(yīng)該打開(kāi)一個(gè)選項(xiàng),參考一下幫助文檔。 如果你還是不知道是否應(yīng)該打開(kāi)它,一般來(lái)說(shuō),就把它打開(kāi),然后通過(guò)試用來(lái)決定是否保留。 將某些特定的選項(xiàng)編譯為模塊也是一個(gè)很好的辦法。 圖12:配置IP過(guò)濾(防火墻) . 為了使防火墻能夠正常工作,SuSE Linux需要對(duì)ipchains的兼容支持(Backwards Support)。 因此,我為我的SuSE Linux打開(kāi)了這個(gè)選項(xiàng)。 如果你也在其他發(fā)行版中使用了防火墻,請(qǐng)參考它們的手冊(cè)。 圖13: 配置電話技術(shù)支持(Telephony Support) . 這個(gè)選項(xiàng)只有當(dāng)你在計(jì)算機(jī)中使用電話卡的時(shí)候才有用,比如在Internet上打電話。 大多數(shù)普通用戶沒(méi)有電話卡,因此不需要這個(gè)選項(xiàng)。 圖14:配置對(duì)ATA,IDE,MFM和RLL的支持(硬盤(pán)的通訊協(xié)議) . 幾乎每個(gè)人都需要這些協(xié)議,除非你的機(jī)器只有SCSI硬盤(pán)而沒(méi)有其他任何類(lèi)型的硬盤(pán)。 因此,大多數(shù)用戶都應(yīng)該把它打開(kāi)。 點(diǎn)擊它下面的那一欄將會(huì)出現(xiàn)一個(gè)有更詳細(xì)配置選項(xiàng)的菜單。 這些將在下面討論。 因?yàn)樗鼈兒苤匾?,因此這里有三幅截圖。仔細(xì)填寫(xiě)它們:它們極為重要! 圖15:配置對(duì)ATA,IDE,MFM和RLL的支持:截圖1 . 最 上面的選項(xiàng)是每個(gè)使用IDE/ATAPI界面的人都需要的。 包括硬盤(pán),磁帶機(jī),ZIP盤(pán),光驅(qū)(CDROM)和刻錄機(jī)(CD-R(W))。 基本上現(xiàn)在的所有計(jì)算機(jī)(譯者注:這里指的是PC)都使用IDE/ATAPI界面,因此這個(gè)選項(xiàng)必須打開(kāi)。 “include IDE/ATA-2 DISK support”選項(xiàng)在支持硬盤(pán)的時(shí)候需要。 因此這個(gè)選項(xiàng)也必須打開(kāi),除非你的機(jī)器是一個(gè)純粹的SCSI系統(tǒng)。 圖16:配置對(duì)ATA,IDE,MFM和RLL的支持:截圖2 . 如 果你有ATAPI CDROM的話,應(yīng)該打開(kāi)“include IDE/ATAPI CDROM support”選項(xiàng)。 ATAPI的CD-R(W)需要仿真為SCSI的才能被訪問(wèn)。SCSI仿真可以用來(lái)訪問(wèn)CDROM和CD-R(W)。 如果你使用仿真SCSI的方式來(lái)訪問(wèn)CDROM,你將會(huì)遇到問(wèn)題,比如當(dāng)你掛載(mount)CD的時(shí)候出現(xiàn)錯(cuò)誤信息(Error Message),或者使用CDROM播放CD唱片(Audio CD) 最好的辦法是象圖16這樣,將“include IDE/ATAPI CDROM support”和“SCSI emulation support”選項(xiàng)都打開(kāi)。 需要SCSI仿真的設(shè)備通常是CD-R(W),可以在/etc/lilo.conf中加入“append="hdd=ide-scsi":”行進(jìn)行定義, 這將在“配置lilo”中進(jìn)行討論。 因?yàn)槲矣幸粋€(gè)使用ATAPI界面的內(nèi)置ZIP驅(qū)動(dòng)器,所以我把“include IDE/ATAPI FLOPPY support”選項(xiàng)打開(kāi)。 如果你有軟盤(pán)類(lèi)的驅(qū)動(dòng)器(譯者注:包括ZIP盤(pán)、LS-120等大容軟驅(qū),但不包括MO磁光盤(pán))。 大部分主板使用“PCI IDE”(譯者注:就是指通過(guò)占用PCI總線帶寬進(jìn)行通信的IDE接口)對(duì)硬盤(pán)、CDROM和軟驅(qū)進(jìn)行訪問(wèn),因此這個(gè)選項(xiàng)必須打開(kāi)。 同樣的有兩種開(kāi)啟DMA的可能性。 DMA使你的硬件直接訪問(wèn)內(nèi)存,而不需要處理器的干預(yù)。 因此,正如你所希望的,IDE磁盤(pán)的訪問(wèn)速度會(huì)加快。 “sharing PCI IDE interrupts support”是關(guān)閉的,因?yàn)槟阃ǔ2恍枰?br> 的確,某些IDE控制器允許和其他設(shè)備共享中斷,比如網(wǎng)卡。 不幸的是,共享IDE中斷會(huì)使磁盤(pán)性能下降,因此通常你不需要共享中斷,除非這是解決硬件問(wèn)題的唯一辦法。 圖17:配置對(duì)ATA,IDE,MFM和RLL的支持:截圖3 . 我的主板有一顆Pentium II CPU,而且使用的是Intel的芯片組,因此我希望能夠?qū)υ撔酒M提供特殊支持。 當(dāng)你選擇你自己的內(nèi)核選項(xiàng)時(shí),你應(yīng)該看看圖17沒(méi)有顯示的其他芯片組。 圖18: 配置SCSI支持 . 如果你有一塊SCSI卡,你當(dāng)然需要打開(kāi)相關(guān)選項(xiàng)。這張截圖只顯示了當(dāng)你為你的CD-R(W)選擇“SCSI emulation support”(圖16)時(shí)需要的選項(xiàng)。 圖19: 配置I2O設(shè)備支持(I2O Device Support) . 如果你有I2O界面,你必須選擇這個(gè)選項(xiàng)。大多數(shù)人沒(méi)有,如果你也沒(méi)有的話,可以直接將它關(guān)閉。 圖20: 配置網(wǎng)卡支持(Network Device Support) . 我 從來(lái)都沒(méi)有在沒(méi)有網(wǎng)卡支持的情況下將Linux內(nèi)核編譯成功過(guò)。 因此,你應(yīng)該打開(kāi)這個(gè)選項(xiàng)。 你還應(yīng)該打開(kāi)虛擬驅(qū)動(dòng)(Dummy Driver),作為內(nèi)核的一部分或者一個(gè)可加載模塊。 當(dāng)沒(méi)有物理網(wǎng)卡的時(shí)候,Linux需要一塊虛擬網(wǎng)卡(Dummy Network)。即使已經(jīng)有了物理網(wǎng)卡,Linux仍然經(jīng)常使用虛擬網(wǎng)卡。 在圖21所示的菜單中,你可以選擇網(wǎng)絡(luò)類(lèi)型和網(wǎng)卡。 注意,如果你想要通過(guò)modem來(lái)訪問(wèn)Internet的話,你需要進(jìn)行更多的設(shè)置: 你必須打開(kāi)“PPP support for async serial ports”(用于COM端口)或者“PPP support for sync tty ports”(用于通過(guò)諸如SyncLink adapter進(jìn)行的高速連接)選項(xiàng)以提供PPP支持。 如果你沒(méi)有打開(kāi)它們,內(nèi)核將會(huì)告訴你PPP模塊(PPP Module)不存在——即使你已經(jīng)編譯了,錯(cuò)誤信息(Error Message)對(duì)于查找真正問(wèn)題的所在幾乎沒(méi)有作用。 你可以將它們都選上,這樣可以避免一些問(wèn)題:如果內(nèi)核需要它們,就會(huì)使用它們,如果不需要,就不用。 圖21:配置以太網(wǎng)卡(Ethernet Device) . 我 的以太網(wǎng)卡是一塊使用3c509/3c529芯片的3COM百兆網(wǎng)卡。 因?yàn)槲也⒉恍枰c網(wǎng)絡(luò)進(jìn)行物理連接(我有網(wǎng)卡,但是我并不通過(guò)modem來(lái)訪問(wèn)網(wǎng)絡(luò)),因此我將這個(gè)趨同編譯成一個(gè)可加載模塊,以便萬(wàn)一要需要網(wǎng)卡的時(shí)候 可以使用。 你當(dāng)然需要選擇與你機(jī)器的情況相符的網(wǎng)絡(luò)類(lèi)型和網(wǎng)卡。另外,你必須使用諸如SuSE Linux下的“yast2”之類(lèi)的配置程序配置網(wǎng)絡(luò)鏈接。 圖22: 配置業(yè)余廣播支持(Amateur Radio Support) . 如果你希望使用業(yè)余廣播支持(Amateur Radio Support),應(yīng)該打開(kāi)這個(gè)選項(xiàng),并且打開(kāi)相應(yīng)的驅(qū)動(dòng)。 多數(shù)人不需要這個(gè)選項(xiàng)。 圖23: 配置紅外線(無(wú)線)通訊支持 . 如果你有無(wú)線設(shè)備,比如無(wú)線鼠標(biāo)或無(wú)線鍵盤(pán),你應(yīng)該打開(kāi)這個(gè)選項(xiàng)。 多數(shù)桌面機(jī)器不需要這個(gè)選項(xiàng)。 圖24: 配置ISDN . 在這里你可以打開(kāi)對(duì)ISDN卡的支持。 你必須知道自己使用的是什么板卡和芯片:你需要通過(guò)這些信息來(lái)選擇正確的設(shè)備。 圖25: 配置老CDROM . 在486和386機(jī)器中,CDROM并不是通過(guò)硬盤(pán)IDE(ATAPI)控制器連接的,而是通過(guò)聲卡或一塊特殊的板卡。 使用這些老CDROM需要選擇對(duì)應(yīng)的驅(qū)動(dòng)。 這個(gè)選項(xiàng)在現(xiàn)在的系統(tǒng)中顯得多余。 圖26: 配置Input Core Support . 這 個(gè)選項(xiàng)提供了2.4.x內(nèi)核中最重要的特性之一的USB支持。 Input core support是處于內(nèi)核與一些USB設(shè)備之間的層(Layer)。 圖38顯示了可供選擇的USB設(shè)備,幫助文檔也指明了那些設(shè)備需要“input core support”:見(jiàn)圖38。 如果你擁有其中一種USB設(shè)備,你必須打開(kāi)“input core support”選項(xiàng)。 現(xiàn)在所有的主板都有USB接口,所以,原則上你應(yīng)該打開(kāi)它。但是,我清楚自己并不需要USB支持,所以我關(guān)閉了它。 圖27: 配置字符型設(shè)備(Character Devices):截圖1 . 最 上面的選項(xiàng)(“virtual terminal”)允許在XWindow中打開(kāi)xterm和使用字符界面登錄。 通常這個(gè)選項(xiàng)是打開(kāi)的。 第二個(gè)選項(xiàng)(“support for console on virtual terminal”)告訴內(nèi)核將諸如模塊錯(cuò)誤、內(nèi)核錯(cuò)誤啟動(dòng)信息之類(lèi)的警告信息發(fā)送到什么地方, 在XWindow下,通常設(shè)置一個(gè)專(zhuān)門(mén)的窗口來(lái)接收內(nèi)核信息,但是在字符界面下,這些信息通常被發(fā)送到第一個(gè)虛擬終端(Virtual Terminal)(CTRL+ALT+F1)。 將這個(gè)選項(xiàng)打開(kāi)。 你還可以選擇將信息發(fā)送到串口(Serial Port)設(shè)備,比如打印機(jī)或其他的終端(第四個(gè)選項(xiàng))。 如果將信息發(fā)送到打印機(jī),你還必須使用選項(xiàng)三激活串口。 同樣,如果你使用串口鼠標(biāo)(Serial Mouse),你也必須激活串口。 再說(shuō)一遍,選項(xiàng)三(“standard/generic (8250/16550 and compatible UARTs) serial support”)通常是打開(kāi)的。 在我的系統(tǒng)中,我將它編譯為一個(gè)可加載模塊。原因是在啟動(dòng)的時(shí)候SuSE老抱怨“serial support”丟失,而如果確定模塊的確存在,將其編譯為可加載模塊是避免上述抱怨的的好辦法。 配置字符型設(shè)備是極為重要的工作。 如果你的配置不正確,你有可能得到一個(gè)根本不能工作的系統(tǒng)。 因此圖28到圖30討論了更多的相關(guān)選項(xiàng)。 圖28: 配置字符型設(shè)備(Character Devices):截圖2 . 如 果你想使用遠(yuǎn)程使用自己機(jī)器上的xterm,比如通過(guò)telnet或者ssh,你必須打開(kāi)“unix98 PTY support”選項(xiàng)。 桌面系統(tǒng)看上去似乎不需要這個(gè)選項(xiàng),但是許多后臺(tái)進(jìn)程需要使用這個(gè)選項(xiàng)。 因此,無(wú)論如何,將它打開(kāi)是個(gè)好主意,至少可以避免啟動(dòng)時(shí)顯示錯(cuò)誤信息(至少SuSE是這樣)。 所有擁有并口打印機(jī)的人當(dāng)然需要“Parallel printer support”。 不過(guò),并不是所有人都需要并口:USB打印機(jī)就不需要。 內(nèi)核信息可以通過(guò)打開(kāi)“Support for console on line printer”選項(xiàng)傳送到并口:通常,你并不需要它。 如果你有某些設(shè)備需要占用并口,你需要“support for user-space parallel port device drivers”選項(xiàng),但是通常不必。 同樣,你通常不需要“I2C support”選項(xiàng):這是視頻處理卡所需要的,但是如果你發(fā)現(xiàn)你需要它,你通常可以在以后加入到內(nèi)核中——只要你覺(jué)得內(nèi)核運(yùn)行得好。 如果你使用鼠標(biāo)和游戲桿,你需要打開(kāi)相應(yīng)的支持,但是并不是所有鼠標(biāo)都使用這個(gè)驅(qū)動(dòng)(見(jiàn)圖29)。 現(xiàn)在的CD-R(W)使需要“QIC-02 Tape support”的磁帶機(jī)(Tape Drives)大量閑置,因此這個(gè)選項(xiàng)通常是關(guān)閉的。 圖29: 配置字符型設(shè)備:鼠標(biāo) . 如 果你使用串口鼠標(biāo),你根本不需要這個(gè)選項(xiàng)的任何項(xiàng)目,但是所有其他類(lèi)型的鼠標(biāo)則需要在這里進(jìn)行參數(shù)配置。 如果你使用最初的總線鼠標(biāo)(ORIGINAL Bus Mouse)你需要打開(kāi)最上面的選項(xiàng)。 現(xiàn)在的許多計(jì)算機(jī)使用另外一種鼠標(biāo),通常(而且是錯(cuò)誤的)稱作“busmouse”或者“PS/2鼠標(biāo)”。 這些鼠標(biāo)通常連接到/dev/aux,并且插在一個(gè)與鍵盤(pán)相同的小接口中。 通常,這種鼠標(biāo)通過(guò)鍵盤(pán)來(lái)連接到計(jì)算機(jī)。 要讓這些鼠標(biāo)正常工作,你必須打開(kāi)如圖29所示的選項(xiàng),“mouse support (not serial and bus mice)”和“PS/2 mouse (aka "auxiliary device" support)”。 圖30: 配置字符型設(shè)備:截圖3 . 這 些是圖28和圖30中沒(méi)有討論的內(nèi)核選項(xiàng)。 它們通常是關(guān)閉的。 “Ftape, the floppy tape device driver”選項(xiàng)需要對(duì)連接到軟驅(qū)控制器的磁帶機(jī)的支持。 甚至即使你有一個(gè)那樣的磁帶機(jī),這個(gè)選項(xiàng)都不是必須的,至少不是首要的。 其他選項(xiàng)需要3D顯卡。 如果你有一塊連接到AGP總線(AGP Bus)的顯卡,你需要打開(kāi)AGP支持,還需要相應(yīng)的驅(qū)動(dòng)(在/dev/agpgart(AGP支持))。 注意,你可以編譯一個(gè)不包含這些選項(xiàng),但是能夠正常工作的內(nèi)核,但那沒(méi)必要! 如果沒(méi)有這些選項(xiàng),XWindow 4.0或者更高版本(被現(xiàn)在的多數(shù)發(fā)行版使用)將無(wú)法工作。 我的機(jī)器有一塊AGP顯卡,nVidia TNT2,但是內(nèi)核的相應(yīng)模塊并不支持這塊顯卡(nVidia拒絕透露開(kāi)發(fā)驅(qū)動(dòng)所必須的技術(shù)細(xì)節(jié))。 很不幸,打開(kāi)AGP支持對(duì)于我來(lái)說(shuō)沒(méi)有多大意義。 雖然有這個(gè)問(wèn)題,我仍然可以在不需要內(nèi)核驅(qū)動(dòng)的情況下使用XWindow 4.0。 “Direct rendering support”是為XWindow 4.0提供的圖形加速選項(xiàng)。 要想使用這個(gè)選項(xiàng),你的顯卡必須能夠被支持,而且你必須使用XFree86 4.0及以上版本。 另外,你還需要打開(kāi)“AGP support”選項(xiàng)。 你可以編譯一個(gè)不包含這些選項(xiàng)的內(nèi)核,它照樣可以正常工作。 圖31: 配置多媒體設(shè)備“Multimedia Devices” . 如果你有一塊視頻處理卡或者廣播卡,需要打開(kāi)這個(gè)選項(xiàng)。 跟前面一樣,這個(gè)選項(xiàng)不是必需的。 圖32: 配置文件系統(tǒng)(File System):截圖1 . 在 這里,你可以指定Linux能夠訪問(wèn)的文件系統(tǒng)。 或許你希望制作一個(gè)能夠訪問(wèn)Windows分區(qū)和Windows軟盤(pán)的內(nèi)核,但是你必須保證內(nèi)核可以訪問(wèn)Linux自己的ext2文件系統(tǒng),或者是更新的 ReiserFS文件系統(tǒng)。 如果你沒(méi)有這樣做,Linux會(huì)無(wú)法啟動(dòng),因?yàn)閮?nèi)核無(wú)法讀取它自己的啟動(dòng)盤(pán)(正如圖3中所討論的那樣)。 要想訪問(wèn)DOS/Windows軟盤(pán)和分區(qū),你需要打開(kāi)“DOS FAT support”選項(xiàng):但是要想訪問(wèn)Windows NT/2000的分區(qū),你需要另外一個(gè)只讀(Read-only)驅(qū)動(dòng),這將在后面進(jìn)行選擇。 要想讀寫(xiě)DOS/Windows分區(qū)和軟盤(pán),你需要打開(kāi)“MSDOS fs support”選項(xiàng)(譯者注:注意,“DOS FAT support”并不提供讀寫(xiě)功能)。 事實(shí)上,每個(gè)人都希望這樣,因此通常這個(gè)選項(xiàng)是開(kāi)著的。 “VFAT”需要Windows95/98的長(zhǎng)文件名支持。我的機(jī)器是一個(gè)可以通過(guò)lilo(見(jiàn)“配置lilo”)啟動(dòng)Windows 98和Linux的雙重啟動(dòng)系統(tǒng)(dual boot system)。 因此,我需要激活“VFAT”。 你需要加入對(duì)ISO 9660的支持來(lái)讀取標(biāo)準(zhǔn)格式的光盤(pán)(CD)。 “Joliet extensions”選項(xiàng)允許在ISO 9660標(biāo)準(zhǔn)中使用長(zhǎng)文件名。 多數(shù)人都希望能夠讀取現(xiàn)在的光盤(pán),因此這些選項(xiàng)通常也是打開(kāi)的。 圖33詳細(xì)講述了一些附加選項(xiàng),其中包括包括Linux的ext2文件系統(tǒng)。 圖33: 配置文件系統(tǒng):截圖2 . /proc 目錄中的文件包含了關(guān)于系統(tǒng)狀態(tài)的許多重要信息,比如那些中斷正在使用。 一般來(lái)說(shuō),你應(yīng)該把這個(gè)選項(xiàng)(“/proc file system support”)打開(kāi)。。 “Second extended fs support”選項(xiàng)針對(duì)Linux的標(biāo)準(zhǔn)文件系統(tǒng)(Ext2 FS) 你必須打開(kāi)這個(gè)選項(xiàng),并且編譯進(jìn)內(nèi)核(不是作為可加載模塊)! 圖32和33沒(méi)有顯示“ReiserFS”選項(xiàng),它也可以在這里打開(kāi):Ext2文件系統(tǒng)的繼承者,ReiserFS能夠更好的對(duì)付由于斷電或者類(lèi)似情況而 帶來(lái)的對(duì)文件系統(tǒng)的破壞。 目前ReiserFS仍然處于開(kāi)發(fā)階段,因此被標(biāo)志為試驗(yàn)代碼。 即使是這樣,多數(shù)發(fā)行版現(xiàn)在都已經(jīng)支持ReiserFS,但是,雖然ReiserFS被認(rèn)為會(huì)在將來(lái)取代Ext2,我現(xiàn)在并不推薦將它作為所有分區(qū)的文件 系統(tǒng)。 如果你(在Windows下)使用一個(gè)叫“packetCD”的將光盤(pán)虛擬成低速磁盤(pán)的軟件,你需要打開(kāi)“UDF file system support”選項(xiàng) 這對(duì)在與其他PC交換數(shù)據(jù)時(shí)十分方便。 在Linux下通過(guò)將這些被封包的光盤(pán)掛載(mount)為UDF文件系統(tǒng)也可以進(jìn)行讀取,比如使用命令“mount -t udf /dev/scd0 /cdrom”。 這一部分還包括“Network file systems”、“partition types”和“Native language support”選項(xiàng)。 你不必選擇“Network file systems”,除非你的計(jì)算機(jī)處于一個(gè)需要使用“Network file systems”選項(xiàng)的大型網(wǎng)絡(luò)之中,“SMB file support”選項(xiàng)也是一樣,對(duì)于普通的單機(jī)(Standalone Computer)來(lái)說(shuō),并不需要這些選項(xiàng)。 “Partition Types”選項(xiàng)是一個(gè)很高級(jí)但對(duì)于有效的使用Linux內(nèi)核來(lái)說(shuō)并不必要的選項(xiàng)。 最好是關(guān)閉它。 圖34和35更詳細(xì)的解釋了“Native Language Support”選項(xiàng)。 圖34:配置“native language support”選項(xiàng):截圖1 . 在 這個(gè)菜單中,你可以選擇那些編碼將被Linux用來(lái)處理DOS和Windows下的文件名。 圖34的編碼表通常是用于DOS文件名的。圖35NLS表中的是用于長(zhǎng)文件名的。 圖34中最上面的選項(xiàng)“Default NLS option”決定那種語(yǔ)言是系統(tǒng)的標(biāo)準(zhǔn)語(yǔ)言。 圖35描繪和詳細(xì)解釋了“iso8859-15”選項(xiàng)。 圖35:配置“native language support”:截圖2 . 你 需要使用“NLS ISO 8859-15”選項(xiàng)來(lái)正確復(fù)制(reproduce)Windows的FAT(文件分配表)和光盤(pán)文件系統(tǒng)(CD File System)的長(zhǎng)文件名擴(kuò)展(Joliet extensions),這通常是一個(gè)好主意。 “NLS ISO 8859-15”選項(xiàng)對(duì)于西方語(yǔ)言來(lái)說(shuō)是最適當(dāng)?shù)?,而且它包含了歐洲字符。 因此,這個(gè)編碼表通常都會(huì)被編譯進(jìn)去。 “NLS ISO 8859-1”表是以前的西方語(yǔ)言編碼表,但是沒(méi)有包括歐洲字符。 圖36: 配置控制臺(tái)驅(qū)動(dòng) . “VGA text console”選項(xiàng)在VGA模式下啟動(dòng)字符模式。 多數(shù)人都需要它,因此這個(gè)玄學(xué)愛(ài)你跟通常是開(kāi)著的。 只有一些386計(jì)算機(jī)沒(méi)有VGA兼容顯卡,選擇這個(gè)選項(xiàng)對(duì)于現(xiàn)在的多數(shù)計(jì)算機(jī)來(lái)說(shuō)都沒(méi)有問(wèn)題。 第二個(gè)選項(xiàng)“video mode selection support”使啟動(dòng)的時(shí)候能夠使用字符模式的分辨率。 如果你希望一行能夠有更多的字的話,這通常會(huì)給你提供方便,不過(guò)通常你不必打開(kāi)它們。 下面兩個(gè)選項(xiàng)是試驗(yàn)性質(zhì)的,我建議你關(guān)閉它們。 圖37: 聲卡配置 . 在 這部分,你可以配置聲卡。 如果你的Linux發(fā)行版使用ALSA的聲卡驅(qū)動(dòng)(比如SuSE 6.3及以上版本),將“sound card support”作為可加載模塊就足夠了。 ALSA驅(qū)動(dòng)將會(huì)在待會(huì)兒被編譯并連接進(jìn)來(lái)(見(jiàn)“SuSE和ALSA聲卡驅(qū)動(dòng)”)。 如果你的發(fā)行版使用的是內(nèi)核的標(biāo)準(zhǔn)聲卡驅(qū)動(dòng),你必須正確選擇你使用的聲卡。 事實(shí)上,這里列出了所有牌子的聲卡,因此,理論上選擇聲卡不成問(wèn)題。 如果你的聲卡在你的發(fā)行版的標(biāo)準(zhǔn)內(nèi)核下工作的很正常,你也可以使用配置程序(比如SuSE的“yast2”)來(lái)找出你的聲卡使用什么驅(qū)動(dòng)。 請(qǐng)放心,聲卡并不是十分關(guān)鍵的:如果某些地方出錯(cuò),你將會(huì)失去音效,但是內(nèi)核仍然可以正常工作。 圖38:配置USB支持 . 我 的主板有USB接口,但是我并不使用它。但是如果我關(guān)閉USB支持,SuSE在啟動(dòng)時(shí)就給我一個(gè)錯(cuò)誤信息(Error Message)。 SuSE支持USB,因此它嘗試讀取需要的模塊,因此我將“Support for USB”作為可加載模塊。 雖然那些錯(cuò)誤信息(Error Message)對(duì)我來(lái)說(shuō)并沒(méi)有什么,但是我通過(guò)更巧妙的編譯USB驅(qū)動(dòng)的方法消除了它們。 最簡(jiǎn)單的辦法是將“Preliminary USB device filesystem”選項(xiàng)打開(kāi),然后加載一個(gè)特殊的USB驅(qū)動(dòng)。 因?yàn)槲业腜entium II主板已經(jīng)很老了,我選擇了“UHCI (Intel PIIX4, VIA, ...)”驅(qū)動(dòng)作為可加載模塊。 但是,如果你有一塊Intel芯片組的新主板,你必須選擇“UHCI Alternate Driver (JE) support”模塊,而如果是Compaq的計(jì)算機(jī),你應(yīng)該選擇“OHCI support”。 理論上,你只需要這三個(gè)模塊中的一個(gè),但是如果你不清楚的話,可以選擇所有模塊。 你的Linux發(fā)行版會(huì)自動(dòng)檢測(cè)出哪個(gè)模塊是它需要的,然后自動(dòng)加載它。 僅僅開(kāi)啟主板的USB端口還不夠,你需要指明使用哪個(gè)USB驅(qū)動(dòng)。 “USB Device Class drivers”下出現(xiàn)的列表有不同的選項(xiàng)。 所有這些都是很直觀的,幾乎不會(huì)出錯(cuò):如果還有疑問(wèn),閱讀幫助文檔。 圖39: 配置“kernel hacking”選項(xiàng) . 這很簡(jiǎn)單:不要打開(kāi)! 這是一個(gè)對(duì)于希望知道系統(tǒng)崩潰原因和讀取硬盤(pán)緩存的程序員來(lái)說(shuō)很有用的選項(xiàng):這個(gè)選項(xiàng)對(duì)于普通用戶來(lái)說(shuō)完全沒(méi)有作用。 ![]() 圖40: 保存并退出。 Pffft,我們已經(jīng)完成了配置工作。剩下的工作就是編譯和安裝內(nèi)核了。下面我們來(lái)討論這個(gè)問(wèn)題。 編譯內(nèi)核 點(diǎn)擊“Save and Exit”,你就可以將你的配置選項(xiàng)保存在“./.config”(如果你在/usr/src/linux目錄下編譯,就應(yīng)該在 /usr/src/linux/.config)中。 另外,如果你只想進(jìn)行一個(gè)小小的升級(jí),比如從2.4.5到2.4.6,將這個(gè)文件保存并復(fù)制到新內(nèi)核的目錄下也很方便。 用這種方法,你可以(通常)保存你所有老的選項(xiàng),這將節(jié)省很多時(shí)間。 同樣,你可以使用你的發(fā)行版的標(biāo)準(zhǔn)配置文件,通常是保存在/boot/config(復(fù)制到./.config來(lái)使用它)。 但是如果你升級(jí)你的內(nèi)核源碼,并且在編譯內(nèi)核的時(shí)候遇到了奇怪的問(wèn)題,這個(gè)文件(老的配置文件)是你首先應(yīng)該移除的! 當(dāng)然你為了安全起見(jiàn)需要修改,寫(xiě)下并且小心保存正常工作的內(nèi)核的配置。 編譯內(nèi)核的步驟如下: make dep make clean (針對(duì)老內(nèi)核) make bzImage make modules make modules_install 圖40已經(jīng)顯示了需要運(yùn)行“make dep”。 你當(dāng)然需要在Linux源碼目錄下運(yùn)行這些命令,通常是在/usrsrc/linux下。 2.0.x系列或者更老的內(nèi)核還需要在編譯新內(nèi)核前運(yùn)行“make clean”以移除以前的文件。 “make clean”可以防止一些很難對(duì)付的,但根據(jù)推測(cè)是由于沒(méi)有被清除的老的目標(biāo)文件(Object File,“*.o”)導(dǎo)致的古怪錯(cuò)誤信息(Error Message), 命令“make bzImage”編譯新內(nèi)核,但是并沒(méi)有安裝它。 你還可以使用“make”命令來(lái)編譯內(nèi)核,比如“make bzlilo”或者“make zImage”,但是這些命令可能導(dǎo)致以外的問(wèn)題。 多數(shù)內(nèi)核對(duì)于“make zImage”來(lái)說(shuō)太大了:你在編譯的時(shí)候?qū)?huì)看見(jiàn)一個(gè)錯(cuò)誤信息(Error Message)。 要使用“make bzlilo”命令,必須事先將所有配置保存在/etc/lilo.conf之類(lèi)的文件 中,但通常并不是這種情況。 因此最好不要使用這些命令。 “make modules”編譯可加載模塊:它們可以用“make modules_install”命令安裝。 如果當(dāng)前的內(nèi)核版本是2.4.6,這個(gè)命令將可加載模塊放在/lib/modules/2.4.6/目錄下:當(dāng)你編譯另外版本的內(nèi)核時(shí),目錄也隨之改變。 這樣,對(duì)應(yīng)特定版本內(nèi)核的可加載模塊就自動(dòng)的放在單獨(dú)的目錄中,以此來(lái)避免可加載模塊之間的沖突或者類(lèi)似問(wèn)題。 在啟動(dòng)的時(shí)候,內(nèi)核知道它應(yīng)該在哪個(gè)目錄里才能找到正確的可加載模塊。 但是如果你在編譯2.4.6的內(nèi)核后又將它重新編譯,/lib/modules/2.4.6目錄中的文件被重寫(xiě),而一些老的可加載模塊遺留下來(lái)。 那么,雖然這些老的可加載模塊并不被新內(nèi)核使用,它們?nèi)匀辉谀抢铩?通常,這并不是問(wèn)題,但是在安裝新的可加載模塊之前將老的移除總是一個(gè)好主意。 為了避免在安裝內(nèi)核的過(guò)程中出現(xiàn)問(wèn)題,你必須確定lilo的配置文件/etc/lilo.conf是正確的,并且你必須復(fù)制內(nèi)核和文件 “System.map”到正確的地方。 最后,你必須運(yùn)行“l(fā)ilo”命令。 也可以在DOS/Windows下使用“l(fā)oadlin”代替。 這兩種方法都會(huì)在下面討論。 配置lilo 通常你可以在/etc目錄找到lilo的配置文件/etc/lilo.conf。 用文本編輯器(ASCII Editor)打開(kāi)它:你或許安裝了一個(gè)完整的編輯器,比如XEmacs(運(yùn)行“xemacs /etc/lilo.conf &”),一個(gè)簡(jiǎn)單的全屏編輯器,比如kedit或者gedit(運(yùn)行“k(g)edit /etc/lilo.conf”),或者使用行編輯器,比如pico或者nano(運(yùn)行“pico /etc/lilo.conf”)。 lilo.conf看上去大概象這個(gè)樣子: boot = /dev/hda vga = normal read-only menu-scheme = Wg:kw:Wg:Wg lba32 prompt timeout = 300 message = /boot/message other = /dev/hda1 label = win98 image = /boot/bzImage label = linux-2.4.6 root = /dev/hda3 append = "parport=0x378,7 hdd=ide-scsi" image = /boot/vmlinuz.suse label = suse root = /dev/hda3 append = "hdd=ide-scsi" initrd = /boot/initrd.suse 每個(gè)系統(tǒng)和發(fā)行版的lilo.conf的詳細(xì)內(nèi)容或許和上面有些不同。 因此我將為你解釋這些這個(gè)文件。 前8行是已經(jīng)寫(xiě)好了的,通常你不必去更改它們。 第一行的命令“boot”表明應(yīng)該從哪個(gè)物理硬盤(pán)啟動(dòng),也就是說(shuō),“boot”指出了主啟動(dòng)記錄(Master Boot Record)的位置。 對(duì)于我來(lái)說(shuō),從/dev/hda,第一塊物理硬盤(pán)啟動(dòng)。 “vga”選項(xiàng)指出啟動(dòng)的時(shí)候使用標(biāo)準(zhǔn)VGA文本模式,80x25個(gè)字母。 “read-only”選項(xiàng)的意思是啟動(dòng)進(jìn)程首先將Linux分區(qū)以只讀(read-only)方式掛載(mount)。 在Linux啟動(dòng)期間,將檢查分區(qū)是否有錯(cuò)誤:待會(huì)兒它們將被以讀寫(xiě)(read and write)方式重新掛載(mount)。 “menu-scheme”行設(shè)置了lilo啟動(dòng)菜單所使用的顏色。 使用“l(fā)da32”使操作系統(tǒng)可以從1024柱面以后的扇區(qū)啟動(dòng),如果BIOS支持的話。 現(xiàn)在所有系統(tǒng)都支持LBA32(大硬盤(pán)模式)。 你可以通過(guò)BIOS升級(jí)來(lái)解決這個(gè)問(wèn)題,有些對(duì)于大硬盤(pán)來(lái)說(shuō)是必需的東西現(xiàn)在已經(jīng)可用了。 “prompt”命令強(qiáng)制lilo為用戶顯示一個(gè)提示,使用戶可以選擇自己想用的操作系統(tǒng)。 “timeout”選項(xiàng)給出了當(dāng)選擇提示給出后,啟動(dòng)默認(rèn)操作系統(tǒng)前,lilo等待輸入的時(shí)間(毫秒),啟動(dòng)進(jìn)程將啟動(dòng)第一個(gè)操作系統(tǒng)。 在我這里是Windows 98,因此不會(huì)使用Linux的人最后將會(huì)進(jìn)入Windows環(huán)境。 “message”選項(xiàng)規(guī)定了lilo啟動(dòng)的時(shí)候顯示的信息。 在SuSE中是Tux,Linux可愛(ài)的企鵝吉祥物,以及(當(dāng)然會(huì)有)“SuSE Linux 7.1”。 你可以通過(guò)輸入“xv /boot/message”或者“gv /boot/message”(甚至有時(shí)還可以輸入“gimp /boot/message”)看見(jiàn)這個(gè)信息:“xv”和“gv”(ghostview)是兩款可以用來(lái)查看不同種類(lèi)圖片的共享軟件 請(qǐng)注意,如果系統(tǒng)中沒(méi)有圖形登錄界面(比如在老的發(fā)行版中),/boot/message將不存在,這樣,啟動(dòng)信息將僅僅是文本信息。 理論上它將在啟動(dòng)時(shí)顯示你自己選擇的圖片,但是我還沒(méi)有實(shí)驗(yàn)成功過(guò)。 lilo的所有選項(xiàng)當(dāng)然都在man page里面有介紹,你可以通過(guò)“man lilo”或者“man lilo.conf”訪問(wèn)。 其他的選項(xiàng)是用來(lái)引導(dǎo)其他操作系統(tǒng)的。 你最多可以引導(dǎo)16個(gè)操作系統(tǒng)。 通常情況下,這足夠了。 你可以在“l(fā)abel=”行選擇操作系統(tǒng)。 默認(rèn)的Windows 98安裝在(還有更老版本的Windows和DOS,但不包括Windows NT和Windows 2000),就將它放在第一個(gè)主分區(qū)。 這樣,就只需要一行“other”和一行“l(fā)abel”。 第二個(gè)選項(xiàng),“image=/boot/bzImage”,標(biāo)簽(label)是“l(fā)inux-2.4.6”。 我的Linux根目錄是“/dev/hda3”。 “append= "parport=0x378,7 hdd=ide-scsi"”行高速內(nèi)核并口(Parallel Port)的地址和中斷號(hào)(端口0x378,中斷號(hào)7),并且標(biāo)明我的刻錄機(jī)“hdd”必須從虛擬SCSI(SCSI-emulation)尋址。 CD的名字由系統(tǒng)決定:在我的系統(tǒng)中,它叫“hdd”,但是在你的系統(tǒng)里,它可能叫其他名字。 使用中斷號(hào)通常是個(gè)人偏好的問(wèn)題。 中斷使打印的速度加快,但是如果你的并口打印機(jī)由合適的中斷,你可以不寫(xiě)這一行。 Linux默認(rèn)使用一種被稱作“登記(Polling)”的速度比較慢的方式,它允許內(nèi)核直接使用并口而不需要中斷號(hào)。 最后一個(gè)選項(xiàng),由“image = /boot/vmlinuz.suse”開(kāi)始,包含了SuSE配置過(guò)程中對(duì)lilo的配置:我手工加入了“append="hdd=ide-scsi” 行。 “boot/vmlinuz.suse”文件是發(fā)行版的標(biāo)準(zhǔn)內(nèi)核。 最好將這個(gè)內(nèi)核保留,以應(yīng)付緊急情況。 “initrd = /boot/initrd.suse”行只用于標(biāo)準(zhǔn)的安裝內(nèi)核(installation kernel):它規(guī)定了讀取一個(gè)被稱作“ramdisk”的鏡像,那是讀入內(nèi)存的一張?zhí)摂M磁盤(pán)。 “ramdisk”包括了正常啟動(dòng)Linux所需要的模塊:一個(gè)發(fā)行版的內(nèi)核當(dāng)然必須訪問(wèn)大量不同的硬件,那只能通過(guò)使用許多可加載模塊來(lái)實(shí)現(xiàn)。 希望你現(xiàn)在能夠知道運(yùn)行l(wèi)ilo前,你必須在什么地方存放你的Linux內(nèi)核。 在這個(gè)例子中,正確的命令應(yīng)該是: cp /usr/src/linux/arch/i386/boot/bzImage /boot cp /usr/src/linux/System.map /boot/System.map-2.4.6 lilo 在SuSE 7.3中你還可以象這樣再?gòu)?fù)制一份: cp /usr/src/linux/System.map /boot (之前已經(jīng)更名了原來(lái)的Systemp.map文件) 如果你已經(jīng)有了一個(gè)名為“bzImage”的內(nèi)核,而且你想保留它,你可以將新 內(nèi)核復(fù)制為“/boot/bzImage-2.4.6”,并且在“/etc/lilo.conf”中做相應(yīng)的更改:將/boot/bzImage改為 /boot/bzImage-2.4.6。 編譯過(guò)程將會(huì)重新創(chuàng)建System.map文件,它包含了內(nèi)核的一些重要參數(shù)。 命令“depmod -a”創(chuàng)建(create)了一個(gè)包含所有內(nèi)核可加載模塊的依賴關(guān)系的文件。 也就是說(shuō),內(nèi)核與可加載模塊之間的關(guān)系、可加載模塊之間的關(guān)系,還有/etc/modules.conf中所定義的關(guān)系。 在多數(shù)Linux發(fā)行版中,包括SuSE,都會(huì)在啟動(dòng)的時(shí)候運(yùn)行“depend -a”,但是確定/boot/System.map文件存在并且符合當(dāng)前內(nèi)核的版本是比較明智的。 命令“l(fā)ilo”將會(huì)安裝一個(gè)老內(nèi)核的新配置文件,或者一個(gè)新內(nèi)核。 如果你已經(jīng)用新編譯的內(nèi)核覆蓋了原來(lái)的/boot/bzImage,但是沒(méi)有運(yùn)行內(nèi)核,你將會(huì)得到一個(gè)無(wú)法工作的新內(nèi)核。 那個(gè)你保存起來(lái)的發(fā)行版自己的內(nèi)核卻仍然能夠工作,因?yàn)樗鼪](méi)有被覆蓋。 將老內(nèi)核保存起來(lái),并且認(rèn)真測(cè)試你的新內(nèi)核。 使用loadlin 如果你使用“l(fā)oadlin”來(lái)啟動(dòng)Linux,毫無(wú)疑問(wèn)你必須知道在那里找到這個(gè)方便的程序,也就是說(shuō),在C:\ loadlin。 事實(shí)上,所有的Linux發(fā)行版的第一張CD上“dosutils”目錄中都有“l(fā)oadlin”。 你還必須將新的Linux內(nèi)核復(fù)制到“C:\loadlin”(或者是另外的名字)所在的磁盤(pán)。 在啟動(dòng)Windows 98前,在DOS模式(譯者注:這里指的是DOS實(shí)模式,也就是開(kāi)機(jī)按F8選擇第五項(xiàng)“RealDOS mode”)下,你可以使用這個(gè)命令啟動(dòng)Linux: loadlin bzImage 在 通常情況下,當(dāng)你編譯了自己的內(nèi)核后,內(nèi)核中儲(chǔ)存的大多數(shù)配置參數(shù),比如根目錄的定位等,都是正確的,如果這樣的話,使用上面的命令來(lái)啟動(dòng)Linux應(yīng)該 是沒(méi)有問(wèn)題的。 輸入“l(fā)oadlin | more”(在DOS下),你可以得到幫助信息,還包含一個(gè)Internet上“l(fā)oadlin-HOTO”的鏈接。 你可以使用“l(fā)oadlin”來(lái)測(cè)試一個(gè)新內(nèi)核,騙過(guò)lilo:即“l(fā)oadlin”和“bzImage”一起放在一張1.44MB的軟盤(pán)上。 如果你使用啟動(dòng)軟盤(pán)啟動(dòng)DOS(帶EMM386支持,譯者注:EMM386.EXEshi DOS 5.0以上版本提供的擴(kuò)展內(nèi)存管理軟件,使DOS可以使用640k以上的內(nèi)存空間),絕對(duì)沒(méi)有問(wèn)題,然后你就可以通過(guò)“l(fā)oadlin”和 “bzImage”來(lái)啟動(dòng)Linux。 但是,你當(dāng)然必須有一塊DOS啟動(dòng)軟盤(pán)。 SuSE和ALSA聲卡驅(qū)動(dòng)程序 SuSE使用標(biāo)準(zhǔn)的ALSA(Advanced Linux Sound Architecture,高級(jí)Linux音效體系)聲卡驅(qū)動(dòng)程序。 這些驅(qū)動(dòng)程序比內(nèi)核使用的OSS計(jì)劃(Open Sound System Project)的音效更好。 如果你對(duì)Linux下的聲音要求比較嚴(yán)格,你絕對(duì)應(yīng)該使用ALSA聲卡驅(qū)動(dòng)。 這些驅(qū)動(dòng)并不是(以前的)內(nèi)核源碼的一部分,這意味著這些驅(qū)動(dòng)必須被單獨(dú)編譯和安裝。 ALSA驅(qū)動(dòng)的源碼放在SuSE發(fā)行版的“zq”部分:如果你不知道這是什么,請(qǐng)繼續(xù)閱讀。 用YaST或者YaST2安裝ALSA以使源碼被存放到“/usr/src/packages/”。 要編譯和安裝ALSA驅(qū)動(dòng),你需要按照下面的步驟進(jìn)行: rpm -bb /usr/src/packages/SPECS/alsa.spec cd /usr/src/packages/BUILD/alsa/alsa-driver-/ ./configure make install 第一行安裝源碼,包括驅(qū)動(dòng)的源碼,在“/usr/src/packages/BUILD/”目錄中。 另外,ALSA庫(kù)和工具(ALSA Libraries and Utilities)被直接編譯為了rpm包。 不幸的是,ALSA驅(qū)動(dòng)默認(rèn)沒(méi)有被編譯。 你必須手動(dòng)輸入上面兩行來(lái)安裝它們。 命令“./configure”在你的系統(tǒng)中查找必要的配置和文件,然后將它們放在一個(gè)配置文件里。 “make install”命令編譯所有ALSA驅(qū)動(dòng),同時(shí)將它們到/lib/modules/2.4.6/misc/目錄,提供給內(nèi)核使用。 現(xiàn)在,當(dāng)啟動(dòng)SuSE的時(shí)候驅(qū)動(dòng)程序?qū)⒆詣?dòng)安裝。 我承認(rèn)這些步驟有那么點(diǎn)討厭,但是,當(dāng)你尋找必需的聲卡驅(qū)動(dòng)的時(shí)候,你必須準(zhǔn)確的知道自己在干什么并且將聲卡支持更直接的加入到新內(nèi)核中。 如果你不使用SuSE,或者如果你希望你希望使用新版本的ALSA驅(qū)動(dòng),你可以到 http://www./ 下 載驅(qū)動(dòng)和相應(yīng)的庫(kù)文件以及工具。 這個(gè)站點(diǎn)的首頁(yè)張貼了ALSA計(jì)劃的最新消息(比如2002年4月,將ALSA驅(qū)動(dòng)整合到2.5系列內(nèi)核的代碼樹(shù)中)以及不同文件的下載鏈接。 下面我將展示怎么編譯ALSA驅(qū)動(dòng):你可以使用類(lèi)似的步驟編譯庫(kù)文件和工具。 將驅(qū)動(dòng)解包到一個(gè)比較方便的目錄,比如/usr/local。 進(jìn)入這個(gè)目錄,在這里是/usr/local/alsa-driver-/,運(yùn)行上面的命令,從 “./configure”開(kāi)始。 如果你的發(fā)行版沒(méi)有將ALSA驅(qū)動(dòng)作為標(biāo)準(zhǔn)聲卡驅(qū)動(dòng)的話,或許你會(huì)進(jìn)行一些其他的步驟來(lái)使它工作。 很不幸,這不是這篇內(nèi)容十分廣泛的文章所討論的內(nèi)容,但是你可以從下載的ALSA FAQ(Frequently Asked Questions)中得到更多的幫助。 PCMCIA支持(筆記本電腦) 在2.4.x之前,對(duì)PCMCIA的支持就已經(jīng)是內(nèi)核的標(biāo)準(zhǔn)內(nèi)容。 無(wú)論如何,官方的PCMCIA HOWTO討論了那些版本內(nèi)核的PCMCIA支持最好不使用。 現(xiàn)在,PCMCIA源碼(Pcmcia Source),包括在所有系列的內(nèi)核——2.0,2.2,2.4下都可以使用的腳本和驅(qū)動(dòng)。 我的經(jīng)驗(yàn)是,PCMCIA驅(qū)動(dòng)在重新編譯內(nèi)核后就無(wú)法工作了。 根據(jù)你的發(fā)行版,有兩種解決方法。 第一種是使用發(fā)行版自帶的源碼。將這些源碼安裝并編譯到一個(gè)rpm包中,然后你可以安裝它。 另外一種是從 http:///projects/pcmcia-cs/ )下載,解包,編譯,安裝最新版本的PCMCIA驅(qū)動(dòng),就像這樣: cp /etc/rc.d/pcmcia /etc/rc.d/pcmcia.SuSE cp ~/pcmcia-cs-3.1.?.tar.gz /usr/src cd /usr/src tar -zxf ./pcmcia-cs-3.1.?.tar.gz make config make all make install cp /etc/rc.d/pcmcia.SuSE /etc/rc.d/pcmcia 第一行和最后一行是用來(lái)解決一個(gè)SuSE特有的問(wèn)題的。 SuSE的PCMCIA初始化腳本(Pcmcia-initialization Script)/etc/rc.d/pcmcia在運(yùn)行“make install”命令的時(shí)候被覆蓋了。 如果你不小心將SuSE的原始腳本覆蓋了,你必須從“a1”部分重新安裝pcmcia包,將原始腳本復(fù)制到另外一個(gè)文件中,重新運(yùn)行“make install”,最后將原始腳本復(fù)制過(guò)來(lái)。 在SuSE下安裝PCMCIA支持的新rpm包應(yīng)該想下面這樣: rpm -i /cdrom/suse/zq1/pcmcia-3.1.?.spm cd /usr/src/packages rpm -bb ./SPECS/pcmcia-3.1.?.spec cd /RPMS/i386/ rpm -i --force ./pcmcia-3.1.?.rpm SuSEconfig 第一行中,我假定你已經(jīng)掛載(mount)到/cdrom并將從第6或者第7張CD安裝PCMCIA驅(qū)動(dòng), “rpm -i”命令安裝源碼,“rpm -bb”編譯pcmcia rpm包。 然后,你可以象安裝其他rpm包一樣安裝它。 注意,你必須使用“--force”選項(xiàng),否則rpm程序?qū)⒏嬖V你“pcmcia”已經(jīng)安裝了,然后會(huì)忽略新文件。 通常,當(dāng)你在SuSE下手動(dòng)安裝了rpm包后,你必須通過(guò)運(yùn)行SuSEconfig程序(注意大小寫(xiě))來(lái)激活更改。 當(dāng)SuSE的設(shè)置程序YaST或者YaST2安裝或修改一個(gè)新的包后,它們通常會(huì)自動(dòng)進(jìn)行設(shè)置。 你不必手動(dòng)激活。 要想真正使用PCMCIA支持,你還必須在編譯時(shí)打開(kāi)“network support”選項(xiàng),但是你 必須關(guān)閉其他所有網(wǎng)卡的驅(qū)動(dòng)。 然后,正如圖11所討論的,如果你想使用Internet,你當(dāng)然還必須打開(kāi)“TCP/IP support” 安裝modutils 正如上面已經(jīng)提到的,內(nèi)核使用一些被稱作“modutils”的程序來(lái)管理內(nèi)核。 這些程序包括: insmod (用來(lái)安裝可加載模塊), rmmod (用來(lái)移除可加載模塊) lsmod (顯示正在使用的所有可加載模塊), 還有很多其它的。輸入“man lsmod”命令,你可以找到如何使用這些不同的命令,有些是我在這里沒(méi)有提到的。 編譯和安裝“modutils”很簡(jiǎn)單: cd /usr/src cp ~/modutils-2.4.6.tar.bz2 . (假如那些文件在你的家目錄(home directory),“~”里) bzip2 -d modutils-2.4.6.tar.bz2 (unzip:這會(huì)花費(fèi)一定時(shí)間 ) tar -xvf modutils-2.4.6.tar cd modutils-2.4.6 ( 進(jìn)入“modutils”解包的目錄 ) ./configure (進(jìn)行系統(tǒng)特殊配置(system-specific configurations) ) make (編譯“modutils”:因?yàn)檫@僅僅是一個(gè)小小的編譯,因此速度驚人的快 ) make install (將“modutils”安裝到“/sbin/” ) 這就是你安裝“modutils”時(shí)所要做的全部事情。 注意,在這個(gè)例子中“modutils”碰巧跟內(nèi)核時(shí)相同的版本號(hào),但并不總是這樣。 內(nèi)核是否正常運(yùn)行? 新內(nèi)核已經(jīng)被配置,編譯,而且大概還被安裝到lilo里了。 重新啟動(dòng)計(jì)算機(jī),問(wèn)自己:我怎樣才能判斷我的新內(nèi)核是否正常工作呢? 當(dāng)你嘗試做某些事情的時(shí)候,你可以很容易的找出沒(méi)有工作的硬件設(shè)備,另外,在啟動(dòng)的時(shí)候,甚至在你進(jìn)行圖形登錄之前,內(nèi)核會(huì)在屏幕上顯示很多有用的信息。 這些信息不僅包括配置自動(dòng)診測(cè)到的設(shè)備(端口、中斷請(qǐng)求……),而且還包括驅(qū)動(dòng)程序不能正確初始化的錯(cuò)誤信息——不管是內(nèi)核的一部分還是可加載模塊。 閱讀這些信息可以及早得到某些特定問(wèn)題的警告。對(duì)于SuSE Linux來(lái)說(shuō),這很簡(jiǎn)單:內(nèi)核的每一部分如果正常啟動(dòng),將在屏幕的右邊顯示綠色的“done”,如果出現(xiàn)問(wèn)題,就顯示“failed”。 因?yàn)樾畔⒖梢栽谄聊簧蠞L動(dòng),所有的錯(cuò)誤信息都在登錄提示符的上邊。 如果你默認(rèn)使用的圖形界面登錄,你可以使用“++F1”來(lái)找到登錄提示符(字符界面)。 這樣,如果錯(cuò)誤信息的確跟你有關(guān),你至少可以對(duì)那里出現(xiàn)了問(wèn)題有一點(diǎn)線索。 類(lèi)似“Cannot find module”或者“Cannot load module”的錯(cuò)誤信息表明你沒(méi)有將某些你不應(yīng)該丟棄的部分加入到內(nèi)核中。 更改內(nèi)核的配置,然后重新編譯通??梢越鉀Q這些問(wèn)題。 注意,不必重新編譯整個(gè)內(nèi)核。 如果你只是忘記一些可加載模塊,重新執(zhí)行“make modules”和“make modules_install”就足夠了。 其實(shí),即使你重新編譯整個(gè)內(nèi)核也不是什么大問(wèn)題。 大多數(shù)內(nèi)核代碼已經(jīng)編譯,僅僅需要重新編譯丟失的部分。 簡(jiǎn)單的說(shuō),相對(duì)于初次編譯內(nèi)核來(lái)說(shuō),對(duì)內(nèi)核做小小的修改然后重新編譯的速度是非??斓?。 你可以喝一些咖啡,來(lái)等待編譯完成——一切都會(huì)很順利。 另外一種查看內(nèi)核啟動(dòng)信息的方式是使用“dmesg”命令。 直接運(yùn)行這個(gè)命令(不帶參數(shù))會(huì)將剛才的啟動(dòng)信息調(diào)出來(lái)。 將它們定向到一個(gè)文件,使用“dmesg > temp”,這樣你可以使用“more temp”或者使用自己喜歡的編輯器查看信息。(譯者注,還可以使用“demsg | more”) 總結(jié) 有了這份指南,你現(xiàn)在就可以開(kāi)始你編譯內(nèi)核的試驗(yàn)。玩內(nèi)核的最低要求恐怕就是你想玩。 你的大多數(shù)時(shí)間將會(huì)花在決定內(nèi)核的正確配置上,而在編譯的時(shí)候,你可以玩玩“freecell”或者做其他事情。 |
|
|