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

  免費注冊 查看新帖 |

Chinaunix

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

第 6 部分:配置及編譯內(nèi)核 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2005-02-04 10:28 |只看該作者 |倒序瀏覽
在本教程中,我們將向您演示如何從源代碼編譯 Linux 內(nèi)核。在演示過程中,我們將討論各種重要的內(nèi)核配置選項,更深入地介紹有關(guān)內(nèi)核中 PCI 和 USB 支持的信息。
一。關(guān)于教程
本教程涉及哪些內(nèi)容?
在本教程中,我們將向您演示如何從源代碼編譯 Linux 內(nèi)核。在演示過程中,我們將討論各種重要的內(nèi)核配置選項,更深入地介紹有關(guān)內(nèi)核中 PCI 和 USB 支持的信息。在本系列教程(共 8 篇;本文是第 6 篇)結(jié)束時,您將具備成為 Linux 系統(tǒng)管理員所必需的知識,而如果您選擇參加 LPI 考試,您將有能力取得 Linux Professional Institute 頒發(fā)的 LPIC Level 1 證書。
LPI 徽標(biāo)是
Linux Professional Institute
的商標(biāo)。
我應(yīng)該學(xué)習(xí)這一教程嗎?
這篇教程對于那些想學(xué)習(xí)或提高 Linux 內(nèi)核編譯和配置技能的讀者是理想的學(xué)習(xí)資料。而且本教程特別適合那些將設(shè)置 Linux 服務(wù)器或臺式機的讀者。對于許多讀者,文中的許多問題可能是初次遇到,但經(jīng)驗較豐富的 Linux 用戶會發(fā)現(xiàn)這個教程是鞏固重要的 Linux 內(nèi)核技能的極佳途徑。
如果您是 Linux 新手,我們建議您在繼續(xù)之前先學(xué)完 LPI 證書 101 和 102 考試準備教程系列前面的文章,包括

關(guān)于作者
有關(guān)本教程內(nèi)容中的技術(shù)問題,請與作者聯(lián)系:

Daniel Robbins 居住在美國新墨西哥州阿爾伯克基(Albuquerque),他是 Gentoo Technologies, Inc. 的總裁兼 CEO,也是
Gentoo Linux
(PC 上的高級 Linux)和 Portage 系統(tǒng)(Linux 的下一代移植系統(tǒng))的創(chuàng)建者。他還是 Macmillan 出版的 Caldera OpenLinux UnleashedSuSE Linux UnleashedSamba Unleashed 等書的撰稿作者。Daniel 自小學(xué)二年級起就和計算機結(jié)下不解之緣,那時他第一次接觸 Logo 編程語言,并沉溺于 Pac-Man 游戲中。這也許就是為什么至今他仍擔(dān)任 SONY Electronic Publishing/Psygnosis 首席圖形設(shè)計師的原因所在。Daniel 喜歡與妻子 Mary 和他們的女兒 Hadassah 一起共度時光。
二。介紹內(nèi)核
而內(nèi)核是 ... Linux!
通常,“Linux”一詞指的是完整的 Linux 分發(fā)版(distribution)和使分發(fā)版工作的所有協(xié)作運行程序。然而,您或許會驚奇地發(fā)現(xiàn)從技術(shù)角度講 Linux 是并且只是一個內(nèi)核。盡管一般所指的“Linux”的其它部分(如 shell 和編譯器)是完整的操作環(huán)境的基本組成部分,但從技術(shù)角度講,這些部分與 Linux(內(nèi)核)是分開的。盡管如此,人們?nèi)杂谩癓inux”來指“基于 Linux 的分發(fā)版”。不過,至少每個人都認同 Linux 內(nèi)核是所有“Linux 操作系統(tǒng)”的心臟。
與硬件進行相互操作
Linux 內(nèi)核的主要作用是直接與系統(tǒng)中的硬件進行相互操作。內(nèi)核在原始硬件與應(yīng)用程序之間提供了一個抽象層。例如,按此方式,程序本身無需知道特定主板芯片組或磁盤控制器的詳細信息 ― 而是可以在向磁盤讀寫文件的更高層次上進行操作。
CPU 抽象
Linux 內(nèi)核還在系統(tǒng)的處理器(或多處理器)之上提供一個抽象層次 ― 使多個程序看起來象是同時運行。內(nèi)核負責(zé)使每個進程公平、分時共享處理器的計算資源。
若正在運行 Linux,那么正在使用的內(nèi)核不是支持 UP(單處理器)的,就是支持 SMP(對稱多處理器)的。如果您正好有一塊 SMP 主板,但使用的是 UP 內(nèi)核,那么 Linux 將不會“看見”額外的處理器!修正這一問題需要編譯用于您硬件的特殊 SMP 內(nèi)核。目前,SMP 內(nèi)核也可運行在單處理器系統(tǒng)上,但性能略有下降。
抽象 IO
內(nèi)核還處理大量需要的任務(wù):抽象所有文件輸入輸出格式。設(shè)想一下,如果每個程序都必須直接與特定的磁盤硬件打交道,會發(fā)生什么 ― 如果您更換磁盤控制器,所有的程序都會停止運行!幸運的是,Linux 內(nèi)核遵循 UNIX 模型:提供所有程序都可以使用的簡單數(shù)據(jù)存儲和訪問抽象。這樣的話,您喜歡的數(shù)據(jù)庫就不需要考慮數(shù)據(jù)是存儲在 IDE 硬盤上、還是存儲在 SCSI RAID 陣列上或是存儲在掛裝于網(wǎng)絡(luò)的文件系統(tǒng)上。
以網(wǎng)絡(luò)為中心
Linux 贏得聲譽的主要因素之一是其健壯的聯(lián)網(wǎng)功能,尤其是 TCP/IP 支持。如果您猜想 TCP/IP 棧在 Linux 內(nèi)核中,那么您猜對了!內(nèi)核為在網(wǎng)絡(luò)上發(fā)送數(shù)據(jù)的程序提供了符合標(biāo)準的高層次接口。在幕后,Linux 內(nèi)核直接與特定的以太網(wǎng)卡或 pppd 守護程序進行相互操作,并處理低層次的因特網(wǎng)通信詳細信息。請注意:本系列的下一篇教程(第 7 部分)將討論 TCP/IP 和聯(lián)網(wǎng)。
聯(lián)網(wǎng)的優(yōu)點
Linux 的優(yōu)點之一是內(nèi)核中有大量可用的可選特性,特別是與聯(lián)網(wǎng)有關(guān)的特性。例如,可以將內(nèi)核配置為允許整個內(nèi)部網(wǎng)絡(luò)經(jīng)過 Linux 調(diào)制解調(diào)器訪問因特網(wǎng) ― 這稱為 IP 偽裝(IP Masquerading)或 IP NAT。
此外,可以將 Linux 內(nèi)核配置為導(dǎo)出或掛裝基于網(wǎng)絡(luò)的 NFS 文件系統(tǒng),這是考慮到允許 LAN 上其它 UNIX 機器可以輕松地與 Linux 系統(tǒng)共享數(shù)據(jù)。內(nèi)核中有許多好東西,一旦開始研究 Linux 內(nèi)核的眾多配置選項,您就會了解。
引導(dǎo)回顧
現(xiàn)在是快速復(fù)習(xí) Linux 引導(dǎo)過程的良好時機。啟動基于 Linux 的系統(tǒng)時,內(nèi)核映象(以單個二進制文件形式存儲)由引導(dǎo)裝入程序(如 LILO 或 GRUB)從磁盤裝入內(nèi)存。此時,內(nèi)核接管系統(tǒng)。內(nèi)核首先做的事情之一是檢測并初始化所有它找到且配置成支持的硬件。硬件正確初始化之后,內(nèi)核就準備啟動常規(guī)用戶空間程序(也稱為“進程”)。
由內(nèi)核運行的第一個進程是 /sbin/init。它依次啟動 /etc/inittab 中指定的其它進程。幾秒鐘內(nèi),Linux 系統(tǒng)就啟動并運行起來,準備好供您使用。雖然您從不直接與內(nèi)核打交道,但 Linux 內(nèi)核始終運行于所有常規(guī)進程“之上”,并提供各種程序和庫運行所必需的虛擬與抽象。
介紹 ... 模塊!
所有較新的 Linux 內(nèi)核都支持內(nèi)核模塊。內(nèi)核模塊是真正美妙的事物 ― 它們是內(nèi)核的組成部分,駐留在磁盤上相對較小的二進制文件中。每當(dāng)內(nèi)核需要一個特定模塊的功能時,就會從磁盤裝入這個特定模塊并自動將它與自身結(jié)合,這樣便動態(tài)擴展了內(nèi)核的能力。
如果裝入的內(nèi)核模塊的特性在幾分鐘內(nèi)未被使用,則內(nèi)核會自動將它與內(nèi)核其余部分分離并從內(nèi)存卸裝它 ― 這被稱為自動清除(autocleaning)。若沒有內(nèi)核模塊,則需要確保運行的內(nèi)核(作為單個二進制文件存在于磁盤上)完全包含所有可能需要的功能。若沒有模塊,則需要構(gòu)建一個全內(nèi)核,以將新的重要功能添加到其中。
通常,用戶構(gòu)建一個包含所有基本功能的內(nèi)核映象,然后再構(gòu)建一組模塊,這些模塊對應(yīng)著用戶未來可能需要的功能。以后要使用時,則按照需要,將適當(dāng)?shù)哪K裝入內(nèi)核。這也有助于節(jié)約 RAM,因為模塊只有從磁盤裝入后才使用 RAM。當(dāng)從內(nèi)核除去模塊后,其使用的內(nèi)存就被釋放并用于其它用途。
模塊所在位置
內(nèi)核模塊通常位于 /lib/modules/x.y.z(其中 x.y.z 是模塊所兼容的內(nèi)核版本);每個模塊在其名稱末尾都有“.o”,表明它是包含機器指令的二進制文件。正如您猜想的那樣,每個單獨的模塊代表內(nèi)核功能的一個特殊組件。某個模塊可能提供 FAT 文件系統(tǒng)支持,而另一個模塊則可能支持一塊特殊的 ISA 以太網(wǎng)卡。
模塊 ― 并非用于所有進程!
值得一提的是:不能將所有東西都放入模塊中。因為模塊存儲于磁盤上,可引導(dǎo)的內(nèi)核映象需要擁有對磁盤控制器、驅(qū)動器和根文件系統(tǒng)的內(nèi)編譯(compiled-in)支持。如果沒有將這些基本組件編譯到內(nèi)核映象中 ― 也就是說,如果試圖將它們作為模塊編譯 ― 那么內(nèi)核將沒有從磁盤裝入這些模塊所必需的能力,這會產(chǎn)生一個很令人討厭的“先有雞還是先有蛋”的問題,結(jié)果是一個不能引導(dǎo)系統(tǒng)的內(nèi)核!
三。查找并下載源代碼
內(nèi)核版本歷史
在撰寫本教程時,可用的最新內(nèi)核是 2.4.18。2.4.18 內(nèi)核是 2.4 穩(wěn)定內(nèi)核系列的一部分。這一系列的內(nèi)核發(fā)行版打算用于生產(chǎn)系統(tǒng)。
還有幾個 2.5 系列內(nèi)核可供使用,但不應(yīng)當(dāng)在生產(chǎn)系統(tǒng)上使用它們!2.5”中的“5”是奇數(shù),表示這些內(nèi)核本質(zhì)上是實驗性的,并且打算供內(nèi)核開發(fā)人員使用。當(dāng)“2.5”內(nèi)核準備好用于生產(chǎn)使用時,就會出現(xiàn)“2.6”(第二個數(shù)為偶數(shù))系列。
使用哪些內(nèi)核源代碼
若只想編譯當(dāng)前已安裝內(nèi)核的新版本(例如,要啟用 SMP 支持),則最好的方法是安裝分發(fā)版的內(nèi)核源代碼包。這樣做之后,您應(yīng)該在 /usr/src/linux 中發(fā)現(xiàn)一組新文件。
然而,有時候您想安裝內(nèi)核。通常,最好的方法是只安裝分發(fā)版內(nèi)核源代碼包的新版本或更新版本。該包將包含內(nèi)核源代碼,這些內(nèi)核源代碼經(jīng)過補丁程序的修正,并且經(jīng)過調(diào)整以便能最優(yōu)地運行在 Linux 系統(tǒng)上。
從源代碼獲得內(nèi)核
如果您具有冒險精神,則可以從
http://www.kernel.org/pub/linux/kernel
抓取一個“主線”內(nèi)核源代碼 tar 包。在這個目錄中,您可以找到由 Linus 或 Marcelo 發(fā)布的正式內(nèi)核源代碼。這些源代碼可能沒有分發(fā)版內(nèi)核源代碼包中的所有特性,因此,在知道自己正在做什么以前 ... 或在有“額外的”機器和大量空閑時間以前,通常最好不要使用主線內(nèi)核:)
在 kernel.org,您會發(fā)現(xiàn)內(nèi)核源代碼根據(jù)內(nèi)核版本(v2.2、v2.4 等)被組織到幾個不同的目錄中。在每個目錄中,您會發(fā)現(xiàn)文件被標(biāo)為“l(fā)inux-x.y.z.tar.gz”和“l(fā)inux-x.y.z.tar.bz2”。這些文件是 Linux 內(nèi)核源代碼 tar 包。您還會看到標(biāo)為“patch-x.y.z.gz”和“patch-x.y.z.bz2”的文件。這些文件是補丁程序,可以用來更新完整內(nèi)核源代碼的較早版本。如果要編譯新的內(nèi)核發(fā)行版,則需下載這些“l(fā)inux”文件之一。
解包內(nèi)核
如果您從 kernel.org 下載了新內(nèi)核,則現(xiàn)在可以將它解包。要這么做,用 cd 命令進入 /usr/src。如果在那里有一個現(xiàn)成的“l(fā)inux”目錄,則將它改成“l(fā)inux.old”(以 root 用戶身份執(zhí)行 mv linux linux.old)。
現(xiàn)在,可以解壓縮新內(nèi)核了。若仍處在 /usr/src 中,則輸入 tar xzvf /path/to/my/kernel-x.y.z.tar.gz 或 cat /path/to/my/kernel-x.y.z.tar.bz2 | bzip2 -d | tar xvf -,這取決于源代碼是用 gzip 還是用 bzip2 壓縮的。輸入這一命令后,新的內(nèi)核源代碼將被解壓縮到新的“l(fā)inux”目錄中。注意 ― 完整的內(nèi)核源代碼通常占據(jù) 50 MB 以上的磁盤空間!
四。配置內(nèi)核
討論配置
編譯內(nèi)核以前,需要配置它?梢杂门渲脕砭_控制在新內(nèi)核中啟用(以及禁用)哪些內(nèi)核特性。還可以控制將哪些部分編譯到內(nèi)核二進制映象(將在引導(dǎo)時裝入)中,而將哪些部分編譯到“按需裝入”的內(nèi)核模塊文件中。
老式的配置內(nèi)核的方法是非常令人痛苦的,包括進入 /usr/src/linux 并輸入 make config。盡管 make config 仍然有效,但請不要嘗試用這種方法配置內(nèi)核 ― 除非您喜歡在命令行回答數(shù)百個(是的,數(shù)百個。﹜es/no 問題。
新的配置方法
不用再輸入“make config”,新的方法是輸入“make menuconfig”或“make xconfig”來配置內(nèi)核。如果輸入“make menuconfig”,則會得到一個好看的基于控制臺的彩色菜單系統(tǒng),可以用它配置內(nèi)核。如果輸入“make xconfig”,則會得到一個非常好看的基于 X 的 GUI,可以用它配置各種內(nèi)核選項。
使用“make menuconfig”時,左邊有“”的選項可以被編譯為模塊。當(dāng)選項被突出顯示時,按空格鍵在取消該選項(“”)、選擇將該選項編譯到內(nèi)核映象中(“”)和選擇編譯為模塊(“”)三者間切換。也可以按“y”鍵啟用選項,按“n”禁用該選項或按“m”鍵以在可能的情況下將它編譯為模塊。幸運的是,大多數(shù)內(nèi)核配置選項都有詳細的幫助信息,可以通過輸入 h 查看這些信息。
配置技巧
遺憾的是,內(nèi)核配置選項太多了,根本沒有足夠篇幅在這里全部介紹它們(不過,如果有興趣,可以查看 options(4) 手冊頁以獲取更完整的選項清單)。
在下列幾頁中,將對執(zhí)行“make menuconfig”或“make xconfig”命令時出現(xiàn)的重要類別進行概述,并同時指出基本的或重要的內(nèi)核配置選項。
代碼成熟級別選項
現(xiàn)在,我們來看看不同的內(nèi)核配置選項類別。下面簡略概述了每個類別。我鼓勵您通過在 /usr/src/linux 中輸入“make menuconfig”或“make xconfig”來加深對這些類別的理解。
Code maturity level options:該配置類別包含單一選項:“Prompt for development and/or incomplete code/drivers”。如果啟用這個選項,那么許多被認為還處在實驗階段的選項(如 ReiserFS、devfs 和其它選項)將在其它類別菜單下可見。如果不選中這個選項,可見的選項將只是那些被認為是“穩(wěn)定的”選項。通常,啟用這個選項是個好主意,這樣可以看到內(nèi)核必須提供的所有功能。
模塊以及與 CPU 相關(guān)的選項
Loadable module support:該配置類別下是三個與內(nèi)核對模塊的支持相關(guān)的選項。通常,應(yīng)該啟用所有這三項。
Processor type and features:這一部分包含各種特定于 CPU 的配置選項!癝ymmetric multiprocessing support option”特別重要,如果系統(tǒng)有一個以上的 CPU,則應(yīng)啟用該選項。否則,只能利用系統(tǒng)中的第一個 CPU。通常應(yīng)該啟用“MTRR Support”選項,因為它可以在現(xiàn)代系統(tǒng)上的 X 中產(chǎn)生更好的性能。
常規(guī)和并行端口選項
General setup:在這一節(jié)中,通常應(yīng)啟用聯(lián)網(wǎng)和 PCI 支持選項,還應(yīng)啟用“Kernel support for ELF binaries”(將它構(gòu)建到內(nèi)核中,而不是構(gòu)建為模塊)。建議啟用 a.out 和 MISC 二進制選項,不過將它們構(gòu)建為內(nèi)核模塊通常更有意義。還要確保啟用“System V IPC”和“Sysctl support”。請參閱內(nèi)置幫助,以獲取有關(guān)這些選項的更多信息。
Parallel port support 選項:擁有并行端口設(shè)備(包括打印機)的人都會對 Parallel port support 節(jié)感興趣。請注意:為了獲得完整的打印機支持,除了啟用此處適當(dāng)?shù)牟⑿卸丝谥С忠酝,還必須啟用“Character devices”節(jié)下的“Parallel printer support”。
RAID 和 LVM
Multi-device support (RAID and LVM):這包含與 Linux 軟件 RAID 和邏輯卷管理有關(guān)的選項。軟件 RAID 允許以冗余方式使用磁盤以提高可用性。您可以在 developerWorks 軟件 RAID 系列中找到有關(guān)軟件 RAID 的更多信息(請參閱本教程最后一節(jié)“參考資料”,獲取相關(guān)鏈接)。
聯(lián)網(wǎng)和相關(guān)設(shè)備
Networking options:您當(dāng)然會猜到這包含與聯(lián)網(wǎng)有關(guān)的選項!如果計劃將 Linux 系統(tǒng)連接至一個典型網(wǎng)絡(luò),則應(yīng)確保啟用“Packet socket”、“Unix domain sockets”和“TCP/IP networking”。您可能會對各種其它選項感興趣,其中包括“Network packet filtering”,它允許您使用 iptables 命令設(shè)置自己的有狀態(tài)防火墻。有關(guān)這一操作的信息,請參閱 developerWorks 教程
Linux 2.4有狀態(tài)防火墻設(shè)計

Network device support:使 Linux 聯(lián)網(wǎng)正常工作的第二個要求是將對特別的聯(lián)網(wǎng)硬件的支持編譯進來。應(yīng)選擇對您希望內(nèi)核支持的網(wǎng)卡(或多塊網(wǎng)卡)的支持。需要的選項最有可能位于“Ethernet (10 or 100Mbit)”子類別下。
IDE 支持
ATA/IDE/MFM/RLL support:對使用 IDE 驅(qū)動器、CD-ROM、DVD-ROM 和其它外圍設(shè)備的系統(tǒng)而言,這一節(jié)包含重要的選項。如果系統(tǒng)有 IDE 磁盤,則請確保啟用“Enhanced IDE/MFM/RLL disk/cdrom/tape/floppy support”、“Include IDE/ATA-2 DISK support”以及適合特殊主板的芯片組(構(gòu)建到內(nèi)核中,而不是構(gòu)建為模塊 ― 這樣系統(tǒng)才能引導(dǎo)。。如果有 IDE CD-ROM,則請確保還啟用了“Include IDE/ATAPI CD-ROM support”。注:若沒有特定芯片組支持,IDE 仍可工作,但可能無法利用特別的主板的所有性能增強功能。
還請注意:對幾乎所有的系統(tǒng),都極力推薦“Enable PCI DMA by default if available”選項。若沒有缺省地啟用 DMA(直接內(nèi)存存。瑒t IDE 外圍設(shè)備將以 PIO 方式運行,并且性能可能比正常情況下慢 15 倍!通過以 root 用戶身份在 shell 提示符上輸入 hdparm -d 1 /dev/hdx,可以驗證是否在特別的磁盤上啟用了 DMA,其中 /dev/hdx 是與要啟用 DMA 的磁盤對應(yīng)的塊操作特殊設(shè)備。
SCSI 支持
SCSI support:這一節(jié)包含與 SCSI 磁盤和外圍設(shè)備有關(guān)的所有選項。如果有基于 SCSI 的系統(tǒng),請務(wù)必根據(jù)需要啟用“SCSI support”、“SCSI disk support”、“SCSI CD-ROM support”和“SCSI tape support”。如果正從 SCSI 磁盤引導(dǎo),則請確保將“SCSI support”和“SCSI disk support”都內(nèi)編譯到內(nèi)核中,而不是選擇將它們編譯成可裝入的模塊。為使 SCSI 正確地工作,還需要執(zhí)行額外的步驟:進入“SCSI low-level drivers”子類別,確保啟用了對特別的 SCSI 卡的支持并將其配置為直接編譯到內(nèi)核中。
各種字符設(shè)備
Character devices:這一節(jié)包含各種內(nèi)核驅(qū)動程序的大雜燴。請確保啟用“Virtual terminal”和“Support for console on virtual terminal”,內(nèi)核引導(dǎo)后出現(xiàn)的標(biāo)準的基于文本的控制臺需要它們。很有可能還需要啟用“Unix98 PTY support”。如果您希望使用并行打印機,請記住還要啟用“Parallel printer support”。其它所有選項通常是可選的。推薦采用“Enhanced real-time clock support”;通常需要“/dev/agpgart (AGP support)”和“Direct Rendering Manager”以利用 X 下豐富的 Linux 3D 加速功能(特別當(dāng)您有 Voodoo3+、ATI Rage 128、ATI Radeon 或 Matrox 等顯卡時)。要想使 X 在加速方式中工作,除了簡單地啟用這些選項外還需要額外的配置步驟。
文件系統(tǒng)和控制臺驅(qū)動程序
File systems:正象您猜想的那樣,這包含與文件系統(tǒng)驅(qū)動程序相關(guān)的選項。要確保將用于“/”(根目錄)的文件系統(tǒng)編譯到內(nèi)核中。這一文件系統(tǒng)通常是 ext2,但也可能是 ext3、JFS、XFS 或 ReiserFS。請確保還啟用了“/proc file system support”選項,因為大多數(shù)分發(fā)版都需要它。除非計劃使用“/dev file system support”(在這種情況下則應(yīng)將“/dev/pts”選項置為禁用),否則,通常還應(yīng)啟用“/dev/pts file system support for Unix98 PTYs”。
Console drivers:大多數(shù)人通常會啟用“VGA text console”(x86 系統(tǒng)上通常需要)以及可選的“Video mode selection support”。也有可能使用“Frame-buffer support”,它將使文本控制臺以圖形顯示,而不再是文本屏幕。這些驅(qū)動程序中的一些對 X 有負面影響,因此最好是堅持使用 VGA 文本控制臺,至少在開始階段是如此。
五。編譯和安裝內(nèi)核
make dep
一旦配置了內(nèi)核,就到了編譯它的時候了。但能夠編譯它之前,需要生成相關(guān)性信息。在 /usr/src/linux 中可通過輸入 make dep 做到這一點。
make bzImage
現(xiàn)在是編譯實際二進制內(nèi)核映象的時候了。輸入 make bzImage。幾分鐘后,將完成編譯,并且您將在 /usr/src/linux/arch/i386/boot(用于 x86 PC 內(nèi)核)中找到 bzImage 文件。很快您將看到如何安裝新內(nèi)核映象,不過現(xiàn)在該討論模塊了。
編譯模塊
既然已生成了 bzImage,那么是編譯模塊的時候了。即使在配置內(nèi)核時沒有啟用任何模塊,也不要省略這一步 ― 養(yǎng)成編譯 bzImage 后立即編譯模塊的習(xí)慣很有益處。而且,如果確實模塊啟用編譯 ― 這個步驟會一閃而過。輸入 make modules && make modules_install。這將編譯模塊并隨后將其安裝至 /usr/lib/ 中。
祝賀您!內(nèi)核現(xiàn)已完全編譯,而且模塊全都被編譯并安裝。現(xiàn)在是重新配置 LILO 的時候了,這樣您就可以引導(dǎo)新內(nèi)核。
六。引導(dǎo)配置
LILO 簡介
終于到了重新配置 LILO 的時候了,這樣它就可以裝入新內(nèi)核。LILO 是最流行的 Linux 引導(dǎo)裝入程序,而且所有流行的 Linux 分發(fā)版都使用它。首先要做的是查看 /etc/lilo.conf 文件。該文件包含類似于“image=/vmlinuz”的一行內(nèi)容。這一行告訴 LILO 在哪里尋找內(nèi)核。
配置 LILO
要配置 LILO 以引導(dǎo)新內(nèi)核,有兩種選擇。第一種是覆蓋現(xiàn)有的內(nèi)核 ― 如果沒有某種緊急引導(dǎo)方法(如帶有這一特別的內(nèi)核的引導(dǎo)磁盤),這樣做就有些冒險。
較安全的選擇是配置 LILO,以便它既可以引導(dǎo)新內(nèi)核也可以引導(dǎo)舊內(nèi)核。LILO 可以配置為在缺省情況下引導(dǎo)新內(nèi)核,而當(dāng)遇到問題時仍可選擇較舊的內(nèi)核。這是推薦的選擇,我們會向您演示如何執(zhí)行。
LILO 代碼
lilo.conf 可能看起來如下:
boot=/dev/hda
delay=20
vga=normal
root=/dev/hda1
read-only
image=/vmlinuz
label=linux要向 lilo.conf 添加新的引導(dǎo)項,請執(zhí)行以下步驟。首先,將 /usr/src/linux/arch/i386/boot/bzImage 復(fù)制到 root 分區(qū)上的一個文件,如 /vmlinuz2。復(fù)制該文件后,再復(fù)制 lilo.conf 的最后三行內(nèi)容,并將它們添加到該文件的末尾 ... 我們幾乎完成了 ... 調(diào)整 LILO 現(xiàn)在,lilo.conf 看起來如下:
boot=/dev/hda
delay=20
vga=normal
root=/dev/hda1
read-only

image=/vmlinuz
label=linux
image=/vmlinuz
label=linux
現(xiàn)在,將第一個“image=”行改為讀作 image=/vmlinuz2。接下來,將第二個“l(fā)abel”行改為讀作 label=oldlinux。此外,請確保在靠近文件頂部有一行“delay=20” ― 若沒有,則添加一行。如果有,則要確保數(shù)字至少是 20。最終的 lilo.conf 最終的 lilo.conf 文件看起來如下:
boot=/dev/hda  
delay=20  
vga=normal  
root=/dev/hda1  
read-only  
  
image=/vmlinuz2  
label=linux  

image=/vmlinuz
label=oldlinux
完成上述操作后,需要以 root 身份運行“l(fā)ilo”。這非常重要!如果不這么做,引導(dǎo)過程將無法進行。運行“l(fā)ilo”可以給它更新引導(dǎo)映射的機會。LILO 配置的原因現(xiàn)在對所做的更改加以說明。我們對 lilo.conf 文件進行了設(shè)置以允許引導(dǎo)兩個不同的內(nèi)核。該文件允許引導(dǎo)位于 /vmlinuz 的原始內(nèi)核。它也允許引導(dǎo)位于 /vmlinuz2 的新內(nèi)核。缺省情況下,它會嘗試引導(dǎo)新內(nèi)核(因為新內(nèi)核的 image/label 行在配置文件中首先出現(xiàn))。如果出于某種原因需要引導(dǎo)舊內(nèi)核,只需重新引導(dǎo)計算機并按住 shift 鍵。LILO 會檢測到這一操作,并且允許輸入希望引導(dǎo)的映象的標(biāo)號。要引導(dǎo)舊內(nèi)核,需要輸入 oldlinux,然后按 Enter 鍵。要查看可能存在的標(biāo)號的列表,需要按 TAB 鍵。七。PCI設(shè)備PCI 設(shè)備 101這一節(jié)將較仔細地研究在 Linux 下處理 PCI 設(shè)備的更詳細的信息。在 Linux 下啟用對 PCI 設(shè)備的支持非常簡單。只需確保在“General Setup”內(nèi)核配置類別下啟用“PCI support”。還推薦采用“PCI device name database”選項,因為它允許查看 Linux 可以看到的 PCI 設(shè)備的實際英文名(而不只是它們的正式 PCI 設(shè)備標(biāo)識號碼)。確保啟用以上選項后,Linux 就做好了支持 PCI 的準備。唯一的額外步驟是:針對安裝在系統(tǒng)中的卡的類型,啟用特定的驅(qū)動程序。例如,若要安裝 SoundBlaster Live! 卡,則需啟用“Creative SBLive!”支持(位于“Sound”類別下),而要安裝 3Com 3c905c Fast Ethernet 卡的話,則需啟用“Network device support/Ethernet (10 or 100Mbit)”類別/子類別下的“3c590/3c900 series (592/595/597) "Vortex/Boomerang" support”。檢查 PCI 設(shè)備要查看有關(guān)已安裝的 PCI 設(shè)備的信息,可以輸入 cat /proc/pci 以查看精簡的(且略帶神秘的)信息 ― 或輸入 lspci -v 獲取更詳細和更易于理解的輸出信息!發(fā)spci”是 pciutils 包的一部分,它的源代碼可以從
http://atrey.karlin.mff.cuni.cz/~mj/pciutils.html
獲得。通常,使用與特別的分發(fā)版一起提供的 pciutils 版本就足夠了。當(dāng)輸入 lspci -v 時,可能會看到許多以前從不知道其存在的 PCI 設(shè)備。通常,這樣的設(shè)備是眾多內(nèi)置于計算機主板的、基于 PCI 的外圍設(shè)備之一?梢栽谟嬎銠C BIOS 中禁用(如果設(shè)備當(dāng)前為不可見,則也可啟用)這些設(shè)備,通常在“Integrated peripherals”節(jié)下進行設(shè)置。通常可以在系統(tǒng)引導(dǎo)期間按 Delete 鍵或 F2 鍵來訪問計算機的 BIOS。pciutils 包還包含名為“setpci”的程序,可以用這個程序更改各種 PCI 設(shè)備設(shè)置(包括 PCI 設(shè)備等待時間)。要了解有關(guān) PCI 設(shè)備等待時間以及它對系統(tǒng)所產(chǎn)生的影響的更多信息,請參閱 developerWorks 文章
Linux 硬件穩(wěn)定性指南,第 2 部分
。PCI 設(shè)備資源為了能正常工作,系統(tǒng)中的 PCI 設(shè)備需要利用系統(tǒng)的各種特定硬件資源,如中斷等。在有數(shù)據(jù)等待處理時,許多 PCI 設(shè)備利用硬件中斷向處理器發(fā)送信號。要了解哪些中斷正在被各種硬件設(shè)備使用,可以通過輸入 cat /proc/interrupts 查看 /proc/interrupts 文件。該命令的輸出看起來如下:
           CPU0      
  0:    3493317          XT-PIC  timer
  1:      86405          XT-PIC  keyboard
  2:          0          XT-PIC  cascade
  5:          0          XT-PIC  eth0
  8:          2          XT-PIC  rtc
  9:      62653          XT-PIC  usb-uhci, usb-uhci, eth1
10:    1550399          XT-PIC  Audigy
12:     413422          XT-PIC  PS/2 Mouse
14:      85418          XT-PIC  ide0
15:          4          XT-PIC  ide1
NMI:          0
ERR:          0
第一列顯示的是 IRQ 號碼;第二列顯示的是內(nèi)核對于這一特別的 IRQ 處理了多少中斷;最后一列則顯示與這個 IRQ 相關(guān)聯(lián)的硬件設(shè)備(或多個設(shè)備)的“短名”。如您所見,如有必要,多個設(shè)備能夠共享同一個 IRQ。還可以通過輸入 cat /proc/ioports 查看硬件設(shè)備正在使用的 IO 端口。八。Linux USBLinux USB 簡介配置內(nèi)核時,您可能注意到“USB support”節(jié),這一節(jié)包含屬于 USB(也稱為通用串行總線)的選項。USB 是將外圍設(shè)備連接到 PC 的相對較新的方法。目前,有 USB 鼠標(biāo)、鍵盤、游戲控制器、打印機、調(diào)制解調(diào)器和更多其它設(shè)備。因為 Linux USB 的支持相對較新,許多 Linux 用戶從未在其 Linux 系統(tǒng)上使用過 USB 設(shè)備,或可能還不完全熟悉 Linux USB 支持是如何工作的。以下幾頁將迅速地介紹 Linux USB 以幫助您入門。啟用 USB要啟用 Linux USB 支持,首先進入“USB support”節(jié)并啟用“Support for USB”選項。盡管這個步驟相當(dāng)直觀明了,但接下來的 Linux USB 設(shè)置步驟則會讓人感到糊涂。特別地,現(xiàn)在需要選擇用于系統(tǒng)的正確 USB 主控制器驅(qū)動程序。您的選項是“EHCI”、“UHCI”、“UHCI (alternate driver)”和“OHCI”。這是許多人對 Linux 的 USB 開始感到困惑的地方。UHCI、OHCI 和 EHCI ― 天。要理解“EHCI”及其同類是什么,首先要知道每塊支持插入 USB 設(shè)備的主板或 PCI 卡都需要有 USB 主控制器芯片組。這個特別的芯片組與插入系統(tǒng)的 USB 設(shè)備進行相互操作,并負責(zé)處理允許 USB 設(shè)備與系統(tǒng)其它部分通信所必需的所有低層次細節(jié)。Linux USB 驅(qū)動程序有三種不同的 USB 主控制器選項是因為在主板和 PCI 卡上有三種不同類型的 USB 芯片!癊HCI”驅(qū)動程序設(shè)計成為實現(xiàn)新的高速 USB 2.0 協(xié)議的芯片提供支持!癘HCI”驅(qū)動程序用來為非 PC 系統(tǒng)上的(以及帶有 SiS 和 ALi 芯片組的 PC 主板上的)USB 芯片提供支持!癠HCI”驅(qū)動程序用來為大多數(shù)其它 PC 主板(包括 Intel 和 Via)上的 USB 實現(xiàn)提供支持。只需選擇與希望啟用的 USB 支持的類型對應(yīng)的“?HCI”驅(qū)動程序即可。如有疑惑,為保險起見,可以啟用“ECHI”、“UHCI”(兩者中任選一種,它們之間沒有明顯的區(qū)別)和“OHCI”。最后幾步啟用了“USB support”和適當(dāng)?shù)摹?HCI”USB 主控制器驅(qū)動程序后,使 USB 啟動并運行只需再進行幾個步驟。應(yīng)該啟用“Preliminary USB device filesystem”,然后確保啟用所有特定于將與 Linux 一起使用的實際 USB 外圍設(shè)備的驅(qū)動程序。例如,為了啟用對 USB 游戲控制器的支持,我啟用了“USB Human Interface Device (full HID) support”。我還啟用了主“Input core support” 節(jié)下的“Input core support”和“Joystick support”。掛裝 usbdevfs一旦用新的已啟用 USB 的內(nèi)核重新引導(dǎo)后,應(yīng)輸入以下命令將 USB 設(shè)備文件系統(tǒng)掛裝到 /proc/bus/usb:# mount -t usbdevfs none /proc/bus/usb
為了在系統(tǒng)引導(dǎo)時自動掛裝 USB 設(shè)備文件系統(tǒng),請將下面一行添加到 /etc/fstab 中的 /proc 掛裝行之后:none            /proc/bus/usb             usbdevfs        defaults   0   0
有關(guān) USB 的更多信息,請訪問隨后在“參考資料”中列出的 USB 站點。
九。參考資料和反饋
參考資料
The Linux Kernel HOWTO
是另一個有關(guān)內(nèi)核編譯指導(dǎo)信息的出色的參考資料。
The LILO, Linux Crash Rescue HOW-TO
告訴您如何創(chuàng)建 Linux 緊急引導(dǎo)盤。
www.kernel.org
有許多 Linux 內(nèi)核壓縮文檔。
不要忘了
http://www.linuxdoc.org
。您將發(fā)現(xiàn) linuxdoc 的指南、HOWTO、FAQ 和手冊頁的集合是無價的。還請務(wù)必查看
Linux Gazette

LinuxFocus

The Linux System Administrator's guide 可以從
Linuxdoc.org 的“Guides”一節(jié)
獲得,這是對本教程系列的極佳補充 ― 不妨一讀!您還會發(fā)現(xiàn) Eric S. Raymond 的
Unix and Internet Fundamentals HOWTO
很有裨益。
developerWorks 上的 Bash by example 文章系列中,Daniel 向您顯示如何使用 bash 編程構(gòu)造編寫自己的 bash 腳本。本系列(特別是第一和第二部分)會是 LPI 考試的極佳的額外準備資料。

Mark Chapman 編寫的
Technical FAQ for Linux Users
是一篇長達 50 頁的內(nèi)容深入的列表,其中有經(jīng)常詢問的 Linux 問題及詳細的回答。FAQ 本身是 PDF(Adobe Acrobat)格式的。如果您是初級或中級 Linux 用戶,那么您確實應(yīng)擁有該 FAQ 以便進行查閱。同樣由 Mark 編寫的
為 Windows 用戶準備的簡明 Linux 詞匯表
也非常出色。
如果您還不太熟悉 vi 編輯器,那么您應(yīng)該查看 Daniel 編寫的
關(guān)于 Vi 的教程
。這篇 developerWorks 教程有條理而且快速地介紹這個功能強大的文本編輯器。如果您不知道如何使用 vi,請考慮這份必讀資料。
在 Daniel 的 developerWorks 軟件 RAID 系列:
第 1 部分

第 2 部分
中,可以找到有關(guān)軟件 RAID 的更多信息。邏輯卷管理對內(nèi)核添加了額外的存儲管理層,這個存儲管理層可以讓您輕松地對跨越多個磁盤的文件系統(tǒng)進行增加、縮小和跨越處理。要了解更多有關(guān) LVM 的知識,請參閱 Daniel 的關(guān)于這一主題的文章:
第 1 部分

第 2 部分
。軟件 RAID 和 LVM 都需要額外的用戶方工具和設(shè)置。
有關(guān)使用 iptables 命令設(shè)置自己的有狀態(tài)防火墻的更多信息,請參閱 developerWorks 教程
Linux 2.4 有狀態(tài)防火墻設(shè)計
。
有關(guān) USB 的更多信息,請訪問
http://www.linux-usb.org/
。有關(guān)其它 USB 設(shè)置和配置的指導(dǎo)信息,請務(wù)必閱讀
Linux-USB 指南
。
有關(guān) Linux Professional Institute 的更多信息,請訪問
LPI 主頁
。
您的反饋
我們期盼著您對本教程的反饋。此外,歡迎您通過
drobbins@gentoo.org
與作者 Daniel Robbins 直接聯(lián)系。


本文來自ChinaUnix博客,如果查看原文請點:http://blog.chinaunix.net/u/3984/showart_11577.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