亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 1251 | 回復(fù): 0
打印 上一主題 下一主題

編譯你自己的Linux內(nèi)核(Kernel) [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2009-02-17 17:35 |只看該作者 |倒序瀏覽

你馬上就會發(fā)現(xiàn),你也可以獲得(get),配置(configure),編譯(compile)和安裝(install)屬于你自己的Linux內(nèi)核(Kernel)。
  
引言為什么你想要編譯并安裝一個完全屬于你自己的內(nèi)核(Kernel)? 可能是下列原因中的一種吧:

  • 新內(nèi)核提供更好的硬件支持能力。
  • 新內(nèi)核有某些特殊的優(yōu)點,例如,對多處理器(SMP)更好的支持, 或者是支持USB。這些特性已經(jīng)被加入到2.4.x內(nèi)核中。
  • 新內(nèi)核修正了一些BUG。
  • 你自己定制的內(nèi)核去除了多余的元素,因此它更快,更穩(wěn)定。
編譯(或說“軋制”)你自己的內(nèi)核需要對計算機(譯者注:不僅要對機器本身有了解,還要對Linux系統(tǒng)有一定的了解)有一定的理解——這是一個難題。 因此一個Linux新手是根本不會嘗試編譯內(nèi)核的。這篇文章中展示了一些在使用“make xconfig”命令編譯內(nèi)核過程中的截圖。 使用這個命令(“make xconfig”),用戶可以通過圖形用戶界面(GUI)和鼠標(biāo)來對內(nèi)核進行處理。 這里有差不多40張截圖,它們解釋了在某種特定的情況下為什么你需要或不能選擇某個特定的內(nèi)核選項(options)。 將這40幅截圖逐一討論看上去似乎有些夸張,但這的確是解釋內(nèi)核的內(nèi)部工作機理(internal workings)以及特定內(nèi)核選項存在的原因和工作原理的比較好的方法。 這些截圖是kernel-2.4.6的。最新的內(nèi)核是2.4.19,但是除去在菜單中有一些新的項目(e.g.對新硬件的支持)以外, 屏幕的顯示以及編譯的過程應(yīng)該是一樣的。建議你在開始編譯前把這篇文章打印出來,這樣你就可以隨時查找必要的信息!
本文的結(jié)構(gòu)如下。首先討論你在Internet的什么地方能夠找到內(nèi)核的源碼以及如何安裝這些源碼, 然后通過屏幕截圖討論使用圖形界面配置內(nèi)核。 一旦內(nèi)核配置完畢,它就需要被編譯,但是一個新編譯的內(nèi)核并不能直接使用。 首先,新內(nèi)核需要和引導(dǎo)程序“l(fā)ilo”一起安裝,然后,在使用lilo前你必須寫配置文件“/etc/lilo.conf”。 另外,還有需要指出一些特殊的要點(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還有一個問題,那就是ALSA聲卡驅(qū)動程序的音效支持。 這些驅(qū)動程序并不是內(nèi)核的一部分,它們需要被編譯進去然后重新安裝,因為原始的驅(qū)動程序通常沒有工作。 更麻煩的是,從一個系列的內(nèi)核轉(zhuǎn)到另一個系列的內(nèi)核,比如從2.2.x系列轉(zhuǎn)到2.4.x系列, 可能會由于使用某種(某些)內(nèi)核工具(kernel utilities)而產(chǎn)生一些問題。 這就是所謂的“modutils”(譯者注:可以看為“Modules Utilities”的所寫,這樣就不會對這個名稱感到費解了),包括代碼(code)需要載入(load)的內(nèi)核模塊(kernel module):圖3解釋了什么是內(nèi)核模塊。 有時新內(nèi)核不知道如何處理老的modutils,所以你必須編譯和安裝更新版本的modutils。 這樣的問題雖然不多但是它們的確存在,而且目前只能預(yù)先指出它們。
但是如果你完全按照本文的步驟進行,幾乎不會發(fā)生錯誤。新內(nèi)核被添加到lilo,或者被復(fù)制(copy)到loadlin所在的分區(qū)。 因此,在緊急情況下,你仍然可以通過老內(nèi)核啟動機器。然后可以在老內(nèi)核下試著解決新內(nèi)核的問題。 即使你遇到modutils的問題,你也可以從老內(nèi)核重新啟動計算機,然后通過將它們(內(nèi)核和modutils)分別編譯和安裝來修復(fù)(fix)這個問題: 所有新版本的modutils都對老內(nèi)核向下兼容,所以新modutils在老內(nèi)核下可以很好的工作。
  
安裝內(nèi)核源碼你在這一節(jié)所進行的所有工作都需要root權(quán)限,所以你必須以root登錄(login)。 首先,也是最重要的,你必須安裝內(nèi)核源碼,比如從安裝盤上。 在SuSE中,源碼是被放在“d”類(為開發(fā)準(zhǔn)備的文檔)的“l(fā)x_kernel”包中。 安裝適合你的發(fā)行版(distribution)的內(nèi)核是比較適當(dāng)?shù),因為不同的GUI在那時都會被自動安裝。 一旦這件事情完成,最新版本的Linux內(nèi)核的tar包,比如linux-2.4.6.tar.bz2可以從
http://www.kernel.org/pub/linux/utils/kernel/modutils/v2.4/
。 注意modutils的版本號和內(nèi)核的版本號可以不完全吻合:只需要下載并安裝最新的版本就行。 編譯并安裝modutils將在后面的“安裝modutils”討論,現(xiàn)在我們先討論內(nèi)核的安裝。
你機器上的內(nèi)核(譯者注:指的是你的老內(nèi)核)的源碼被放在/usr/src/linux/目錄下。 比較明智的做法是保證源碼的安全,比如通過更名(rename)linux目錄:
cd /usr/src
mv linux linux-2.2.19 (如果原來的內(nèi)核源碼是2.2.19.的)

只有當(dāng)你安全的保存了原始內(nèi)核后,你才可以解包新的內(nèi)核:你將會看見linux-2.4.6.tar.bz2默認(rèn)將所有東西解包到“l(fā)inux”目錄, 如果這個目錄已經(jīng)存在,它將重寫這個目錄,然后,你將會遇到一個麻煩:你無法重新編譯老內(nèi)核,你已經(jīng)沒有它的配置和其他東西。 在這個例子中,我在解包linux-2.4.6.的源碼后立即將“l(fā)inux”更名(rename)為“l(fā)inux-2.4.6”,并且創(chuàng)建一個新的符號鏈接“l(fā)inux”到“l(fā)inux-2.4.6”。 這樣的優(yōu)點是你可以馬上知道系統(tǒng)現(xiàn)在使用的內(nèi)核的版本。 另外,還可以很容易的安裝一個內(nèi)核補。╧ernel upgrade)。 命令是:(以root身份執(zhí)行,切記。
cd /usr/src
cp ~/linux-2.4.6.tar.bz2 (加入tar包已經(jīng)下載)
                         (進入你的家目錄(home-directory ),“~”)
bzip2 -d linux-2.4.6.tar.bz2 (這將花費一段時間                   )
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)你完成這個步驟后,你到kernel的目錄下,然后執(zhí)行:
cd /usr/src/linux
make xconfig (見圖1)


圖1:
執(zhí)行“make xconfig”命令后的用于定義(define)你的內(nèi)核的圖形界面。
這是用于定義(define)內(nèi)核的主菜單。你需要點選(click on)不同的選項。然后點擊“Save and Exit”保存你的選擇, 然后你就可以編譯和安裝你的內(nèi)核了(見圖40)。 但是我們還沒有到那一步。(才剛開始呢。
  
配置內(nèi)核(Configuring the kernel)下面,我展示了配置內(nèi)核的過程中的一些圖片。 每幅圖片都有為什么會選擇特定的選項的說明。 仔細(xì)閱讀這些例子,你會知道我這樣選擇的原因,你也可以更好的了解那些選項是適合你的。 “help”(幫助)提供了相同的信息。 你make xconfig自己的Linux發(fā)行版(distribution)時可以參考“help”。點擊“Help”,幫助文檔通常會建議你應(yīng)該選擇某個選項。
這些例子當(dāng)然不可能討論你所有的硬件設(shè)備。 但是它們能夠說明你應(yīng)該如何處理自己的硬件,如何查找內(nèi)核是否支持你的硬件。

圖2:
“code maturity level options”選項在這部分,你可以允許內(nèi)核的一些試驗選項(experimental options)。 有時,這些選項是必需的,比如,需要支持新的顯卡。 但是,多數(shù)情況下,如果這些試驗選項(experimental options)導(dǎo)致內(nèi)核不穩(wěn)定的話,最好撤銷這些選項。 在圖1中,你可以看見“IEEE 1394 (FireWire) support”和“Bluetooth support”選項處于灰色狀態(tài)。 它們對應(yīng)的代碼正處于試驗階段,因此你暫時不能選擇它們。
圖三: 可加載模塊支持
.
(從現(xiàn)在起,截圖都在超鏈接里,你可以自己在新的窗口里瀏覽它們)
可加載模塊是指內(nèi)核代碼(kernel code)的一些片斷,比如驅(qū)動程序,當(dāng)編譯內(nèi)核的時候它們也被單獨編譯。 因此,這些代碼不是內(nèi)核的一部分,但是當(dāng)你需要它的時候,它可以被加載并使用。 通常的建議是如果可能,將內(nèi)核代碼編譯成可加載模塊,因為這樣可以使內(nèi)核更小,而且更穩(wěn)定。 警告!千萬不要將文件系統(tǒng)(File System)部分的代碼編譯為可加載模塊,見圖32。 如果你犯了這個錯誤,將文件系統(tǒng)(File System)部分的代碼編譯為可加載模塊,結(jié)果將是內(nèi)核無法讀取它自己的文件系統(tǒng)。 然后內(nèi)核無法加載它自己的配置文件——一些很明顯是在正常啟動Linux時所必需的東西。 你將會發(fā)現(xiàn)我很少使用可加載模塊:我喜歡我的內(nèi)核能夠直接和硬件對話,但這只是我自己的偏好。
圖4:選擇處理器類型(processor type)和特征(features)
.
在這里,你可以選擇你的處理器(Processor)的類型,決定是否選擇不同的選項。 通!/dev/cpu”選項更高級,多數(shù)用戶并不需要選擇它。 “High Memory Support”只有當(dāng)你的計算機有超過1GB內(nèi)存(不是磁盤空間)時才是必須的。 多數(shù)計算機的內(nèi)存從64到512MB(并且擁有8到60GB硬盤空間),因此“High Memory Support”通常并不使用。 如果你的計算機是386或486SX的話,你必須打開“Math Emulation”選項。 這些老系統(tǒng)沒有Linux需要的浮點運算單元(Math Emulation,也稱數(shù)學(xué)協(xié)處理器),所以必須選擇“Math Emulation”選項。 實際上現(xiàn)在所有的處理器都集成了浮點運算單元(譯者注:從586級開始所有CPU集成了浮點運算單元),所以通常你可以不選擇這個選項。 “MTRR”選項允許在PCI或者AGP總線眾進行更快速的通訊。 由于現(xiàn)在所有系統(tǒng)都將它們的顯卡接在PCI或AGP總線上,你通常需要選擇“MTRR”:無論如何,打開這個選項通常都是安全的——即使你的機器沒有使用PCI或AGP總線的顯卡。 對稱多處理器(SMP)需要能夠支持超過一個處理器的主板,比如一塊支持雙Pentium II處理器的主板。 “Symmetric multi-processing”選項保證內(nèi)核能夠以最佳方式加載雙處理器。 最后一個選項(“APIC”選項)通常也需要多處理器,但它通常是關(guān)閉的。
圖5: 常規(guī)內(nèi)核選項
.
在這里,你可以制定特定的內(nèi)核常規(guī)選項。 通常每個人都會選擇“Networking support”,因為你通常需要它,比如Internel。 Linux有很重的Internet偏向,而且它在沒有聯(lián)網(wǎng)的情況下無法充分發(fā)揮優(yōu)勢。 另外,許多其他的操作也網(wǎng)絡(luò)支持——即使它們看上去跟網(wǎng)絡(luò)沒多大關(guān)系。 內(nèi)核在沒有網(wǎng)絡(luò)支持選項的情況下甚至無法編譯。簡而言之:一定要打開“Networking support”選項。 現(xiàn)在的所有系統(tǒng)都使用PCI總線,所以你應(yīng)該選擇相關(guān)選項。 “PCMCIA/CardBus support”選項處于灰色不可用狀態(tài),因為你剛才已經(jīng)選擇你不虛妄使用試驗代碼(見圖2)。 如果你使用筆記本電腦,你當(dāng)然需要內(nèi)核支持PCMCIA/CardBus以便使用網(wǎng)卡或者調(diào)制解調(diào)器(modem,即通常所說的“貓”)。(請參考“PCMCIA支持(筆記本電腦)”) “System V IPC”允許程序通信和同步,“BSD process accounting”保持諸如進程結(jié)束時產(chǎn)生的錯誤代碼的東西,“Sysctl support”允許程序修改某些內(nèi)核選項而不需要重新編譯內(nèi)核或者重新啟動計算機。 這些選項通常是打開的。 現(xiàn)在的Linux發(fā)行版(distributions)以ELF格式作為它們的“內(nèi)核核心格式”(kernel core (/proc/kcore/) format): 這是不同系統(tǒng)庫(system libraries)的標(biāo)準(zhǔn)格式,比如那種格式的提供給程序使用的系統(tǒng)代碼片斷。 “ELF”是已淘汰的“a.out”格式的繼承者,和Microsoft Windows的.dll文件。 現(xiàn)在,所有Linux程序都使用ELF庫(ELF library),不幸的是有些老的程序仍然需要a.out格式支持。 一個典型的例子是“Word Perfect 8 for XWindow”:這個應(yīng)用程序只有在a.out格式下可用,所以“xwp”無法在沒有a.out格式支持的情況下運行。 如果你想用“xwp”,將“a.out”作為一個可加載模塊。 我還把“MISC”作為一個可加載模塊。 原則上,我并不使用它,但是如果你經(jīng)常使用java,python或者DOS模擬器“DOSEMU”,這樣可能更方便。 我還打開了“Power Management support”和“Advanced Power Management BIOS support”選項(在圖5中沒有顯示)。 ATX主板需要這兩個選項來自動關(guān)閉計算機(turn off the computer,包括關(guān)閉電源)。 另外的電源管理功能被關(guān)閉是因為它們在XWindow下無法正常工作,而我通常在XWindow下使用Linux。 KDE和Gnome有它們自己的標(biāo)準(zhǔn)電源管理功能。
圖6:配置存儲設(shè)備(Memory Technology Devices)
.
你需要這個選項來使Linux可以讀取閃存卡(Flash Card)之類的存儲器。 閃存卡通常用于數(shù)碼相機。 通過這個選項,Linux可以讀取閃存卡(從特殊的設(shè)備中,比如讀卡機),并且將圖片保存為.jpg格式。 除非你確定你需要它,否則不必打開它:如果你發(fā)現(xiàn)自己需要,你可以在以后加上。
圖7:配置并口(parallel port)
.
在USB技術(shù)出現(xiàn)以前,并口是最常用的連接計算機和打印機、掃描儀的方式。 我的打印機使用了一個并口,所以我希望這個端口在Linux下可用。 注意 ,配置并口和配置打印機不同:這將在后面的圖28討論。
圖8:配置即插即用(PnP)設(shè)備
.
幾乎所有人都有即插即用設(shè)備,因此需要這個選項的支持。 打開這個選項使內(nèi)核能夠自動配置即插即用設(shè)備并且使它們在系統(tǒng)中能夠使用。 有時需要在BIOS中打開“Plug & Play OS”,否則Linux(當(dāng)然Windows也一樣)無法配置即插即用設(shè)備。 “ISA Plug & Play support”選項需要以即插即用模式運行的ISA卡(ISA Card)。 例如AWE64聲卡。ISA總線(ISA bus)從來都沒有即插即用標(biāo)準(zhǔn),這增加了配置這些板卡的難度。 在2.4.x內(nèi)核之前的早些時候,Linux用戶在啟動時必須呼叫(call)“isapnp”程序(isapnptools包,使用rpm qil isapnptools查看包含的所有文件)。 “isapnp”讀取“/etc/isapnp.conf”文件。 這個文件包含不同板卡使用的所有端口,地址和中斷。 如果/etc/isapnp.conf中的信息不正確,或者“isapnp”沒有被激活,即插即用設(shè)備就無法使用,甚至網(wǎng)卡、modem、聲卡也無法工作。 打開“ISA Plug & Play support”選項來代替以前的工序:不再需要/etc/isapnp.conf文件。 檢測和配置工作都自動進行。 在SuSE 7.1中,在編譯2.4.x內(nèi)核后我必須重命名/etc/isapnp.conf為“/etc/isapnp.conf.old”之類的名稱。因為內(nèi)核和“isapnp”使用相同的資源,造成很慘的后果。 問題在于SuSE 7.1(以及更老的版本)在啟動時自動激活“isapnp”,即使內(nèi)核已經(jīng)包括了對即插即用的必要支持。 這只是對于老Linux系統(tǒng)而言,新的系統(tǒng)默認(rèn)不使用“isapnp”
圖9: 配置塊設(shè)備(block devices)
.
事實上,每個人都要使用軟盤(floppy),所以這個選項要打開(或者,象我這樣,作為一個可加載模塊)。 倘若/etc/modules.conf或者/etc/conf.modules文件在你的Linux發(fā)行版中已經(jīng)被適當(dāng)配置了,當(dāng)需要訪問軟盤的時候,內(nèi)核會自動加載必須的模塊。 如果你選擇了圖3中適當(dāng)?shù)倪x項,你的使用應(yīng)該沒有問題。 訪問軟盤當(dāng)然內(nèi)核必須能夠讀取軟盤的文件系統(tǒng)。 因此你必須正確完成圖32的工作(配置文件系統(tǒng))。 其他的選項在你使用并口鏈接IDE存儲設(shè)備的時候是必需的,但是它們通常是關(guān)閉的。 “l(fā)oopback device support”選項可能例外。 在Linux下,刻錄(burn)光盤之前你通常需要制作一個光盤鏡像,在查看鏡像文件的內(nèi)容時需要“l(fā)oopback device”。 我選擇了這個選項(第五行)作為可加載模塊(在圖9中沒有顯示出來)。
圖10: 配置多驅(qū)動器(multiple devices)
.
普通Linux用戶通常不需要RAID(廉價冗余磁盤陣列)或者LVM支持。 “RAID”的意思是系統(tǒng)使用兩塊或兩塊以上硬盤存儲并行信息。 當(dāng)一塊磁盤出現(xiàn)問題的時候另一塊可以繼續(xù)工作,系統(tǒng)不停頓。 LVM讓使用增加一塊硬盤來擴展一個分區(qū)成為可能。。 在實際應(yīng)用中,這意味著你不必重新分區(qū)或?qū)⒁粋小的分區(qū)復(fù)制到一個大分區(qū)中。 路徑名也不會改變。 這可能會十分方便,但是普通用戶并不需要它。
圖11: 網(wǎng)絡(luò)配置選項
.
你需要“Packet Socket”選項來與網(wǎng)卡進行通信而不需要在內(nèi)核中實現(xiàn)網(wǎng)絡(luò)協(xié)議。 在這里我可以簡捷一些:一般情況下,打開這個選項。 大多數(shù)選項是關(guān)閉的,除非你需要特殊的支持。 比如,我選擇了“Network packet filtering (replaces ipchains)”,因為我使用了SuSE的標(biāo)準(zhǔn)防火墻(Standard Firewall)。 防火墻可以保護你的機器不受來自外部Internet的攻擊——至少當(dāng)你正確配置了防火墻的時候是如此。 內(nèi)核級的防火墻保護顯然是十分優(yōu)越的。 圖12展示了在“network packet filtering”選項中的高級選項(Further choices)。 你需要“Unix domain sockets”來進行網(wǎng)絡(luò)鏈接,但也可以使用其他的東西: XWindow要自動使用Unix sockets,所以如果沒有打開這個選項,XWindow將無法啟動。 通常這個選項是打開的。 “TCP/IP networking”選項包括了Internet和內(nèi)部網(wǎng)絡(luò)所需要的協(xié)議。 通常你會希望激活TCP/IP支持。 如果你不確定是否應(yīng)該打開一個選項,參考一下幫助文檔。 如果你還是不知道是否應(yīng)該打開它,一般來說,就把它打開,然后通過試用來決定是否保留。 將某些特定的選項編譯為模塊也是一個很好的辦法。
圖12:配置IP過濾(防火墻)
.
為了使防火墻能夠正常工作,SuSE Linux需要對ipchains的兼容支持(Backwards Support)。 因此,我為我的SuSE Linux打開了這個選項。 如果你也在其他發(fā)行版中使用了防火墻,請參考它們的手冊。
圖13: 配置電話技術(shù)支持(Telephony Support)
.
這個選項只有當(dāng)你在計算機中使用電話卡的時候才有用,比如在Internet上打電話。 大多數(shù)普通用戶沒有電話卡,因此不需要這個選項。
圖14:配置對ATA,IDE,MFM和RLL的支持(硬盤的通訊協(xié)議)
.
幾乎每個人都需要這些協(xié)議,除非你的機器只有SCSI硬盤而沒有其他任何類型的硬盤。 因此,大多數(shù)用戶都應(yīng)該把它打開。 點擊它下面的那一欄將會出現(xiàn)一個有更詳細(xì)配置選項的菜單。 這些將在下面討論。 因為它們很重要,因此這里有三幅截圖。仔細(xì)填寫它們:它們極為重要!
圖15:配置對ATA,IDE,MFM和RLL的支持:截圖1
.
最上面的選項是每個使用IDE/ATAPI界面的人都需要的。 包括硬盤,磁帶機,ZIP盤,光驅(qū)(CDROM)和刻錄機(CD-R(W))。 基本上現(xiàn)在的所有計算機(譯者注:這里指的是PC)都使用IDE/ATAPI界面,因此這個選項必須打開。 “include IDE/ATA-2 DISK support”選項在支持硬盤的時候需要。 因此這個選項也必須打開,除非你的機器是一個純粹的SCSI系統(tǒng)。
圖16:配置對ATA,IDE,MFM和RLL的支持:截圖2
.
如果你有ATAPI CDROM的話,應(yīng)該打開“include IDE/ATAPI CDROM support”選項。 ATAPI的CD-R(W)需要仿真為SCSI的才能被訪問。SCSI仿真可以用來訪問CDROM和CD-R(W)。 如果你使用仿真SCSI的方式來訪問CDROM,你將會遇到問題,比如當(dāng)你掛載(mount)CD的時候出現(xiàn)錯誤信息(Error Message),或者使用CDROM播放CD唱片(Audio CD) 最好的辦法是象圖16這樣,將“include IDE/ATAPI CDROM support”和“SCSI emulation support”選項都打開。 需要SCSI仿真的設(shè)備通常是CD-R(W),可以在/etc/lilo.conf中加入“append="hdd=ide-scsi":”行進行定義,這將在“配置lilo”中進行討論。 因為我有一個使用ATAPI界面的內(nèi)置ZIP驅(qū)動器,所以我把“include IDE/ATAPI FLOPPY support”選項打開。 如果你有軟盤類的驅(qū)動器(譯者注:包括ZIP盤、LS-120等大容軟驅(qū),但不包括MO磁光盤)。 大部分主板使用“PCI IDE”(譯者注:就是指通過占用PCI總線帶寬進行通信的IDE接口)對硬盤、CDROM和軟驅(qū)進行訪問,因此這個選項必須打開。 同樣的有兩種開啟DMA的可能性。 DMA使你的硬件直接訪問內(nèi)存,而不需要處理器的干預(yù)。 因此,正如你所希望的,IDE磁盤的訪問速度會加快。 “sharing PCI IDE interrupts support”是關(guān)閉的,因為你通常不需要它。 的確,某些IDE控制器允許和其他設(shè)備共享中斷,比如網(wǎng)卡。 不幸的是,共享IDE中斷會使磁盤性能下降,因此通常你不需要共享中斷,除非這是解決硬件問題的唯一辦法。
圖17:配置對ATA,IDE,MFM和RLL的支持:截圖3
.
我的主板有一顆Pentium II CPU,而且使用的是Intel的芯片組,因此我希望能夠?qū)υ撔酒M提供特殊支持。 當(dāng)你選擇你自己的內(nèi)核選項時,你應(yīng)該看看圖17沒有顯示的其他芯片組。
圖18: 配置SCSI支持
.
如果你有一塊SCSI卡,你當(dāng)然需要打開相關(guān)選項。這張截圖只顯示了當(dāng)你為你的CD-R(W)選擇“SCSI emulation support”(圖16)時需要的選項。
圖19: 配置I2O設(shè)備支持(I2O Device Support)
.
如果你有I2O界面,你必須選擇這個選項。大多數(shù)人沒有,如果你也沒有的話,可以直接將它關(guān)閉。
圖20: 配置網(wǎng)卡支持(Network Device Support)
.
我從來都沒有在沒有網(wǎng)卡支持的情況下將Linux內(nèi)核編譯成功過。 因此,你應(yīng)該打開這個選項。 你還應(yīng)該打開虛擬驅(qū)動(Dummy Driver),作為內(nèi)核的一部分或者一個可加載模塊。 當(dāng)沒有物理網(wǎng)卡的時候,Linux需要一塊虛擬網(wǎng)卡(Dummy Network)。即使已經(jīng)有了物理網(wǎng)卡,Linux仍然經(jīng)常使用虛擬網(wǎng)卡。 在圖21所示的菜單中,你可以選擇網(wǎng)絡(luò)類型和網(wǎng)卡。 注意,如果你想要通過modem來訪問Internet的話,你需要進行更多的設(shè)置: 你必須打開“PPP support for async serial ports”(用于COM端口)或者“PPP support for sync tty ports”(用于通過諸如SyncLink adapter進行的高速連接)選項以提供PPP支持。 如果你沒有打開它們,內(nèi)核將會告訴你PPP模塊(PPP Module)不存在——即使你已經(jīng)編譯了,錯誤信息(Error Message)對于查找真正問題的所在幾乎沒有作用。 你可以將它們都選上,這樣可以避免一些問題:如果內(nèi)核需要它們,就會使用它們,如果不需要,就不用。
圖21:配置以太網(wǎng)卡(Ethernet Device)
.
我的以太網(wǎng)卡是一塊使用3c509/3c529芯片的3COM百兆網(wǎng)卡。 因為我并不需要與網(wǎng)絡(luò)進行物理連接(我有網(wǎng)卡,但是我并不通過modem來訪問網(wǎng)絡(luò)),因此我將這個趨同編譯成一個可加載模塊,以便萬一要需要網(wǎng)卡的時候可以使用。 你當(dāng)然需要選擇與你機器的情況相符的網(wǎng)絡(luò)類型和網(wǎng)卡。另外,你必須使用諸如SuSE Linux下的“yast2”之類的配置程序配置網(wǎng)絡(luò)鏈接。
圖22: 配置業(yè)余廣播支持(Amateur Radio Support)
.
如果你希望使用業(yè)余廣播支持(Amateur Radio Support),應(yīng)該打開這個選項,并且打開相應(yīng)的驅(qū)動。 多數(shù)人不需要這個選項。
圖23: 配置紅外線(無線)通訊支持
.
如果你有無線設(shè)備,比如無線鼠標(biāo)或無線鍵盤,你應(yīng)該打開這個選項。 多數(shù)桌面機器不需要這個選項。
圖24: 配置ISDN
.
在這里你可以打開對ISDN卡的支持。 你必須知道自己使用的是什么板卡和芯片:你需要通過這些信息來選擇正確的設(shè)備。
圖25: 配置老CDROM
.
在486和386機器中,CDROM并不是通過硬盤IDE(ATAPI)控制器連接的,而是通過聲卡或一塊特殊的板卡。 使用這些老CDROM需要選擇對應(yīng)的驅(qū)動。 這個選項在現(xiàn)在的系統(tǒng)中顯得多余。
圖26: 配置Input Core Support
.
這個選項提供了2.4.x內(nèi)核中最重要的特性之一的USB支持。 Input core support是處于內(nèi)核與一些USB設(shè)備之間的層(Layer)。 圖38顯示了可供選擇的USB設(shè)備,幫助文檔也指明了那些設(shè)備需要“input core support”:見圖38。 如果你擁有其中一種USB設(shè)備,你必須打開“input core support”選項。 現(xiàn)在所有的主板都有USB接口,所以,原則上你應(yīng)該打開它。但是,我清楚自己并不需要USB支持,所以我關(guān)閉了它。
圖27: 配置字符型設(shè)備(Character Devices):截圖1
.
最上面的選項(“virtual terminal”)允許在XWindow中打開xterm和使用字符界面登錄。 通常這個選項是打開的。 第二個選項(“support for console on virtual terminal”)告訴內(nèi)核將諸如模塊錯誤、內(nèi)核錯誤啟動信息之類的警告信息發(fā)送到什么地方, 在XWindow下,通常設(shè)置一個專門的窗口來接收內(nèi)核信息,但是在字符界面下,這些信息通常被發(fā)送到第一個虛擬終端(Virtual Terminal)(CTRL+ALT+F1)。 將這個選項打開。 你還可以選擇將信息發(fā)送到串口(Serial Port)設(shè)備,比如打印機或其他的終端(第四個選項)。 如果將信息發(fā)送到打印機,你還必須使用選項三激活串口。 同樣,如果你使用串口鼠標(biāo)(Serial Mouse),你也必須激活串口。 再說一遍,選項三(“standard/generic (8250/16550 and compatible UARTs) serial support”)通常是打開的。 在我的系統(tǒng)中,我將它編譯為一個可加載模塊。原因是在啟動的時候SuSE老抱怨“serial support”丟失,而如果確定模塊的確存在,將其編譯為可加載模塊是避免上述抱怨的的好辦法。 配置字符型設(shè)備是極為重要的工作。 如果你的配置不正確,你有可能得到一個根本不能工作的系統(tǒng)。 因此圖28到圖30討論了更多的相關(guān)選項。
圖28: 配置字符型設(shè)備(Character Devices):截圖2
.
如果你想使用遠程使用自己機器上的xterm,比如通過telnet或者ssh,你必須打開“unix98 PTY support”選項。 桌面系統(tǒng)看上去似乎不需要這個選項,但是許多后臺進程需要使用這個選項。 因此,無論如何,將它打開是個好主意,至少可以避免啟動時顯示錯誤信息(至少SuSE是這樣)。 所有擁有并口打印機的人當(dāng)然需要“Parallel printer support”。 不過,并不是所有人都需要并口:USB打印機就不需要。 內(nèi)核信息可以通過打開“Support for console on line printer”選項傳送到并口:通常,你并不需要它。 如果你有某些設(shè)備需要占用并口,你需要“support for user-space parallel port device drivers”選項,但是通常不必。 同樣,你通常不需要“I2C support”選項:這是視頻處理卡所需要的,但是如果你發(fā)現(xiàn)你需要它,你通?梢栽谝院蠹尤氲絻(nèi)核中——只要你覺得內(nèi)核運行得好。 如果你使用鼠標(biāo)和游戲桿,你需要打開相應(yīng)的支持,但是并不是所有鼠標(biāo)都使用這個驅(qū)動(見圖29)。 現(xiàn)在的CD-R(W)使需要“QIC-02 Tape support”的磁帶機(Tape Drives)大量閑置,因此這個選項通常是關(guān)閉的。
圖29: 配置字符型設(shè)備:鼠標(biāo)
.
如果你使用串口鼠標(biāo),你根本不需要這個選項的任何項目,但是所有其他類型的鼠標(biāo)則需要在這里進行參數(shù)配置。 如果你使用最初的總線鼠標(biāo)(ORIGINAL Bus Mouse)你需要打開最上面的選項。 現(xiàn)在的許多計算機使用另外一種鼠標(biāo),通常(而且是錯誤的)稱作“busmouse”或者“PS/2鼠標(biāo)”。 這些鼠標(biāo)通常連接到/dev/aux,并且插在一個與鍵盤相同的小接口中。 通常,這種鼠標(biāo)通過鍵盤來連接到計算機。 要讓這些鼠標(biāo)正常工作,你必須打開如圖29所示的選項,“mouse support (not serial and bus mice)”和“PS/2 mouse (aka "auxiliary device" support)”。
圖30: 配置字符型設(shè)備:截圖3
.
這些是圖28和圖30中沒有討論的內(nèi)核選項。 它們通常是關(guān)閉的。 “Ftape, the floppy tape device driver”選項需要對連接到軟驅(qū)控制器的磁帶機的支持。 甚至即使你有一個那樣的磁帶機,這個選項都不是必須的,至少不是首要的。 其他選項需要3D顯卡。 如果你有一塊連接到AGP總線(AGP Bus)的顯卡,你需要打開AGP支持,還需要相應(yīng)的驅(qū)動(在/dev/agpgart(AGP支持))。 注意,你可以編譯一個不包含這些選項,但是能夠正常工作的內(nèi)核,但那沒必要! 如果沒有這些選項,XWindow 4.0或者更高版本(被現(xiàn)在的多數(shù)發(fā)行版使用)將無法工作。 我的機器有一塊AGP顯卡,nVidia TNT2,但是內(nèi)核的相應(yīng)模塊并不支持這塊顯卡(nVidia拒絕透露開發(fā)驅(qū)動所必須的技術(shù)細(xì)節(jié))。 很不幸,打開AGP支持對于我來說沒有多大意義。 雖然有這個問題,我仍然可以在不需要內(nèi)核驅(qū)動的情況下使用XWindow 4.0。 “Direct rendering support”是為XWindow 4.0提供的圖形加速選項。 要想使用這個選項,你的顯卡必須能夠被支持,而且你必須使用XFree86 4.0及以上版本。 另外,你還需要打開“AGP support”選項。 你可以編譯一個不包含這些選項的內(nèi)核,它照樣可以正常工作。
圖31: 配置多媒體設(shè)備“Multimedia Devices”
.
如果你有一塊視頻處理卡或者廣播卡,需要打開這個選項。 跟前面一樣,這個選項不是必需的。
圖32: 配置文件系統(tǒng)(File System):截圖1
.
在這里,你可以指定Linux能夠訪問的文件系統(tǒng)。 或許你希望制作一個能夠訪問Windows分區(qū)和Windows軟盤的內(nèi)核,但是你必須保證內(nèi)核可以訪問Linux自己的ext2文件系統(tǒng),或者是更新的ReiserFS文件系統(tǒng)。 如果你沒有這樣做,Linux會無法啟動,因為內(nèi)核無法讀取它自己的啟動盤(正如圖3中所討論的那樣)。 要想訪問DOS/Windows軟盤和分區(qū),你需要打開“DOS FAT support”選項:但是要想訪問Windows NT/2000的分區(qū),你需要另外一個只讀(Read-only)驅(qū)動,這將在后面進行選擇。 要想讀寫DOS/Windows分區(qū)和軟盤,你需要打開“MSDOS fs support”選項(譯者注:注意,“DOS FAT support”并不提供讀寫功能)。 事實上,每個人都希望這樣,因此通常這個選項是開著的。 “VFAT”需要Windows95/98的長文件名支持。我的機器是一個可以通過lilo(見“配置lilo”)啟動Windows 98和Linux的雙重啟動系統(tǒng)(dual boot system)。 因此,我需要激活“VFAT”。 你需要加入對ISO 9660的支持來讀取標(biāo)準(zhǔn)格式的光盤(CD)。 “Joliet extensions”選項允許在ISO 9660標(biāo)準(zhǔn)中使用長文件名。 多數(shù)人都希望能夠讀取現(xiàn)在的光盤,因此這些選項通常也是打開的。 圖33詳細(xì)講述了一些附加選項,其中包括包括Linux的ext2文件系統(tǒng)。
圖33: 配置文件系統(tǒng):截圖2
.
/proc目錄中的文件包含了關(guān)于系統(tǒng)狀態(tài)的許多重要信息,比如那些中斷正在使用。 一般來說,你應(yīng)該把這個選項(“/proc file system support”)打開。。 “Second extended fs support”選項針對Linux的標(biāo)準(zhǔn)文件系統(tǒng)(Ext2 FS) 你必須打開這個選項,并且編譯進內(nèi)核(不是作為可加載模塊)! 圖32和33沒有顯示“ReiserFS”選項,它也可以在這里打開:Ext2文件系統(tǒng)的繼承者,ReiserFS能夠更好的對付由于斷電或者類似情況而帶來的對文件系統(tǒng)的破壞。 目前ReiserFS仍然處于開發(fā)階段,因此被標(biāo)志為試驗代碼。 即使是這樣,多數(shù)發(fā)行版現(xiàn)在都已經(jīng)支持ReiserFS,但是,雖然ReiserFS被認(rèn)為會在將來取代Ext2,我現(xiàn)在并不推薦將它作為所有分區(qū)的文件系統(tǒng)。 如果你(在Windows下)使用一個叫“packetCD”的將光盤虛擬成低速磁盤的軟件,你需要打開“UDF file system support”選項 這對在與其他PC交換數(shù)據(jù)時十分方便。 在Linux下通過將這些被封包的光盤掛載(mount)為UDF文件系統(tǒng)也可以進行讀取,比如使用命令“mount -t udf /dev/scd0 /cdrom”。 這一部分還包括“Network file systems”、“partition types”和“Native language support”選項。 你不必選擇“Network file systems”,除非你的計算機處于一個需要使用“Network file systems”選項的大型網(wǎng)絡(luò)之中,“SMB file support”選項也是一樣,對于普通的單機(Standalone Computer)來說,并不需要這些選項。 “Partition Types”選項是一個很高級但對于有效的使用Linux內(nèi)核來說并不必要的選項。 最好是關(guān)閉它。 圖34和35更詳細(xì)的解釋了“Native Language Support”選項。
圖34:配置“native language support”選項:截圖1
.
在這個菜單中,你可以選擇那些編碼將被Linux用來處理DOS和Windows下的文件名。 圖34的編碼表通常是用于DOS文件名的。圖35NLS表中的是用于長文件名的。 圖34中最上面的選項“Default NLS option”決定那種語言是系統(tǒng)的標(biāo)準(zhǔn)語言。 圖35描繪和詳細(xì)解釋了“iso8859-15”選項。
圖35:配置“native language support”:截圖2
.
你需要使用“NLS ISO 8859-15”選項來正確復(fù)制(reproduce)Windows的FAT(文件分配表)和光盤文件系統(tǒng)(CD File System)的長文件名擴展(Joliet extensions),這通常是一個好主意。 “NLS ISO 8859-15”選項對于西方語言來說是最適當(dāng)?shù)模宜藲W洲字符。 因此,這個編碼表通常都會被編譯進去。 “NLS ISO 8859-1”表是以前的西方語言編碼表,但是沒有包括歐洲字符。
圖36: 配置控制臺驅(qū)動
.
“VGA text console”選項在VGA模式下啟動字符模式。 多數(shù)人都需要它,因此這個玄學(xué)愛你跟通常是開著的。 只有一些386計算機沒有VGA兼容顯卡,選擇這個選項對于現(xiàn)在的多數(shù)計算機來說都沒有問題。 第二個選項“video mode selection support”使啟動的時候能夠使用字符模式的分辨率。 如果你希望一行能夠有更多的字的話,這通常會給你提供方便,不過通常你不必打開它們。 下面兩個選項是試驗性質(zhì)的,我建議你關(guān)閉它們。
圖37: 聲卡配置
.
在這部分,你可以配置聲卡。 如果你的Linux發(fā)行版使用ALSA的聲卡驅(qū)動(比如SuSE 6.3及以上版本),將“sound card support”作為可加載模塊就足夠了。 ALSA驅(qū)動將會在待會兒被編譯并連接進來(見“SuSE和ALSA聲卡驅(qū)動”)。 如果你的發(fā)行版使用的是內(nèi)核的標(biāo)準(zhǔn)聲卡驅(qū)動,你必須正確選擇你使用的聲卡。 事實上,這里列出了所有牌子的聲卡,因此,理論上選擇聲卡不成問題。 如果你的聲卡在你的發(fā)行版的標(biāo)準(zhǔn)內(nèi)核下工作的很正常,你也可以使用配置程序(比如SuSE的“yast2”)來找出你的聲卡使用什么驅(qū)動。 請放心,聲卡并不是十分關(guān)鍵的:如果某些地方出錯,你將會失去音效,但是內(nèi)核仍然可以正常工作。
圖38:配置USB支持
.
我的主板有USB接口,但是我并不使用它。但是如果我關(guān)閉USB支持,SuSE在啟動時就給我一個錯誤信息(Error Message)。 SuSE支持USB,因此它嘗試讀取需要的模塊,因此我將“Support for USB”作為可加載模塊。 雖然那些錯誤信息(Error Message)對我來說并沒有什么,但是我通過更巧妙的編譯USB驅(qū)動的方法消除了它們。 最簡單的辦法是將“Preliminary USB device filesystem”選項打開,然后加載一個特殊的USB驅(qū)動。 因為我的Pentium II主板已經(jīng)很老了,我選擇了“UHCI (Intel PIIX4, VIA, ...)”驅(qū)動作為可加載模塊。 但是,如果你有一塊Intel芯片組的新主板,你必須選擇“UHCI Alternate Driver (JE) support”模塊,而如果是Compaq的計算機,你應(yīng)該選擇“OHCI support”。 理論上,你只需要這三個模塊中的一個,但是如果你不清楚的話,可以選擇所有模塊。 你的Linux發(fā)行版會自動檢測出哪個模塊是它需要的,然后自動加載它。
僅僅開啟主板的USB端口還不夠,你需要指明使用哪個USB驅(qū)動。 “USB Device Class drivers”下出現(xiàn)的列表有不同的選項。 所有這些都是很直觀的,幾乎不會出錯:如果還有疑問,閱讀幫助文檔。
圖39: 配置“kernel hacking”選項
.
這很簡單:不要打開! 這是一個對于希望知道系統(tǒng)崩潰原因和讀取硬盤緩存的程序員來說很有用的選項:這個選項對于普通用戶來說完全沒有作用。

圖40:
保存并退出。Pffft,我們已經(jīng)完成了配置工作。剩下的工作就是編譯和安裝內(nèi)核了。下面我們來討論這個問題。
  
編譯內(nèi)核點擊“Save and Exit”,你就可以將你的配置選項保存在“./.config”(如果你在/usr/src/linux目錄下編譯,就應(yīng)該在/usr/src/linux/.config)中。 另外,如果你只想進行一個小小的升級,比如從2.4.5到2.4.6,將這個文件保存并復(fù)制到新內(nèi)核的目錄下也很方便。 用這種方法,你可以(通常)保存你所有老的選項,這將節(jié)省很多時間。 同樣,你可以使用你的發(fā)行版的標(biāo)準(zhǔn)配置文件,通常是保存在/boot/config(復(fù)制到./.config來使用它)。 但是如果你升級你的內(nèi)核源碼,并且在編譯內(nèi)核的時候遇到了奇怪的問題,這個文件(老的配置文件)是你首先應(yīng)該移除的! 當(dāng)然你為了安全起見需要修改,寫下并且小心保存正常工作的內(nèi)核的配置。 編譯內(nèi)核的步驟如下: make dep
make clean (針對老內(nèi)核)
make bzImage
make modules
make modules_install

圖40已經(jīng)顯示了需要運行“make dep”。 你當(dāng)然需要在Linux源碼目錄下運行這些命令,通常是在/usrsrc/linux下。 2.0.x系列或者更老的內(nèi)核還需要在編譯新內(nèi)核前運行“make clean”以移除以前的文件。 “make clean”可以防止一些很難對付的,但根據(jù)推測是由于沒有被清除的老的目標(biāo)文件(Object File,“*.o”)導(dǎo)致的古怪錯誤信息(Error Message), 命令“make bzImage”編譯新內(nèi)核,但是并沒有安裝它。 你還可以使用“make”命令來編譯內(nèi)核,比如“make bzlilo”或者“make zImage”,但是這些命令可能導(dǎo)致以外的問題。 多數(shù)內(nèi)核對于“make zImage”來說太大了:你在編譯的時候?qū)匆娨粋錯誤信息(Error Message)。 要使用“make bzlilo”命令,必須事先將所有配置保存在/etc/lilo.conf之類的文件 中,但通常并不是這種情況。 因此最好不要使用這些命令。 “make modules”編譯可加載模塊:它們可以用“make modules_install”命令安裝。 如果當(dāng)前的內(nèi)核版本是2.4.6,這個命令將可加載模塊放在/lib/modules/2.4.6/目錄下:當(dāng)你編譯另外版本的內(nèi)核時,目錄也隨之改變。 這樣,對應(yīng)特定版本內(nèi)核的可加載模塊就自動的放在單獨的目錄中,以此來避免可加載模塊之間的沖突或者類似問題。 在啟動的時候,內(nèi)核知道它應(yīng)該在哪個目錄里才能找到正確的可加載模塊。 但是如果你在編譯2.4.6的內(nèi)核后又將它重新編譯,/lib/modules/2.4.6目錄中的文件被重寫,而一些老的可加載模塊遺留下來。 那么,雖然這些老的可加載模塊并不被新內(nèi)核使用,它們?nèi)匀辉谀抢铩?通常,這并不是問題,但是在安裝新的可加載模塊之前將老的移除總是一個好主意。
為了避免在安裝內(nèi)核的過程中出現(xiàn)問題,你必須確定lilo的配置文件/etc/lilo.conf是正確的,并且你必須復(fù)制內(nèi)核和文件“System.map”到正確的地方。 最后,你必須運行“l(fā)ilo”命令。 也可以在DOS/Windows下使用“l(fā)oadlin”代替。 這兩種方法都會在下面討論。
  
配置lilo通常你可以在/etc目錄找到lilo的配置文件/etc/lilo.conf。 用文本編輯器(ASCII Editor)打開它:你或許安裝了一個完整的編輯器,比如XEmacs(運行“xemacs /etc/lilo.conf &”),一個簡單的全屏編輯器,比如kedit或者gedit(運行“k(g)edit /etc/lilo.conf”),或者使用行編輯器,比如pico或者nano(運行“pico /etc/lilo.conf”)。 lilo.conf看上去大概象這個樣子:
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

每個系統(tǒng)和發(fā)行版的lilo.conf的詳細(xì)內(nèi)容或許和上面有些不同。 因此我將為你解釋這些這個文件。 前8行是已經(jīng)寫好了的,通常你不必去更改它們。 第一行的命令“boot”表明應(yīng)該從哪個物理硬盤啟動,也就是說,“boot”指出了主啟動記錄(Master Boot Record)的位置。 對于我來說,從/dev/hda,第一塊物理硬盤啟動。 “vga”選項指出啟動的時候使用標(biāo)準(zhǔn)VGA文本模式,80x25個字母。 “read-only”選項的意思是啟動進程首先將Linux分區(qū)以只讀(read-only)方式掛載(mount)。 在Linux啟動期間,將檢查分區(qū)是否有錯誤:待會兒它們將被以讀寫(read and write)方式重新掛載(mount)。 “menu-scheme”行設(shè)置了lilo啟動菜單所使用的顏色。 使用“l(fā)da32”使操作系統(tǒng)可以從1024柱面以后的扇區(qū)啟動,如果BIOS支持的話。 現(xiàn)在所有系統(tǒng)都支持LBA32(大硬盤模式)。 你可以通過BIOS升級來解決這個問題,有些對于大硬盤來說是必需的東西現(xiàn)在已經(jīng)可用了。 “prompt”命令強制lilo為用戶顯示一個提示,使用戶可以選擇自己想用的操作系統(tǒng)。 “timeout”選項給出了當(dāng)選擇提示給出后,啟動默認(rèn)操作系統(tǒng)前,lilo等待輸入的時間(毫秒),啟動進程將啟動第一個操作系統(tǒng)。 在我這里是Windows 98,因此不會使用Linux的人最后將會進入Windows環(huán)境。 “message”選項規(guī)定了lilo啟動的時候顯示的信息。 在SuSE中是Tux,Linux可愛的企鵝吉祥物,以及(當(dāng)然會有)“SuSE Linux 7.1”。 你可以通過輸入“xv /boot/message”或者“gv /boot/message”(甚至有時還可以輸入“gimp /boot/message”)看見這個信息:“xv”和“gv”(ghostview)是兩款可以用來查看不同種類圖片的共享軟件 請注意,如果系統(tǒng)中沒有圖形登錄界面(比如在老的發(fā)行版中),/boot/message將不存在,這樣,啟動信息將僅僅是文本信息。 理論上它將在啟動時顯示你自己選擇的圖片,但是我還沒有實驗成功過。 lilo的所有選項當(dāng)然都在man page里面有介紹,你可以通過“man lilo”或者“man lilo.conf”訪問。
其他的選項是用來引導(dǎo)其他操作系統(tǒng)的。 你最多可以引導(dǎo)16個操作系統(tǒng)。 通常情況下,這足夠了。 你可以在“l(fā)abel=”行選擇操作系統(tǒng)。 默認(rèn)的Windows 98安裝在(還有更老版本的Windows和DOS,但不包括Windows NT和Windows 2000),就將它放在第一個主分區(qū)。 這樣,就只需要一行“other”和一行“l(fā)abel”。 第二個選項,“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)的地址和中斷號(端口0x378,中斷號7),并且標(biāo)明我的刻錄機“hdd”必須從虛擬SCSI(SCSI-emulation)尋址。 CD的名字由系統(tǒng)決定:在我的系統(tǒng)中,它叫“hdd”,但是在你的系統(tǒng)里,它可能叫其他名字。 使用中斷號通常是個人偏好的問題。 中斷使打印的速度加快,但是如果你的并口打印機由合適的中斷,你可以不寫這一行。 Linux默認(rèn)使用一種被稱作“登記(Polling)”的速度比較慢的方式,它允許內(nèi)核直接使用并口而不需要中斷號。 最后一個選項,由“image = /boot/vmlinuz.suse”開始,包含了SuSE配置過程中對lilo的配置:我手工加入了“append="hdd=ide-scsi”行。 “boot/vmlinuz.suse”文件是發(fā)行版的標(biāo)準(zhǔn)內(nèi)核。 最好將這個內(nèi)核保留,以應(yīng)付緊急情況。 “initrd = /boot/initrd.suse”行只用于標(biāo)準(zhǔn)的安裝內(nèi)核(installation kernel):它規(guī)定了讀取一個被稱作“ramdisk”的鏡像,那是讀入內(nèi)存的一張?zhí)摂M磁盤。 “ramdisk”包括了正常啟動Linux所需要的模塊:一個發(fā)行版的內(nèi)核當(dāng)然必須訪問大量不同的硬件,那只能通過使用許多可加載模塊來實現(xiàn)。
希望你現(xiàn)在能夠知道運行l(wèi)ilo前,你必須在什么地方存放你的Linux內(nèi)核。 在這個例子中,正確的命令應(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中你還可以象這樣再復(fù)制一份: cp /usr/src/linux/System.map /boot

(之前已經(jīng)更名了原來的Systemp.map文件)
如果你已經(jīng)有了一個名為“bzImage”的內(nèi)核,而且你想保留它,你可以將新內(nèi)核復(fù)制為“/boot/bzImage-2.4.6”,并且在“/etc/lilo.conf”中做相應(yīng)的更改:將/boot/bzImage改為/boot/bzImage-2.4.6。 編譯過程將會重新創(chuàng)建System.map文件,它包含了內(nèi)核的一些重要參數(shù)。 命令“depmod -a”創(chuàng)建(create)了一個包含所有內(nèi)核可加載模塊的依賴關(guān)系的文件。 也就是說,內(nèi)核與可加載模塊之間的關(guān)系、可加載模塊之間的關(guān)系,還有/etc/modules.conf中所定義的關(guān)系。 在多數(shù)Linux發(fā)行版中,包括SuSE,都會在啟動的時候運行“depend -a”,但是確定/boot/System.map文件存在并且符合當(dāng)前內(nèi)核的版本是比較明智的。 命令“l(fā)ilo”將會安裝一個老內(nèi)核的新配置文件,或者一個新內(nèi)核。 如果你已經(jīng)用新編譯的內(nèi)核覆蓋了原來的/boot/bzImage,但是沒有運行內(nèi)核,你將會得到一個無法工作的新內(nèi)核。 那個你保存起來的發(fā)行版自己的內(nèi)核卻仍然能夠工作,因為它沒有被覆蓋。 將老內(nèi)核保存起來,并且認(rèn)真測試你的新內(nèi)核。
  
使用loadlin如果你使用“l(fā)oadlin”來啟動Linux,毫無疑問你必須知道在那里找到這個方便的程序,也就是說,在C:\loadlin。 事實上,所有的Linux發(fā)行版的第一張CD上“dosutils”目錄中都有“l(fā)oadlin”。 你還必須將新的Linux內(nèi)核復(fù)制到“C:\loadlin”(或者是另外的名字)所在的磁盤。 在啟動Windows 98前,在DOS模式(譯者注:這里指的是DOS實模式,也就是開機按F8選擇第五項“RealDOS mode”)下,你可以使用這個命令啟動Linux:
loadlin bzImage 在通常情況下,當(dāng)你編譯了自己的內(nèi)核后,內(nèi)核中儲存的大多數(shù)配置參數(shù),比如根目錄的定位等,都是正確的,如果這樣的話,使用上面的命令來啟動Linux應(yīng)該是沒有問題的。 輸入“l(fā)oadlin | more”(在DOS下),你可以得到幫助信息,還包含一個Internet上“l(fā)oadlin-HOTO”的鏈接。 你可以使用“l(fā)oadlin”來測試一個新內(nèi)核,騙過lilo:即“l(fā)oadlin”和“bzImage”一起放在一張1.44MB的軟盤上。 如果你使用啟動軟盤啟動DOS(帶EMM386支持,譯者注:EMM386.EXEshi DOS 5.0以上版本提供的擴展內(nèi)存管理軟件,使DOS可以使用640k以上的內(nèi)存空間),絕對沒有問題,然后你就可以通過“l(fā)oadlin”和“bzImage”來啟動Linux。 但是,你當(dāng)然必須有一塊DOS啟動軟盤。
  
SuSE和ALSA聲卡驅(qū)動程序SuSE使用標(biāo)準(zhǔn)的ALSA(Advanced Linux Sound Architecture,高級Linux音效體系)聲卡驅(qū)動程序。 這些驅(qū)動程序比內(nèi)核使用的OSS計劃(Open Sound System Project)的音效更好。 如果你對Linux下的聲音要求比較嚴(yán)格,你絕對應(yīng)該使用ALSA聲卡驅(qū)動。 這些驅(qū)動并不是(以前的)內(nèi)核源碼的一部分,這意味著這些驅(qū)動必須被單獨編譯和安裝。 ALSA驅(qū)動的源碼放在SuSE發(fā)行版的“zq”部分:如果你不知道這是什么,請繼續(xù)閱讀。 用YaST或者YaST2安裝ALSA以使源碼被存放到“/usr/src/packages/”。 要編譯和安裝ALSA驅(qū)動,你需要按照下面的步驟進行: rpm -bb /usr/src/packages/SPECS/alsa.spec
cd /usr/src/packages/BUILD/alsa/alsa-driver-/
./configure
make install

第一行安裝源碼,包括驅(qū)動的源碼,在“/usr/src/packages/BUILD/”目錄中。 另外,ALSA庫和工具(ALSA Libraries and Utilities)被直接編譯為了rpm包。 不幸的是,ALSA驅(qū)動默認(rèn)沒有被編譯。 你必須手動輸入上面兩行來安裝它們。 命令“./configure”在你的系統(tǒng)中查找必要的配置和文件,然后將它們放在一個配置文件里。 “make install”命令編譯所有ALSA驅(qū)動,同時將它們到/lib/modules/2.4.6/misc/目錄,提供給內(nèi)核使用。 現(xiàn)在,當(dāng)啟動SuSE的時候驅(qū)動程序?qū)⒆詣影惭b。 我承認(rèn)這些步驟有那么點討厭,但是,當(dāng)你尋找必需的聲卡驅(qū)動的時候,你必須準(zhǔn)確的知道自己在干什么并且將聲卡支持更直接的加入到新內(nèi)核中。
如果你不使用SuSE,或者如果你希望你希望使用新版本的ALSA驅(qū)動,你可以到
http://www.alsa-project.org
下載驅(qū)動和相應(yīng)的庫文件以及工具。 這個站點的首頁張貼了ALSA計劃的最新消息(比如2002年4月,將ALSA驅(qū)動整合到2.5系列內(nèi)核的代碼樹中)以及不同文件的下載鏈接。 下面我將展示怎么編譯ALSA驅(qū)動:你可以使用類似的步驟編譯庫文件和工具。 將驅(qū)動解包到一個比較方便的目錄,比如/usr/local。 進入這個目錄,在這里是/usr/local/alsa-driver-/,運行上面的命令,從“./configure”開始。 如果你的發(fā)行版沒有將ALSA驅(qū)動作為標(biāo)準(zhǔn)聲卡驅(qū)動的話,或許你會進行一些其他的步驟來使它工作。 很不幸,這不是這篇內(nèi)容十分廣泛的文章所討論的內(nèi)容,但是你可以從下載的ALSA FAQ(Frequently Asked Questions)中得到更多的幫助。
  
PCMCIA支持(筆記本電腦)在2.4.x之前,對PCMCIA的支持就已經(jīng)是內(nèi)核的標(biāo)準(zhǔn)內(nèi)容。 無論如何,官方的PCMCIA HOWTO討論了那些版本內(nèi)核的PCMCIA支持最好不使用。 現(xiàn)在,PCMCIA源碼(Pcmcia Source),包括在所有系列的內(nèi)核——2.0,2.2,2.4下都可以使用的腳本和驅(qū)動。 我的經(jīng)驗是,PCMCIA驅(qū)動在重新編譯內(nèi)核后就無法工作了。 根據(jù)你的發(fā)行版,有兩種解決方法。 第一種是使用發(fā)行版自帶的源碼。將這些源碼安裝并編譯到一個rpm包中,然后你可以安裝它。 另外一種是從
http://sourceforge.net/projects/pcmcia-cs/
)下載,解包,編譯,安裝最新版本的PCMCIA驅(qū)動,就像這樣:
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

第一行和最后一行是用來解決一個SuSE特有的問題的。 SuSE的PCMCIA初始化腳本(Pcmcia-initialization Script)/etc/rc.d/pcmcia在運行“make install”命令的時候被覆蓋了。 如果你不小心將SuSE的原始腳本覆蓋了,你必須從“a1”部分重新安裝pcmcia包,將原始腳本復(fù)制到另外一個文件中,重新運行“make install”,最后將原始腳本復(fù)制過來。
在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ū)動, “rpm -i”命令安裝源碼,“rpm -bb”編譯pcmcia rpm包。 然后,你可以象安裝其他rpm包一樣安裝它。 注意,你必須使用“--force”選項,否則rpm程序?qū)⒏嬖V你“pcmcia”已經(jīng)安裝了,然后會忽略新文件。 通常,當(dāng)你在SuSE下手動安裝了rpm包后,你必須通過運行SuSEconfig程序(注意大小寫)來激活更改。 當(dāng)SuSE的設(shè)置程序YaST或者YaST2安裝或修改一個新的包后,它們通常會自動進行設(shè)置。 你不必手動激活。
要想真正使用PCMCIA支持,你還必須在編譯時打開“network support”選項,但是你 必須關(guān)閉其他所有網(wǎng)卡的驅(qū)動。 然后,正如圖11所討論的,如果你想使用Internet,你當(dāng)然還必須打開“TCP/IP support”
  
安裝modutils正如上面已經(jīng)提到的,內(nèi)核使用一些被稱作“modutils”的程序來管理內(nèi)核。 這些程序包括: insmod (用來安裝可加載模塊),
rmmod  (用來移除可加載模塊)
lsmod  (顯示正在使用的所有可加載模塊),

還有很多其它的。輸入“man lsmod”命令,你可以找到如何使用這些不同的命令,有些是我在這里沒有提到的。
編譯和安裝“modutils”很簡單:
cd /usr/src
cp ~/modutils-2.4.6.tar.bz2 . (假如那些文件在你的家目錄(home directory),“~”里)
bzip2 -d modutils-2.4.6.tar.bz2 (unzip:這會花費一定時間               )
tar -xvf modutils-2.4.6.tar
cd modutils-2.4.6 ( 進入“modutils”解包的目錄                         )
./configure (進行系統(tǒng)特殊配置(system-specific configurations)        )
make (編譯“modutils”:因為這僅僅是一個小小的編譯,因此速度驚人的快       )
make install (將“modutils”安裝到“/sbin/”                          )

這就是你安裝“modutils”時所要做的全部事情。 注意,在這個例子中“modutils”碰巧跟內(nèi)核時相同的版本號,但并不總是這樣。
  
內(nèi)核是否正常運行?新內(nèi)核已經(jīng)被配置,編譯,而且大概還被安裝到lilo里了。 重新啟動計算機,問自己:我怎樣才能判斷我的新內(nèi)核是否正常工作呢? 當(dāng)你嘗試做某些事情的時候,你可以很容易的找出沒有工作的硬件設(shè)備,另外,在啟動的時候,甚至在你進行圖形登錄之前,內(nèi)核會在屏幕上顯示很多有用的信息。 這些信息不僅包括配置自動診測到的設(shè)備(端口、中斷請求……),而且還包括驅(qū)動程序不能正確初始化的錯誤信息——不管是內(nèi)核的一部分還是可加載模塊。 閱讀這些信息可以及早得到某些特定問題的警告。對于SuSE Linux來說,這很簡單:內(nèi)核的每一部分如果正常啟動,將在屏幕的右邊顯示綠色的“done”,如果出現(xiàn)問題,就顯示“failed”。 因為信息可以在屏幕上滾動,所有的錯誤信息都在登錄提示符的上邊。 如果你默認(rèn)使用的圖形界面登錄,你可以使用“++F1”來找到登錄提示符(字符界面)。 這樣,如果錯誤信息的確跟你有關(guān),你至少可以對那里出現(xiàn)了問題有一點線索。 類似“Cannot find module”或者“Cannot load module”的錯誤信息表明你沒有將某些你不應(yīng)該丟棄的部分加入到內(nèi)核中。 更改內(nèi)核的配置,然后重新編譯通常可以解決這些問題。 注意,不必重新編譯整個內(nèi)核。 如果你只是忘記一些可加載模塊,重新執(zhí)行“make modules”和“make modules_install”就足夠了。 其實,即使你重新編譯整個內(nèi)核也不是什么大問題。 大多數(shù)內(nèi)核代碼已經(jīng)編譯,僅僅需要重新編譯丟失的部分。 簡單的說,相對于初次編譯內(nèi)核來說,對內(nèi)核做小小的修改然后重新編譯的速度是非?斓。 你可以喝一些咖啡,來等待編譯完成——一切都會很順利。
另外一種查看內(nèi)核啟動信息的方式是使用“dmesg”命令。 直接運行這個命令(不帶參數(shù))會將剛才的啟動信息調(diào)出來。 將它們定向到一個文件,使用“dmesg > temp”,這樣你可以使用“more temp”或者使用自己喜歡的編輯器查看信息。(譯者注,還可以使用“demsg | more”)
  
總結(jié)有了這份指南,你現(xiàn)在就可以開始你編譯內(nèi)核的試驗。玩內(nèi)核的最低要求恐怕就是你想玩。 你的大多數(shù)時間將會花在決定內(nèi)核的正確配置上,而在編譯的時候,你可以玩玩“freecell”或者做其他事情。
如果你還有一些問題,并且不知道改怎么辦,你可以去與Linux有關(guān)的郵件列表(Linux-related Mailing Lists)或者網(wǎng)站問問這些問題。 這些(站點和郵件列表)在幾乎所有語言中都有,而不僅僅是英語。 通常很短的一段時間之后,你就可以得到相當(dāng)有用的幫助來解決問題。 找到這些郵件列表和網(wǎng)站的最好辦法就是使用搜索引擎。


本文來自ChinaUnix博客,如果查看原文請點:http://blog.chinaunix.net/u3/91047/showart_1831683.html
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP