萬盛學電腦網

 萬盛學電腦網 >> Linux教程 >> linux內核的編譯

linux內核的編譯

class="22672"> 1.;要怎麽進行核心的配置?
1.1.;取得原始程序碼
你可以經由;ftp;從;ftp.funet.fi;或是;mirror;in;/pub/OS/Linux/PEOPLE/Linus;取
得原始程序碼。也可以到這個節點的;mirror;或其他節點去拿。檔案名稱一般是以標記
成;linux-x.x.x.tar.gz;為代表,其中的;x.x.x;是版本編號。較新的(更好的?)版
本以及修補檔一般是放在類似”v1.1;”以及”v1.2”這樣的子目錄下。
強烈建議你去找;mirror;的;ftp;節點,而不要直接到;ftp.funet.fi;去!底下是一些
mirrors;以及其他節點的簡要列表
(;ftp.funet.fi;的;mirror;節點:)
Germany:ftp.Germany.EU.net
UK:;;;;;doc.ic.ac.uk
Australia:;;;;;;kirk.bu.oz.au
(;其它有擺放核心檔案的節點:)
USA:;;;;tsx-11.mit.edu
USA:;;;;sunsite.unc.edu
Germany:ftp.dfv.rwth-aachen.de
如果你沒有辦法上;ftp;,有個存放;linux;的;BBS;系統列表會定期刊登在
comp.os.linux.announce;上,試著到那邊去找點幫助。
1.2.;解開原始程序碼的包裝
確定你是以″;root;″的身份簽入,然後;cd;到;/usr/src;。如果你的;linux;是從其
它任何可能的地方取得的,在這個目錄底下應該已經存在一個叫做”;linux;”的子目
錄。這是舊版的;linux;原始程序碼。如果你還有磁碟空間而且想要玩得安全一點,那
麽你會想要保留這個子目錄的。有個好主意是根據你目前使用的核心版本來修改這個子
目錄的名稱。″;uname;-r;″這個指令將會告訴你新的版本。
所以,如果″;uname;-r;″顯示″;1.1.47,″你就可以把″;linux;″改名為
″;Linux-1.1.47;。″如果你是個魯莽型的人,那就直接把這個子目錄清除掉。無論是
哪一種情況,反正只要確定在解開全部的原始程序碼之前,;/usr/src;目錄下沒有
”linux;”這個子目錄就對了。
在;/usr/src;目錄下,用″zcat;linux.x.x.tar.gz;|;tar;xvf-;″來解開原始程序碼
的包裝(你也可以用更簡單的″;tar;zxvf;linux.x.x.x.tar.gz″;如果你拿到的是
..tar;的檔案(後面沒有加上;;gz;),那就用”;tar;xvf;linux.x.x.x.tar;”)。你
將會看到原始程序的內容飛逝而過。當它完成以後,將會出現一個新的″;linux;”子
目錄。
″;cd;″到;linux;目錄下然後查看;README;檔,裡面應該會有一段標題為
″INSTALLING;the;kernel″;或類似的文字。如果適當的話,先執行說明裡的指示;—
建立該有的符號鏈結,移除過時的;.o;檔案等等等諸如此類的工作。
1.3.;配置核心
注意:這部份內容有些是重覆;Linus;的;README;檔案中的相應章節或加以修訂。
在;/usr/src/linux;下執行″;make;config;″;這個命令將會啟始一個指令稿,而這個
指令稿會問你各種問題。它需要;bash;,所以要確定;bash;是;/bin/bash,/bin/sh;或
$BASH;。
你現在該准備好回答這些問題,通常用″;y;″或″;n;″就可以了。有一些很明顯或是
不重要的選項將不會在此加以說明。
1.3.1.;Kernel;math;emulation;(核心的浮點運算模擬)
如果你沒有數學輔助運算處理機(ie,你只有一台單純的;386;或;486SX;),那麽你在
這裡要回答″;y;″。如果你已經有數學輔助運算處理機卻還回答″;y;″,那也不必太
擔心;—;linux;還是會去使用它而忽略掉核心的模擬程序。唯一的影響是編譯出來的核
心變大了。
1.3.2.;Normal;harddisk;support;(標准硬碟支援)
你在這裡差不多都得回答″;y;″。它代表的意思是核心將會支援標准的;PC;磁碟,例
如大多數人使用的;IDE;界面硬碟。這不包括;SCSI;設備的支援。
1.3.3.;Networking;support;(網絡支援)
如果你有連接網絡,譬如說,你與;internet;有連線,或是你將使用;SLIP,PPP,term
或其它方式撥接到;internet;上的話,回答″;y;。″
1.3.4.;Limit;memory;to;low;16MB;(限制記憶體在;16;MB)
如果你的記憶體不到;16;MB,幾乎一定要回答″;y;″;那麽當你使用這個核心的時候
將會節省一點記憶體。但是,當然羅,如果你有;16;MB;以上的記憶體而不回答″;n;″
的話,這個新的核心將只使用其中的;16;MB;,即使你有;34;billion;megs;也一樣。
也可能會有一些不良的;386;DMA;controllers(或是一些與硬件有關的東西)無法正確
地定址到;16;megs;以上的記憶體位址;你的機器剛好有這種情況時(罕見),那麽你
也就只好回答″;y;″了。
1.3.5.;Use;-m486;flag;for;486-specific;optimizations
(使用;-m486;旗標指定對;486;做最佳化)
這將會為核心做;486;最佳化處理。新的核心將會變得稍微大一些,如果你擔心的話的
話,其實它還是可以在;386;上執行。只是會比較慢,不過你感覺不出來的。
1.3.6.;SCSI;support;(SCSI;的支援)
如果你有;SCSI;設備,那麽就回答”;y;。”接著會有提示要求更進一步的資訊,像是
你是否要支援光碟機,磁碟機,還有你使用的是那一種;SCSI;介面卡。這部份請參閱
SCSI-HOWTO;,有更詳細的說明。
1.3.7.;Network;device;support;(網絡設備支援)
如果你有以太網絡卡,或者你想要使用;SLIP,PPP,或是並列埠界面卡,那就回答
″;y;″,接著會有提示問你使用的是那一種網絡卡,或要使用那一種串列通訊協定。
1.3.8.;Filesystems;(文件系統)
這將會有提示要你回答所要支援的文件系統種類,計有:
Standard(;minix;)—;新的套件不再建立;minix;文件系統,而且很多人不使用它,
但是把它配置在核心裡仍然是個好主意。某些″;rescue-disk;″;程序會用到它,而且
仍然有許多磁片可能用;minix;文件系統,因為;minix;文件系統對於處理磁片方面是最
好的。
Extended;fs;—;這是擴充文件系統的第一版,現在已經不再使用。使用的時機是,如
果你有需要,你就會知道的。
Second;extented;—;這是現在新發行的套件所廣泛采用的文件系統,你可能會有其中
一種。
xiafs;filesystem;—;這個文件系統曾經一度很普遍,但是在寫這份文件時,我已經不
知道有任何人在使用它了。
msdos;—;嗯,你猜對了;如果你想要在;linux;下使用你硬碟中的;MS-DOS;分割區,或
是想將用;MS-DOS;格式化的磁片掛進來的話,回答″;y;″。
ums-dos;—;這是一個相當;slick;的文件系統,它能使;MS-DOS;文件系統擁有更多的特
性,像是長檔名等等。這對那些不使用;MS-DOS;的人(像我)並不是很有用。
/proc;—;這是最;slick;的文件系統之一(我猜這個概念是無恥地從貝爾實驗室裡偷過
來的)。它不是你硬碟分割區裡的任何東西,而是核心與程序之間的文件系統介面。許
多程序工具(像″;ps;″)都會用到它。
如果你已經將它安裝好了,有空不妨試試看″;cat;/proc/meminfo;″或者是
″;cat;/proc/devices;″。有些;shells;,像是;rc;,會用;/proc/self/fd(在其它
系統上為;/dev/fd;)來處理輸出入。幾乎可以確定你在這裡得要回答″;y;″,有許多
重要的;Linux;標准工具是靠它來運作的。
NFS;—;如果你在網絡環境下而且想要分享檔案,回答″;y;。″
ISO9660;—;絕大部分的光碟都使用這個文件系統。
OS/2;HPFS;—;在編寫這份文件的時候,這個文件系統還只支援到;OS/2;HPFS;的讀取。
System;V;and;Coherent;—;這是為;System;V;以及;Coherent;的分割區而設的。
1.3.8.1.;但是我不知道我需要那些文件系統!
好吧,鍵入″;mount;。″它看起來會像這樣:
blah%;mount
/dev/hda1;on;/;type;ext2;(defaults)
/dev/hda3;on;/usr;type;ext2;(defaults)
none;on;/proc;type;proc;(defaults)
/dev/fd0;on;/mnt;type;msdos;(defaults)
仔細看看每一行;在”;type;”後面的那個字就是文件系統的格式。在這個例子中,我
的;/;和;/usr;分割區是;second;extended;格式,我有使用;/proc;,而且掛有一張以
msdos;(bleah);為文件系統格式的磁片。
如果你有使用;/proc;,可以試試″;cat;/proc/filesystems;″。它會給你一份目前使
用的核心所支援的文件系統列表。
1.3.9.;Character;devices;(字元設備)
在這裡,你將會發現許多設備名稱,用來設定你的印表機,匯流排滑鼠,PS/2;滑鼠(
大部分筆記型電腦使用內建的;PS/2;滑鼠),以及一些磁帶機驅動程序,selection;。
當有合適的選項時,回答”;y;”。
注意:”;Selection;”讓你能夠執行一個程序,這個程序使你可以在;X-windows;之外
使用滑鼠在各個虛擬控制台間做剪貼的動作。如果你有串列滑鼠的話,這真的很棒,因
為它與;X-windows;之間的溝通良好,然而在編寫這份文件的時候,它跟;PS/2;滑鼠還
是處不來(它會鎖住滑鼠所使用的埠,使得你在殺掉這個;selection;程序之前都不可
能執行;X-windows;。)。
1.3.10.;Sound;card;(聲卡)
如果你對於讓隔壁的人保持清醒有興趣的話,回答″;y;,″然後等一下會有一個配置
程序編譯並詳細詢問你所有關於你的聲卡的問題。
1.3.11.;kernel;hacking
>這是從;Linus;的;README;裡摘錄的:
″;kernel;hacking;″配置的細節通常會產生一個更大或是更慢的核心(或者是又大又
慢),而且可能因為將一些常式配置成很活躍地去嘗試中斷一些不良的程序碼以便找出
核心裡的問題(;kmalloc();),而使得核心變得比較不穩定。所以要產生一個核心″
產品;″的話,你在這裡應該回答″;n;″。
1.4.;現在呢?(;The;Makefile;)
現在應該會有一個訊息告訴你核心已經配置好了,以及要你去″;check;the
top-level;Makefile;for;additional;configuration,”等等。
所以查看一下;Makefile。你應
copyright © 萬盛學電腦網 all rights reserved