欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Linux操作系統(tǒng)內(nèi)核編譯詳解

 更新時(shí)間:2006年10月24日 00:00:00   作者:  

    內(nèi)核簡介

內(nèi)核,是一個(gè)操作系統(tǒng)的核心。它負(fù)責(zé)管理系統(tǒng)的進(jìn)程、內(nèi)存、設(shè)備驅(qū)動(dòng)程序、文件和網(wǎng)絡(luò)系統(tǒng),決定著系統(tǒng)的性能和穩(wěn)定性。  

Linux的一個(gè)重要的特點(diǎn)就是其源代碼的公開性,所有的內(nèi)核源程序都可以在/usr/src/linux下找到,大部分應(yīng)用軟件也都是遵循GPL而設(shè)計(jì)的,你都可以獲取相應(yīng)的源程序代碼。全世界任何一個(gè)軟件工程師都可以將自己認(rèn)為優(yōu)秀的代碼加入到其中,由此引發(fā)的一個(gè)明顯的好處就是Linux修補(bǔ)漏洞的快速以及對(duì)最新軟件技術(shù)的利用。而Linux的內(nèi)核則是這些特點(diǎn)的最直接的代表。

想象一下,擁有了內(nèi)核的源程序?qū)δ銇碚f意味著什么?首先,我們可以了解系統(tǒng)是如何工作的。通過通讀源代碼,我們就可以了解系統(tǒng)的工作原理,這在Windows下簡直是天方夜譚。其次,我們可以針對(duì)自己的情況,量體裁衣,定制適合自己的系統(tǒng),這樣就需要重新編譯內(nèi)核。在Windows下是什么情況呢?相信很多人都被越來越龐大的Windows整得莫名其妙過。再次,我們可以對(duì)內(nèi)核進(jìn)行修改,以符合自己的需要。這意味著什么?沒錯(cuò),相當(dāng)于自己開發(fā)了一個(gè)操作系統(tǒng),但是大部分的工作已經(jīng)做好了,你所要做的就是要增加并實(shí)現(xiàn)自己需要的功能。在Windows下,除非你是微軟的核心技術(shù)人員,否則就不用癡心妄想了。

內(nèi)核版本號(hào)

由于Linux的源程序是完全公開的,任何人只要遵循GPL,就可以對(duì)內(nèi)核加以修改并發(fā)布給他人使用。Linux的開發(fā)采用的是集市模型(bazaar,與cathedral--教堂模型--對(duì)應(yīng)),為了確保這些無序的開發(fā)過程能夠有序地進(jìn)行,Linux采用了雙樹系統(tǒng)。一個(gè)樹是穩(wěn)定樹(stable tree),另一個(gè)樹是非穩(wěn)定樹(unstable tree)或者開發(fā)樹(development tree)。一些新特性、實(shí)驗(yàn)性改進(jìn)等都將首先在開發(fā)樹中進(jìn)行。如果在開發(fā)樹中所做的改進(jìn)也可以應(yīng)用于穩(wěn)定樹,那么在開發(fā)樹中經(jīng)過測(cè)試以后,在穩(wěn)定樹中將進(jìn)行相同的改進(jìn)。一旦開發(fā)樹經(jīng)過了足夠的發(fā)展,開發(fā)樹就會(huì)成為新的穩(wěn)定樹。開發(fā)數(shù)就體現(xiàn)在源程序的版本號(hào)中;源程序版本號(hào)的形式為x.y.z:對(duì)于穩(wěn)定樹來說,y是偶數(shù);對(duì)于開發(fā)樹來說,y比相應(yīng)的穩(wěn)定樹大一(因此,是奇數(shù))。到目前為止,穩(wěn)定樹的最高版本是2.2.16,最新發(fā)布的Redhat7.0所采用的就是2.2.16的內(nèi)核;開發(fā)樹的最新版本是2.3.99。也許你已經(jīng)發(fā)現(xiàn)和多網(wǎng)站上都有2.4.0-test9-pre7之類的內(nèi)核,但是這并不是正式版本。

為什么重新編譯內(nèi)核

Linux作為一個(gè)自由軟件,在廣大愛好者的支持下,內(nèi)核版本不斷更新。新的內(nèi)核修訂了舊內(nèi)核的bug,并增加了許多新的特性。如果用戶想要使用這些新特性,或想根據(jù)自己的系統(tǒng)度身定制一個(gè)更高效,更穩(wěn)定的內(nèi)核,就需要重新編譯內(nèi)核。

通常,更新的內(nèi)核會(huì)支持更多的硬件,具備更好的進(jìn)程管理能力,運(yùn)行速度更快、 更穩(wěn)定,并且一般會(huì)修復(fù)老版本中發(fā)現(xiàn)的許多漏洞等,經(jīng)常性地選擇升級(jí)更新的系統(tǒng)內(nèi)核是Linux使用者的必要操作內(nèi)容。

為了正確的合理地設(shè)置內(nèi)核編譯配置選項(xiàng),從而只編譯系統(tǒng)需要的功能的代碼,一般主要有下面四個(gè)考慮:

自己定制編譯的內(nèi)核運(yùn)行更快(具有更少的代碼)
系統(tǒng)將擁有更多的內(nèi)存(內(nèi)核部分將不會(huì)被交換到虛擬內(nèi)存中)
不需要的功能編譯進(jìn)入內(nèi)核可能會(huì)增加被系統(tǒng)攻擊者利用的漏洞
將某種功能編譯為模塊方式會(huì)比編譯到內(nèi)核內(nèi)的方式速度要慢一些

    內(nèi)核編譯模式


要增加對(duì)某部分功能的支持,比如網(wǎng)絡(luò)之類,可以把相應(yīng)部分編譯到內(nèi)核中(build-in),也可以把該部分編譯成模塊(module),動(dòng)態(tài)調(diào)用。如果編譯到內(nèi)核中,在內(nèi)核啟動(dòng)時(shí)就可以自動(dòng)支持相應(yīng)部分的功能,這樣的優(yōu)點(diǎn)是方便、速度快,機(jī)器一啟動(dòng),你就可以使用這部分功能了;缺點(diǎn)是會(huì)使內(nèi)核變得龐大起來,不管你是否需要這部分功能,它都會(huì)存在,這就是Windows慣用的招數(shù),建議經(jīng)常使用的部分直接編譯到內(nèi)核中,比如網(wǎng)卡。如果編譯成模塊,就會(huì)生成對(duì)應(yīng)的.o文件,在使用的時(shí)候可以動(dòng)態(tài)加載,優(yōu)點(diǎn)是不會(huì)使內(nèi)核過分龐大,缺點(diǎn)是你得自己來調(diào)用這些模塊。

內(nèi)核編譯詳解

新版本內(nèi)核的獲取和更新

國內(nèi)各大ftp上一般都可以找到某些版本的內(nèi)核。新版本的內(nèi)核的發(fā)布有兩種形式,一種是完整的內(nèi)核版本,另外一種是patch文件,即補(bǔ)丁。完整的內(nèi)核版本比較大,比如linux-2.4.0-test8.tar.bz2就有18M之多,網(wǎng)速快的用戶可以下載使用。完整內(nèi)核版本一般是.tar.gz(.tgz)文件或者是.bz2文件,二者分別是使用gzip或者bzip2進(jìn)行壓縮的文件,使用時(shí)需要解壓縮。patch文件則比較小,一般只有幾十K到幾百K,極少的會(huì)超過1M,網(wǎng)速慢的用戶可以使用patch文件來升級(jí)內(nèi)核。但是patch文件是針對(duì)于特定的版本的,你需要找到自己對(duì)應(yīng)的版本才能使用。

編譯內(nèi)核需要root權(quán)限,以下操作都假定你是root用戶。請(qǐng)把你需要升級(jí)的內(nèi)核拷貝到/usr/src/下(下文中以2.4.0test8的內(nèi)核的linux-2.4.0test8.tar.gz為例),命令為

#cp linux-2.4.0test8.tar.gz /usr/src

讓我們先來查看一下當(dāng)前/usr/src的內(nèi)容,注意到有一個(gè)linux的符號(hào)鏈接,它指向一個(gè)類似于linux-2.2.14(對(duì)應(yīng)于你現(xiàn)在使用的內(nèi)核版本號(hào))的目錄。首先刪除這個(gè)鏈接:

#cd /usr/src
#rm -f linux

現(xiàn)在解壓我們下載的源程序文件。如果所下載的是.tar.gz(.tgz)文件,請(qǐng)使用下面的命令:

#tar -xzvf linux-2.4.0test8.tar.gz

如果你所下載的是.bz2文件,例如linux-2.4.0test8.tar.bz2,請(qǐng)使用下面的命令

#bzip2 -d linux-2.4.0test8.tar.bz2
#tar -xvf linux.2.4.0.test8.tar

現(xiàn)在讓我們?cè)賮砜匆幌?usr/src下的內(nèi)容,你會(huì)發(fā)現(xiàn)現(xiàn)在有了一個(gè)名為linux的目錄,里面就是我們需要升級(jí)到的版本的內(nèi)核的源程序。還記得那個(gè)名為linux的鏈接么?之所以使用那個(gè)鏈接就是防止在升級(jí)內(nèi)核的時(shí)候會(huì)不慎把原來版本內(nèi)核的源程序給覆蓋掉了。我們也需要同樣處理:

#mv linux linux-2.4.0test8
#ln -s linux-2.4.0test8 linux

這樣我們也有了一個(gè)名為linux的符號(hào)鏈接,就不用擔(dān)心以后會(huì)把它覆蓋掉了(也許你會(huì)覺得重新建立linux的符號(hào)鏈接沒有必要,但實(shí)際上這是必不可少的,下文中會(huì)有介紹)。如果你還下載了patch文件,比如patch-2.4.0test8,你就可以進(jìn)行patch操作(下面假設(shè)patch-2.4.0test8已經(jīng)位于/usr/src目錄下了,否則你需要先把該文件拷貝到/usr/src下):

#patch -p0 < patch-2.4.0test8

現(xiàn)在,我們已經(jīng)把內(nèi)核源程序升級(jí)到最新版本了,下面就讓我們開始內(nèi)核編譯的旅程吧。

    準(zhǔn)備工作


通常要運(yùn)行的第一個(gè)命令是:

#cd /usr/src/linux;make mrproper

該命令確保源代碼目錄下沒有不正確的.o文件以及文件的互相依賴。由于我們使用剛下載的完整的源程序包進(jìn)行編譯,所以本步可以省略。而如果你多次使用了這些源程序編譯內(nèi)核,那么最好要先運(yùn)行一下這個(gè)命令。
確保/usr/include/目錄下的asm、linux和scsi等鏈接是指向要升級(jí)的內(nèi)核源代碼的。它們分別鏈向源代碼目錄下的真正的、該計(jì)算機(jī)體系結(jié)構(gòu)(對(duì)于PC機(jī)來說,使用的體系結(jié)構(gòu)是i386)所需要的真正的include子目錄。如:asm指向/usr/src/linux/include/asm-i386等。若沒有這些鏈接,就需要手工創(chuàng)建,按照下面的步驟進(jìn)行:

# cd /usr/include/
# rm -r asm linux scsi
# ln -s /usr/src/linux/include/asm-i386 asm
# ln -s /usr/src/linux/include/linux linux
# ln -s /usr/src/linux/include/scsi scsi

這是配置非常重要的一部分。刪除掉/usr/include下的asm、linux和scsi鏈接后,再創(chuàng)建新的鏈接指向新內(nèi)核源代碼目錄下的同名的目錄。這些頭文件目錄包含著保證內(nèi)核在系統(tǒng)上正確編譯所需要的重要的頭文件。現(xiàn)在你應(yīng)該明白為什么我們上面又在/usr/src下"多余"地創(chuàng)建了個(gè)名為linux的鏈接了吧?
配置

接下來的內(nèi)核配置過程比較煩瑣,但是配置的適當(dāng)與否與日后Linux的運(yùn)行直接相關(guān),有必要了解一下一些主要的且經(jīng)常用到的選項(xiàng)的設(shè)置。
配置內(nèi)核可以根據(jù)需要與愛好使用下面命令中的一個(gè):

#make config(基于文本的最為傳統(tǒng)的配置界面,不推薦使用)
#make menuconfig(基于文本選單的配置界面,字符終端下推薦使用)
#make xconfig(基于圖形窗口模式的配置界面,Xwindow下推薦使用)
#make oldconfig(如果只想在原來內(nèi)核配置的基礎(chǔ)上修改一些小地方,會(huì)省去不少麻煩)

這三個(gè)命令中,make xconfig的界面最為友好,如果你可以使用Xwindow,那么就推薦你使用這個(gè)命令。

如果你不能使用Xwindow,那么就使用make menuconfig好了。界面雖然比上面一個(gè)差點(diǎn),總比make config的要好多了。

選擇相應(yīng)的配置時(shí),有三種選擇,它們分別代表的含義如下:

  Y--將該功能編譯進(jìn)內(nèi)核
  N--不將該功能編譯進(jìn)內(nèi)核
  M--將該功能編譯成可以在需要時(shí)動(dòng)態(tài)插入到內(nèi)核中的模塊

如果使用的是make xconfig,使用鼠標(biāo)就可以選擇對(duì)應(yīng)的選項(xiàng)。如果使用的是make menuconfig,則需要使用空格鍵進(jìn)行選取。你會(huì)發(fā)現(xiàn)在每一個(gè)選項(xiàng)前都有個(gè)括號(hào), 但有的是中括號(hào)有的是尖括號(hào),還有一種圓括號(hào)。 用空格鍵選擇時(shí)可以發(fā)現(xiàn),中括號(hào)里要么是空,要么是"*",而尖括號(hào)里可以是空,"*"和"M"這表示前者對(duì)應(yīng)的項(xiàng)要么不要,要么編譯到內(nèi)核里;后者則多一樣選擇,可以編譯成模塊。而圓括號(hào)的內(nèi)容是要你在所提供的幾個(gè)選項(xiàng)中選擇一項(xiàng)。

在編譯內(nèi)核的過程中,最煩雜的事情就是這步配置工作了,很多新手都不清楚到底該如何選取這些選項(xiàng)。實(shí)際上在配置時(shí),大部分選項(xiàng)可以使用其缺省值,只有小部分需要根據(jù)用戶不同的需要選擇。選擇的原則是將與內(nèi)核其它部分關(guān)系較遠(yuǎn)且不經(jīng)常使用的部分功能代碼編譯成為可加載模塊,有利于減小內(nèi)核的長度,減小內(nèi)核消耗的內(nèi)存,簡化該功能相應(yīng)的環(huán)境改變時(shí)對(duì)內(nèi)核的影響;不需要的功能就不要選;與內(nèi)核關(guān)心緊密而且經(jīng)常使用的部分功能代碼直接編譯到內(nèi)核中。下面就讓我們對(duì)常用的選項(xiàng)分別加以介紹。

1. Code maturity level options
代碼成熟等級(jí)。此處只有一項(xiàng):prompt for development and/or incomplete code/drivers,如果你要試驗(yàn)現(xiàn)在仍處于實(shí)驗(yàn)階段的功能,比如khttpd、IPv6等,就必須把該項(xiàng)選擇為Y了;否則可以把它選擇為N。

2. Loadable module support
對(duì)模塊的支持。這里面有三項(xiàng):

Enable loadable module support:除非你準(zhǔn)備把所有需要的內(nèi)容都編譯到內(nèi)核里面,否則該項(xiàng)應(yīng)該是必選的。
Set version information on all module symbols:可以不選它。
Kernel module loader:讓內(nèi)核在啟動(dòng)時(shí)有自己裝入必需模塊的能力,建議選上。

    3. Processor type and features
CPU類型。內(nèi)容蠻多的,不一一介紹了,有關(guān)的幾個(gè)如下:


Processor family:根據(jù)你自己的情況選擇CPU類型。
High Memory Support:大容量內(nèi)存的支持。可以支持到4G、64G,一般可以不選。
Math emulation:協(xié)處理器仿真。協(xié)處理器是在386時(shí)代的寵兒,現(xiàn)在早已不用了。
MTTR support:MTTR支持??刹贿x。
Symmetric multi-processing support:對(duì)稱多處理支持。除非你富到有多個(gè)CPU,否則就不用選了。

4. General setup
這里是對(duì)最普通的一些屬性進(jìn)行設(shè)置。這部分內(nèi)容非常多,一般使用缺省設(shè)置就可以了。下面介紹一下經(jīng)常使用的一些選項(xiàng):

Networking support:網(wǎng)絡(luò)支持。必須,沒有網(wǎng)卡也建議你選上。
PCI support:PCI支持。如果使用了PCI的卡,當(dāng)然必選。
PCI access mode:PCI存取模式??晒┻x擇的有BIOS、Direct和Any,選Any吧。
Support for hot-pluggabel devices:熱插拔設(shè)備支持。支持的不是太好,可不選。
PCMCIA/CardBus support:PCMCIA/CardBus支持。有PCMCIA就必選了。
System V IPC
BSD Process Accounting
Sysctl support:以上三項(xiàng)是有關(guān)進(jìn)程處理/IPC調(diào)用的,主要就是System V和BSD兩種風(fēng)格。如果你不是使用BSD,就按照缺省吧。
Power Management support:電源管理支持。
Advanced Power Management BIOS support:高級(jí)電源管理BIOD支持。

5. Memory Technology Device(MTD)
MTD設(shè)備支持。可不選。

6. Parallel port support
串口支持。如果不打算使用串口,就別選了。

7. Plug and Play configuration
即插即用支持。雖然Linux對(duì)即插即用目前支持的不如Windows好,但是還是選上吧,這樣你可以拔下鼠標(biāo)之類的體驗(yàn)一下Linux下即插即用的感覺。

8. Block devices
塊設(shè)備支持。這個(gè)就得針對(duì)自己的情況來選了,簡單說明一下吧:

Normal PC floppy disk support:普通PC軟盤支持。這個(gè)應(yīng)該必選。
XT hard disk support:
Compaq SMART2 support:
Mulex DAC960/DAC1100 PCI RAID Controller support:RAID鏡像用的。
Loopback device support:
Network block device support:網(wǎng)絡(luò)塊設(shè)備支持。如果想訪問網(wǎng)上鄰居的東西,就選上。
Logical volume manager(LVM)support:邏輯卷管理支持。
Multiple devices driver support:多設(shè)備驅(qū)動(dòng)支持。
RAM disk support:RAM盤支持。

9. Networking options
網(wǎng)絡(luò)選項(xiàng)。這里配置的是網(wǎng)絡(luò)協(xié)議。內(nèi)容太多了,不一一介紹了,自己看吧,如果你對(duì)網(wǎng)絡(luò)協(xié)議有所了解的話,應(yīng)該可以看懂的。如果懶得看,使用缺省選項(xiàng)(肯定要選中TCP/IP networking哦)就可以了。讓我們看看,TCP/IP、ATM、IPX、DECnet、Appletalk……支持的協(xié)議好多哦,IPv6也支持了,Qos and/or fair queueing(服務(wù)質(zhì)量公平調(diào)度)也支持了,還有kHTTPd,不過這些都還在實(shí)驗(yàn)階段。

10. Telephony Support
電話支持。這個(gè)是什么東東?讓我查查幫助,原來是Linux下可以支持電話卡,這樣你就可以在IP上使用普通的電話提供語音服務(wù)了。記住,電話卡可和modem沒有任何關(guān)系哦。

11. ATA/IDE/MFM/RLL support
這個(gè)是有關(guān)各種接口的硬盤/光驅(qū)/磁帶/軟盤支持的,內(nèi)容太多了,使用缺省的選項(xiàng)吧,如果你使用了比較特殊的設(shè)備,比如PCMCIA等,就到里面自己找相應(yīng)的選項(xiàng)吧。


    12. SCSI support
SCSI設(shè)備的支持。我沒有SCSI的設(shè)備,所以根本就不用選,如果你用了SCSI的硬盤/光驅(qū)/磁帶等設(shè)備,自己找好了。


13. IEEE 1394(FireWire)support
這個(gè)是什么?低版本的沒有見過,看看幫助再說。原來是要Fireware硬件來提高串行總線的性能,我沒有,不選了。

14. I2O device support
這個(gè)也不清楚,幫助里說是這個(gè)需要I2O接口適配器才能支持的,在智能Input/Output(I2O)體系接口中使用,又是要硬件,不選了。

15. Network device support
網(wǎng)絡(luò)設(shè)備支持。上面選好協(xié)議了,現(xiàn)在該選設(shè)備了,可想而知,內(nèi)容肯定多得很。還好還好,里面大概分類了,有ARCnet設(shè)備、Ethernet(10 or 100 Mbit)、Ethernet(1000Mbit)、Wireless LAN(non-hamradio)、Token Ring device、Wan interfaces、PCMCIA network device support幾大類。我用的是10/100M的以太網(wǎng),看來只需要選則這個(gè)了。還是10/100M的以太網(wǎng)設(shè)備熟悉,內(nèi)容雖然多,一眼就可以看到我所用的RealTeck RTL-8139 PCI Fast Ethernet Adapter support,為了免得麻煩,編譯到內(nèi)核里面好了,不選M了,選Y。耐心點(diǎn),一般說來你都能找到自己用的網(wǎng)卡。如果沒有,你只好自己到廠商那里去要驅(qū)動(dòng)了。

16. Amateur Radio support
又一個(gè)不懂的,應(yīng)該是配置業(yè)余無線廣播的吧,沒有,不要了。

17. IrDA(infrared)support
這個(gè)要紅外支持,免了。

18. ISDN subsystem
如果你使用ISDN上網(wǎng),這個(gè)就必不可少了。自己看著辦好了。

19. Old CD-ROM drivers(not SCSI、not IDE)
做的可真周到,原來那些非SCSI/IDE口的光驅(qū)誰還在用啊,自己選吧,反正我是用的IDE的CD-ROM,不選這個(gè)。

20. Character devices
字符設(shè)備。這個(gè)內(nèi)容又太多了,先使用缺省設(shè)置,需要的話自己就修改。把大類介紹一下吧:

I2C support:I2C是Philips極力推動(dòng)的微控制應(yīng)用中使用的低速串行總線協(xié)議。如果你要選擇下面的Video For Linux,該項(xiàng)必選。
Mice:鼠標(biāo)。現(xiàn)在可以支持總線、串口、PS/2、C&T 82C710 mouse port、PC110 digitizer pad,自己根據(jù)需要選擇。
Joysticks:手柄。即使在Linux下把手柄驅(qū)動(dòng)起來意義也不是太大,游戲太少了。
Watchdog Cards:雖然稱為Cards,這個(gè)可以用純軟件來實(shí)現(xiàn),當(dāng)然也有硬件的。如果你把這個(gè)選中,那么就會(huì)在你的/dev下創(chuàng)建一個(gè)名為watchdog的文件,它可以記錄你的系統(tǒng)的運(yùn)行情況,一直到系統(tǒng)重新啟動(dòng)的1分鐘左右。有了這個(gè)文件,你就可以恢復(fù)系統(tǒng)到重啟前的狀態(tài)了。
Video For Linux:支持有關(guān)的音頻/視頻卡。
Ftape, the floppy tape device driver:
PCMCIA character device support:

21. File systems
文件系統(tǒng)。內(nèi)容又太多了,老法子,在缺省選項(xiàng)的基礎(chǔ)上進(jìn)行修改。介紹以下幾項(xiàng):

Quota support:Quota可以限制每個(gè)用戶可以使用的硬盤空間的上限,在多用戶共同使用一臺(tái)主機(jī)的情況中十分有效。
DOS FAT fs support:DOS FAT文件格式的支持,可以支持FAT16、FAT32。
ISO 9660 CD-ROM file system support:光盤使用的就是ISO 9660的文件格式。
NTFS file system support:ntfs是NT使用的文件格式。
/proc file system support:/proc文件系統(tǒng)是Linux提供給用戶和系統(tǒng)進(jìn)行交互的通道,建議選上,否則有些功能沒法正確執(zhí)行。

還有另外三個(gè)大類都規(guī)到這兒了:Network File Systems(網(wǎng)絡(luò)文件系統(tǒng))、Partition Types(分區(qū)類型)、Native Language Support(本地語言支持)。值得一提的是Network File Systems里面的兩種:NFS和SMB分別是Linux和Windows相互以網(wǎng)絡(luò)鄰居的形式訪問對(duì)方所使用的文件系統(tǒng),根據(jù)需要加以選擇。

22. Console drivers
控制臺(tái)驅(qū)動(dòng)。一般使用VGA text console就可以了,標(biāo)準(zhǔn)的80*25的文本控制臺(tái)。

23. Sound
聲卡驅(qū)動(dòng)。如果你能在列表中找到聲卡驅(qū)動(dòng)那自然最好,否則就試試OSS了。

24. USB supprot
USB支持。很多USB設(shè)備,比如鼠標(biāo)、調(diào)制解調(diào)器、打印機(jī)、掃描儀等,在Linux都可以得到支持,根據(jù)需要自行選擇。

25. Kernel hacking
配置了這個(gè),即使在系統(tǒng)崩潰時(shí),你也可以進(jìn)行一定的工作了。普通用戶是用不著這個(gè)功能的。

總算配置完了,現(xiàn)在存盤退出,當(dāng)然你也可以把現(xiàn)在的配置文件保存起來,這樣下次再配置的時(shí)候就省力氣了。


編譯


在繁雜的配置工作完成以后,下面你就可以自己到杯茶耐心等候了。與編譯有關(guān)的命令有如下幾個(gè):

#make dep
#make clean
#make zImage
#make bzImage
#make modules
#make modules_install
#depmod -a

第一個(gè)命令make dep實(shí)際上讀取配置過程生成的配置文件,來創(chuàng)建對(duì)應(yīng)于配置的依賴關(guān)系樹,從而決定哪些需要編譯而那些不需要;第二命令make clean完成刪除前面步驟留下的文件,以避免出現(xiàn)一些錯(cuò)誤;第三個(gè)命令make zImage和第四個(gè)命令make bzImage實(shí)現(xiàn)完全編譯內(nèi)核,二者生成的內(nèi)核都是使用gzip壓縮的,只要使用一個(gè)就夠了,它們的區(qū)別在于使用make bzImage可以生成大一點(diǎn)的內(nèi)核,比如在編譯2.4.0版本的內(nèi)核時(shí)如果使用make zImage命令,那么就會(huì)出現(xiàn)system too big的錯(cuò)誤提示。建議大家使用make bzImage命令。

后面三個(gè)命令只有在你進(jìn)行配置的過程中,在回答Enable loadable module support (CONFIG_MODULES)時(shí)選了"Yes"才是必要的,make modules和make modules_install分別生成相應(yīng)的模塊和把模塊拷貝到需要的目錄中。

嚴(yán)格說來,第七個(gè)命令和編譯過程并沒有關(guān)系,它是生成模塊間的依賴關(guān)系,這樣你啟動(dòng)新內(nèi)核之后,使用modprobe命令加載模塊時(shí)就能正確地定位模塊。

更新

經(jīng)過以上的步驟,我們終于得到了新版本的內(nèi)核。為了能夠使用新版本的內(nèi)核,我們還需要做一些改動(dòng):

#cp /usr/src/linux/System.map /boot/System.map-2.4.0test8
#cp /usr/src/linux/arch/i386/bzImage /boot/vmlinuz-2.4.0test8

以上這兩個(gè)文件是我們剛才編譯時(shí)新生成的。下面修改/boot下的兩個(gè)鏈接System.map和vmlinuz,使其指向新內(nèi)核的文件:

#cd /boot;rm -f System.map vmlinuz
#ln -s vmlinuz-2.4.0test8 vmlinuz
#ln -s System.map-2.4.0test8 System.map

然后修改/etc/lilo.conf:

#vi /etc/lilo.conf

增加如下一段:

image=/boot/vmlinuz-2.4.0test8
label=linux240
read-only
root=/dev/hda2

其中root=/dev/hda2一行要根據(jù)需要自行加以修改。
運(yùn)行:

#/sbin/lilo -v

確認(rèn)對(duì)/etc/lilo.conf的編輯無誤,現(xiàn)在重新啟動(dòng)系統(tǒng):

#shutdown -r now

在機(jī)器重啟后出現(xiàn)LILO時(shí)按TAB鍵,輸入linux240,我們的新內(nèi)核發(fā)揮作用了,好好享受吧。

 


 

相關(guān)文章

最新評(píng)論