1. 程式人生 > >linux核心編譯過程的最終總結版

linux核心編譯過程的最終總結版

一、實驗目的

學習重新編譯Linux核心,理解、掌握Linux核心和發行版本的區別。

二、實驗內容

在Linux作業系統環境下重新編譯核心。實驗主要內容:

A. 查詢並且下載一份核心原始碼,本實驗使用最新的Linux核心2.6.36。

B. 配置核心。

C. 編譯核心和模組。

D. 配置啟動檔案。

本次實驗環境是Linux2.6.35核心的環境下,下載並重新編譯核心原始碼(2.6.36);然後,配置GNU的啟動引導工具grub,成功執行編譯成功的核心。

三、主要儀器裝置(必填)

Linux環境:utuntu10.10,linux核心2.6.35

待編譯核心:linux2.6.36

四、操作方法和實驗步驟

【1】下載核心原始碼

從http://os.zju.edu.cn/newlinux/files/jijiangmin網站上下載最新的Linux核心2.6.36。

【2】部署核心原始碼

開啟終端,更改使用者許可權為root。具體做法是在終端輸入sudo su,然後按提示輸入密碼。判斷是否是root使用者是使用whoami命令,若輸出為root則已經切換到root賬戶。

輸入mv linux-2.6.36.tar.gz  /usr/src,目的是把下載的核心原始碼檔案移到/usr/src目錄。

輸入cd /usr/src切換到該目錄下。

輸入tar zxvf linux-2.6.36.tar.gz,目的是解壓核心包,生成的原始碼放在linux-2.6.36目錄下。

輸入cd linux-2.6.36,切換到該目錄下。

輸入cp /boot/config-,然後按下Tab鍵,系統會自動填上該目錄下符合條件的檔名,然後繼續輸入 .config,目的是使用在boot目錄下的原配置檔案。

【3】配置核心

配置核心的方法很多,主要有如下幾種:

#make menuconfig  //基於ncurse庫編制的圖形工具介面

#make config  //基於文字命令列工具,不推薦使用

#make xconfig  //基於X11圖形工具介面

#make gconfig  //基於gtk+的圖形工具介面

由於對Linux還處在初學階段,所以選擇了簡單的配置核心方法,即make menuconfig。在終端輸入make menuconfig,等待幾秒後,終端變成圖形化的核心配置介面。進行配置時,大部分選項使用其預設值,只有一小部分需要根據不同的需要選擇。

對每一個配置選項,使用者有三種選擇,它們分別代表的含義如下:

<*>或[*]——將該功能編譯進核心

[]——不將該功能編譯進核心

[M]——將該功能編譯成可以在需要時動態插入到核心中的程式碼

本實驗在make menuconfig後,把ext2和ext3檔案系統編譯進核心。如果使用者是在虛擬機器下編譯的,那麼一般要把SCSI裝置編譯進核心。不是在虛擬機器下編譯的也可以把它編譯進去,不會有什麼影響的。

【4】編譯核心

這步是時間最長的一個步驟,一般在3個小時左右。

編譯核心只需在終端輸入make,然後等待編譯的完成。

【5】編譯和安裝核心模組

輸入make modules_install,這步很快能完成。

【6】安裝核心

輸入make install

【7】生成啟動

依次輸入:

sudo mkinitramfs -o /boot/initrd.img-2.6.36

sudo update-initramfs -c -k 2.6.36

sudo update-grub2  //自動修改系統引導配置,產生grub.cfg啟動檔案。

五、實驗結果和分析

把核心原始碼移動到目錄/usr/src,如下圖

在成功執行語句

sudo mkinitramfs -o /boot/initrd.img-2.6.36

sudo update-initramfs -c -k 2.6.36

後的boot目錄,如下圖

在成功執行語句

sudo update-grub2

後grub.cfg檔案中增加了新核心的啟動項,如下圖

在所有的實驗步驟成功完成後,重新啟動,可以發現在啟動項中多了兩項,分別為Linux2.6.36模式和Linux2.6.36 recovery模式,選擇Linux2.6.36模式,進入新的核心,若在啟動過程中沒有跳出錯誤提示,表示已經成功了。

進入系統後,開啟終端,輸入uname -a,輸出如下圖,表明現在已經是2.6.36的核心了

六、討論、心得

1、本次實驗,共編譯了兩次核心,在第一次編譯時,對核心的配置這塊沒有把ext2和ext3檔案系統編譯進核心,導致了編譯完的核心無法成功啟動。在第二次編譯中,經過仔細的對核心的配置,把ext2和ext3已經SCSI編譯進核心,終於成功了。這讓我覺得核心編譯後能否成功啟動的關鍵是核心的配置。

2、編譯後的每一個步驟執行後,可以通過檢視相關目錄是否生成了預期的檔案來判斷過程的正確與否。

3、Linux通過在系統引導後從/boot 目錄下讀取核心映像到記憶體中來完成啟動。

4、initrd.img是Linux啟動過程中很重要的一個檔案,如果你編譯核心時將一部分功能編譯為可載入模組。如果系統的一些裝置的驅動編譯為可載入模組,那麼啟動時如果沒有指定INITRD=/path_to_initrd.img,那麼系統啟動或者會失敗,或者啟動後會有裝置無法使用(像網絡卡或者其 它裝置)。 如果沒指定initrd.img或者指定的initrd.img中並沒有包含正確的驅動模組,則系統啟動時會掛起,並報告"kernel panic: VFS: Unable to mount root fs on 08:06"的錯誤。

5、grub.cfg檔案儲存著系統引導配置資訊,記錄著系統的啟動項。新編譯後的核心資訊必須包含到該檔案中,這樣在系統啟動時才會出現新的啟動項的選項。

參考了linuxsir和水母的linux版的精華區,本人不保留任何版權。

經過歸納整理,看看上面的就可以了,包括補丁如何打。具體的一些選項可以往下看,一些一看就懂的白痴選項,並沒有選進來,因此適合對電腦軟硬體都有所瞭解的人蔘考。

基本以2.6.5核心為例,雖然2.6的核心編譯有更為方便的過程,但這裡還是按照最經典的方式,這樣最保險。一些過程說明經過了本人的精簡,相關的疑問請自行用網路搜尋答案,只保證本人看的懂;)一些設定按照自己的情況調整,不要完全照搬。對於編譯核心造成的損失(比如LP跑了,再也不回來),本人不負任何責任:)僅供參考。

1.download linux-2.6.5.tar.gz

2.cp linux-2.6.5.tar.gz /usr/src

3.cd /usr/src

4.mv linux linux_old

5.tar xvzf linux-2.6.5.tar.gz

bzip2 -d linux-2.6.5.tar.bz2

tar -xvf linux-2.6.5.tar

或者tar jxvf linux-2.6.5.tar.bz2

6.cd /usr/include

rm -rf 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

7.cd /usr/src/linux

make mrproper (檢查有無不正確的.o檔案和依賴關係,使用剛下載的完整的源程式包進行編譯,所以本步可以省略。而如果你多次使用了這些源程式編譯核心,那麼最好要先執行一下這個命令。 )

8.make config 或

make menuconfig (推薦) 或

make xconfig

選擇完返回MainMenu,選擇save and exit,退出配置視窗並關閉超級使用者終端。現在可以退出xwindows了,回到文字環境(這樣做可以加快核心編譯速度)執行最後操作

9.make dep

10.make zImage

若想做成啟動盤的形式可 make zdisk,若kernel大於512K,應用make bzImage (推薦)

11.make modules make modules_install depmod -a

12.cp /usr/src/linux/arch/i386/boot/zImage /boot (用的是make zImage) 或cp /usr/src/linux/arch/i386/boot/bzImage /boot (用的是make bzImage)

13.修改lilo.conf 或grub.conf(新增)

image=/boot/zImage(或bzImage)

label=new

root=...

14. lilo & grub

lilo -v 使改動生效。建議保留舊核心的專案,避免編譯失敗。通常 grub 配置檔案在下面三個地方(根據發行版的不同):

/etc/grub.conf

/boot/grub/menu.lst

/boot/grub/grub.conf

15. shutdown -r now

如果你的 kernel 支援記憶體映象,就用 mkinitrd 命令製作一個映象檔案,然後拷貝到 /boot 路徑下。要這麼做,也要記得在 make menu 的時候記得選擇核心映象 ram image,並且不能安裝為模組,否則 initrd 就不會運作。生成映像檔案,否則有時系統啟動時會找不到/根分割槽。

mkinitrd /boot/initrd-.2.4.20-8.img 2.4.20-8

initrd.img就是initrd-2.4.20-8.img檔案的連結

#ln -s initrd-2.4.20-8.img initrd.img

有的時候 mkinitrd 失敗,只要加上:--without-scsi-module 就可以通過了。

把舊核心原始檔下的.config檔案拷貝到新核心原始檔下,

如cp /usr/src/linux-2.4.22/.config /usr/src/linux-2.6.5/

然後在新核心目錄下執行make oldconfig,如果想改動什麼,可以

make menuconfig,但是一定要先make oldconfig。然後就編譯核心,很容易:make bzImage make modules make modules_install make install

然後到/boot 看看是不是已經有新核心檔案了,再看/boot/grub/grub.conf是否已經載入了新核心。shutdown -r now

cp /usr/src/linux/arch/i386/boot/bzImage /boot/vmlinuz-2.6.5(新核心的bzImage的位置也有可能在/usr/src/linux/i386/下)

cp /usr/src/linux/System.map /boot/System.map-2.6.5

make clean

沒有 make clean 之前,如果增加了新的模組,可以直接 make menuconfig && make moduels && make modules_install,不需要全部重新來過。如果你以後還要利用這次編譯的成果,也可以省略這一步,如果你想直接刪除原始碼目錄,也可以省略這一步。

一些升級核心前的備份過程:

cd /boot/

mv System.map System.map.old

mv vmlinuz vmlinuz.old

cd /usr/src/

ln -s linux-2.6.5 linux

進入/usr/include目錄下,將asm、scsi、linux三個目錄改名 

[[email protected] /usr/include]# mv asm asm.OFF 

[[email protected] /usr/include]# mv scsi scsi.OFF 

[[email protected] /usr/include]# mv linux linux.OFF 

建立指向新核心的位置到第三步中被改名的原目錄 

[[email protected] /usr/include]# ln -s /usr/src/linux/include/asm-i386 asm 

[[email protected] /usr/include]# ln -s /usr/src/linux/include/scsi scsi 

[[email protected] /usr/include]# ln -s /usr/src/linux/include/linux linux

檢驗 # ls /boot

如果看到了 vmlinuz-2.6.0 和 System.map-2.6.0 ,那麼恭喜你,成功了!

如果你是用 make install 安裝的,還會看到個 config-2.6.0 檔案

cd /boot/

ln -s vmlinuz-2.6.5 vmlinuz

ln -s System.map-2.6.5 System.map

(上面的兩步的作用是保護真正的核心映象不受損壞)

vmlinuz是壓縮的核心二進位制可執行檔案

#du -sh vmlinuz-2.6.5 用來檢視新的核心有多大

如果你的Kernel 配置支援Modules的話,解決那些問題是比較簡單的

只要編譯那些.o檔案就可以啦.

比如我的音效卡經常Irq 和 IO 不對, 我就到 /usr/src/linux/drivers/sound目錄下

gcc -o configure configure.c

./configure

選好IO,IRQ 等等,

make

cp sound.o /lib/modules/2.0.34/misc

rmmod sound

insmod sound init_trace=1

測試一下.直到成功為止.比在 /usr/src/linux 下, make menuconfig ;

make dep;make clean;make zImage;.... 好多了.

怎麼給核心打補丁?

# cd /usr/src/linux

# bzip2 -dc patch-xxx.bz2 | patch

PATCH檔案拷貝到/usr/src下: 

#patch -p0 < patch-2.2.16

#gzip -cd patch-2.4.x-pre2-ac1.gz|patch -p1 -s -N -E -d 原始碼目錄

可以使用這種方式來安裝任何補丁,而不用管它的檔名了

用lsmod看當前裝入的module, insmod/rmmod增刪module. 對於fs,network方面的module, kernel是可以自動動態裝載的(通過kerneld, 要用時自動insmod) 而對於與硬體相關的module(如網絡卡,SCSI卡等), 則需自己手工加入, 或用RedHat Control Panel中的kernelcfg來選擇module(寫於/etc/conf.modules(?), 那樣則boot kernel時會自動加入

自己定製編譯的核心執行更快(具有更少的程式碼) 

系統將擁有更多的記憶體(核心部分將不會被交換到虛擬記憶體中) 

不需要的功能編譯進入核心可能會增加被系統攻擊者利用的漏洞 

將某種功能編譯為模組方式會比編譯到核心內的方式速度要慢一些 

檢視swap有沒有開啟(用free指令)。此外,最好不要超頻,不然很有可能會發生signal 11的錯誤,使得編到一半的核心停了下來

1. Code maturity level options 

程式碼成熟等級。此處只有一項:prompt for development and/or incomplete code/drivers,如果你要試驗現在仍處於實驗階段的功能,比如khttpd、IPv6等,就必須把該項選擇為Y了;否則可以把它選擇為N。 

2. Loadable module support 

Enable loadable module support:除非你準備把所有需要的內容都編譯到核心裡面,否則該項應該是必選的。 

Set version inFORMation on all module symbols:可以不選它。 

Kernel module loader:讓核心在啟動時有自己裝入必需模組的能力,建議選上。 

3. Processor type and features 

High Memory Support:大容量記憶體的支援。可以支援到4G、64G,一般可以不選。

Math emulation:協處理器模擬。協處理器是在386時代的寵兒,現在早已不用了。 

MTTR (memory type range register)support------選擇該選項,系統將生成/proc/mtrr檔案對MTRR進行管理,供X server使用。同時用來啟動pentinum pro和pentinum II 的特殊功能,如果你用的不是這類CPU就選N,否則也僅僅是使核心變大而已。

Symmetric multi-processing support:對稱多處理支援。除非你富到有多個CPU,否則就不用選了。 

4. General setup 

一般使用預設設定就可以了。

Networking support:網路支援。必須,沒有網絡卡也建議你選上。 

PCI support:PCI支援。如果使用了PCI的卡,當然必選。 

PCI access mode:PCI存取模式。可供選擇的有BIOS、Direct和Any,選Any吧。 

Support for hot-pluggabel devices:熱插拔裝置支援。

PCMCIA/CardBus support:PCMCIA/CardBus支援。

System V IPC 

BSD Process Accounting 

Sysctl support:以上三項是有關程序處理/IPC呼叫的,主要就是System V和BSD兩種風格。如果你不是使用BSD,就按照預設吧。 

Power Management support:電源管理支援。 

Advanced Power Management BIOS support:高階電源管理BIOS支援。 

5. Memory Technology Device(MTD) 

MTD裝置支援。可不選。 

6. Parallel port support 

並口支援。如果不打算使用串列埠,就別選了。 

7. Plug and Play configuration 

還是選上吧,可以拔下滑鼠之類的體驗一下Linux下即插即用的感覺。 

8. Block devices 

Normal PC floppy disk support:普通PC軟盤支援。這個應該必選。 

Mulex DAC960/DAC1100 PCI RAID Controller support:RAID映象用的。 

Network block device support:網路塊裝置支援。如果想訪問網路上的芳鄰的東西,就選上。 

10. Telephony Support 

Linux下可以支援電話卡,這樣你就可以在IP上使用普通的電話提供語音服務了。記住,電話卡可和modem沒有任何關係哦。 

11. ATA/IDE/MFM/RLL support 

這個是有關各種介面的硬碟/光碟機/磁帶/軟盤支援的,內容太多了,使用預設的選項吧,如果你使用了比較特殊的裝置,比如PCMCIA等,就到裡面自己找相應的選項吧。 

12. SCSI support 

13. Fusion MPT device support 

14. I2O device support 

需要I2O介面介面卡支援,在智慧Input/Output(I2O)體系介面中使用。 

15. Network device support 

網路裝置支援。編譯到核心裡面好了,不選M了,選Y。

16. Amateur Radio support 

配置業餘無線廣播。 

17. IrDA(infrared)support 

紅外線支援。 

18. ISDN subsystem 

如果你使用ISDN上網,這個就必不可少了。 

19. Old CD-ROM drivers(not SCSI、not IDE) 

做的可真周到,原來那些非SCSI/IDE口的光碟機誰還在用啊,自己選吧,用IDE的CD-ROM不用選。 

20. Character devices 

字元裝置。這個內容又太多了,先使用預設設定,需要的話自己就修改。把大類介紹一下吧: 

I2C support:I2C是Philips極力推動的微控制應用中使用的低速序列匯流排協議。如果你要選擇下面的Video For Linux,該項必選。 

Mice:滑鼠。現在可以支援匯流排、串列埠、PS/2、C&T 82C710 mouse port、PC110 digitizer pad,自己根據需要選擇。 

Watchdog Cards:雖然稱為Cards,這個可以用純軟體來實現,當然也有硬體的。如果你把這個選中,那麼就會在你的/dev下建立一個名為watchdog的檔案,它可以記錄你的系統的執行情況,一直到系統重新啟動的1分鐘左右。有了這個檔案,你就可以恢復系統到重啟前的狀態了。 

21. File systems 

22. Console drivers 

控制檯驅動。一般使用VGA text console就可以了,標準的80*25的文字控制檯。 

23. Sound 

音效卡驅動。如果你能在列表中找到音效卡驅動那自然最好,否則就試試OSS了。 

24. USB supprot 

25. Kernel hacking 

配置了這個,即使在系統崩潰時,你也可以進行一定的工作了。普通使用者是用不著這個功能的。 配置完後,存檔退出,當然你也可以把現在的配置檔案儲存起來,這樣下次再配置的時候就省力氣了。 接下來是編譯。 

#make dep 

#make clean 

#make bzImage或make zImage 

#make modules 

#make modules_install 

#depmod -a 

make dep實際上讀取配置過程生成的配置檔案,來建立對應於配置的依賴關係樹,從而決定哪些需要編譯而那些不需要;第二命令make clean完成刪除前面步驟留下的檔案,以避免出現一些錯誤;在回答Enable loadable module support (CONFIG_MODULES)時選了"Yes"才是必要的,make modules和make modules_install分別生成相應的模組和把模組拷貝到需要的目錄中。嚴格說來,depmod -a命令和編譯過程並沒有關係,它是生成模組間的依賴關係,這樣你啟動新核心之後,使用modprobe命令載入模組時就能正確地定位模組。 

#cp /usr/src/linux/System.map /boot/System.map-2.4.18 

#cp /usr/src/linux/arch/i386/bzImage /boot/vmlinuz-2.4.18 

#cd /boot;rm -f System.map vmlinuz 

#ln -s vmlinuz-2.4.18 vmlinuz 

#ln -s System.map-2.4.18 System.map 

如果用LILO,修改/etc/lilo.conf,新增以下項: 

image=/boot/vmlinuz-2.4.18 

label=linux240 

read-only 

root=/dev/hda2 

其中root=/dev/hda2一行要根據需要自行加以修改。 

#/sbin/lilo -v 

#shutdown -r now 

用Grub啟動管理器,則新增如下幾項即可。 

title Red Hat Linux (2.4.18) 

root (hd0,0) 

kernel /vmlinuz-2.4.18 ro root=/dev/hda2 

裝過顯示卡驅動,比如Nvidia的話,你可以這樣辦

rpm -e NVIDIA_GLX_XXX(XXX為你的顯示卡驅動對應的版本號,比如我的是NVIDIA_GLX-1.0-3123)

rpm -e NVIDIA_kernel_XXXX(同上)

把以前安裝的驅動刪去。

rpmbuild --rebuild NVIDIA_kernel_XXXX,重新編譯你的顯示卡驅動。編譯好的放在/usr/src/redhat/RPMS/i386/下

然後安裝就是了、、、

rpm -Uvh NVIDIA_kernel_XXXX.i386.rpm

rpm -Uvh NVIDIA_GLX_XXXX.i386.rpm

搞定,重起。

將與核心其它部分關係較遠且不經常使用的部分功能程式碼編譯成為可載入模組,有利於減小核心的長度,減小核心消耗的記憶體,簡化該功能相應的環境改變時對核心的影響;不需要的功能就不要選;與核心關心緊密而且經常使用的部分功能程式碼直接編譯到核心中。

核心在保護空間執行,但模組並不是。這麼說,並不經常使用我的裝置,把它編譯成只支援ext2,ide和elf。而一直使用的網絡卡,把其它的編譯成模組:如a.out, java, floppy, iso9960, msdos, minix, vfat,smb,nfs,smcultra(ethernetcard),serial,printer,sound,ppp,等等。它們許多隻是在這或那用上那麼幾分鐘。在需要用的時候才用insmod這個指令加入核心,不用的時候也能rmmod把它從核心移除,或是用lsmod察看目前所載入的模組。這裡面有三項:

#Set version information on all module symbols------通常,我們更新核心版本之後,模組耍重新的編譯。這個選項使您不必更新編譯模組而能使用以前的模組。可以不選它。但如果您選y,則按照它的說明,您必須有genksyms這個程式(可用whereis指令檢視有無此程式)。

#Kernel module loader------讓核心在啟動時有自己裝入必需模組的能力,建議選上。注意:在開機就會 mount 上來的 partition 的 FS 、device driver 記得要 compiler 進 kernel,不能把它弄成 modules。請不要誇張到為了完全模組化而忘了把ext2fs和IDE dirver compiler 進 kernel 裡。

#System V IPC 如果將來想編譯dosemu(DOS模擬器),則這個選項一定要選,它是一個讓各個程式(process)同步且能彼此交換資料的函式庫和一些系統的呼叫,沒它,很多的程式將會無法執行。

#Sysctl support------除非你的記憶體少的可憐,否則你應該啟動這個功能,啟用該選項後核心會大8K,但能讓你直接改變核心的引數而不必重新開機。

#Kernel support for A.OUT binaries ------a.out的執行檔案是比較古老的可執行碼,用在比較早期的UNIX系統上。Linux最初也是使用這種碼來執行程式,一直到ELF格式的可執行碼出來後,有愈來俞多的程式碼隨著ELF格式的優點而變成了ELF的可執碼。將來勢必完全取代a.out格式的可執行碼。但目前由於沿有許多的程式還沒有取代過來,所以只好選擇Y,等將來有一天,全部的程式都變成了ELF的天下時,那時再disable掉。

#Kernel support for Linux/Intel ELF binaries ------由上所述,這個當然y哩,因為目前gcc-2.7.0以上的都有支援ELF了,如果沒有選擇這一項,可能會使用相當多的程式因此無法執行。為大多機器製作一張緊急啟動盤,最好在386下編譯,而386並不能執行在Pentium下編譯的核心。不能同時把 a.out 和 ELF 支援編譯成 modules,否則當你為了能夠使用 insmod 而用 insmod 來載入 a.out/ELF modules 時會有 Catch/22 狀況發生。如果你的系統主要是 ELF 而你偶爾會需要用到a.out,你可以把 a.out 支援編譯為modules,否則你最好把它直接放入 kernel 之中。如果你還沒進入 ELF 的世紀,在 compiler kernel 時可以直接把 ELF 支援去掉。

##Advanced Power Management BIOS support------高階電源管理BIOS支援。這通常是用在膝上型電腦上的東西,如果您有APM的BIOS,支援省電的裝置的(有電池的那種),那麼您可以選上這項,一般人這一項是選n,以避免一些可能會發生的問題。後有8個選項。

#CMD640 chipset bugfix/support------ 很多 486和 586的主機板都是用 CMD640的晶片,它是Neptune晶片和 SIS晶片的結合。不過,這種晶片有它的缺點,在許多的情形下,它會造成資料的流失和錯誤。如果您選了這一項,則Linux核心會為您小心的尋找這些 錯誤並修正它。而且,它會開啟對二個IDE介面的支援。不過,在它的說明檔案中提到,如果您的主機板沒有PCI介面只有VESA匯流排介面卻希望有這項功能的話,則您必須傳一些 引數給核心(ideo=cmd640_vlb)。如果不確定上面所說的,選擇Y。

#CMD640 enhanced support------一般來說,對於硬碟的存取速度來說,有所謂的 PIO MODES值設定,現今的 IDE介面及 BIOS應該都能偵測到正確的硬碟PIO MODE值了。此值愈高表示硬碟的存取的速度愈快。可是,有些主機板的B10S還是舊式的,不能抓到比較高的 PIO MODE值,如此一來,便不能發揮整臺硬碟的效率。這個設定告訴讀者說:如果您的IDE介面是CMD640為基礎*1*7和586的主機板都在使用它。可以查查主機板的說明書或是 IDE介面卡的說明書做確定。檔案上提到,選擇這個將會降低一些速度,但是資料能百分之百的正確。

#Intel 82371 PIIX(Triton I/II) DMA support------對於586的Pentium電腦來說,有相當多的主機板都是用Intel的Triton晶片,使用這種晶片的最大好處是支援直接記憶體存取DMA,而節省您的CPU時間。必須您的硬碟和主機板有同時支援 DMA的 IDE介面的晶片,直接與它們做溝通而節省了大量的 CPU時間。

#Loopback device support------大部分的人這一個選項都選N,因為沒有必要。但是如果你要mount iso檔案的話,你得選上Y。這個選項的意思是說,可以將一個檔案掛成一個檔案系統。如果要燒光碟片的,那麼您很有可能在把一個檔案燒進去之前,看看這個檔案是否符合IS09660的檔案系統的內容,是否符合您的需求。而且,可以對這個檔案系統加以保護。不過,如果您想做到這點的話,您必須有最新的mount程式,版本是在2.5X版以上的。而且如果您希望對這個檔案系統加上保護,則您必須有des.1.tar.gz這個程式。注意:此處與網路無關。 

#Multlnle devices driver support------這個選項可以讓把整個硬碟分割槽變成一個單獨的區塊裝置,您必須有md035.tgz這個程式。而且在做這件事之前請將您的硬碟備份,因為它尚在測試階段。一般人對這個選項是選N。

#Packet socket ------ 選擇“Y”,一些應用程式將使用Packet協議直接同網路裝置通訊,而不通過核心中的其它中介協議。

#Kernel/User Network link driver------這個是在測試中的程式碼,一般人不需要用。依它的說明,它允許在核心、模組或程式間的某些部分間,彼此做雙向的溝通。如果想使用arpd,則這個程式碼就要加進核心裡。

#TCP/IP networking------選擇“Y”,核心將支援TCP/IP協議。這個選項無論如何請您選擇Y,即使沒有網路卡,或是沒有連到網路上的裝置,在linux上仍有所謂的lookback裝置而且有些程式需要這個選項。在說明檔案中提到,如果您沒有開啟這個設定,則X-window system可能會有問題(回為它也需要 TCP/IP)。

#Network firewalls------選擇“Y”,核心將支援防火牆。等一下有個IP firewalling的選項也要選y;但下面的forwarding/gatewaying要選n,如此才能讓它正常動作。大部分的人這個選項選N。

#Network alasing------允許有多個IP地址。

#IP:forwarding/gatewaying ------ 和 Firewall相反,這個選項是用來疏導網路的。一個gateway(也就是router),要幫忙疏導兩個網路間的資料傳送。這臺機器必須要有兩張網路卡,連線兩個個同的網路,做疏導網路的工作。如果選擇了這個選項,則表示想讓這臺負責做router。那麼,就必須有兩張網路卡了。另外有一種情形是,如果您有MODEM(通過串列介面以 SLIP和 PPP協議)和網路卡,並用它們來連上Internet。這時您也一樣可以執行IP-routing服務,也需把這個選項開啟。

#IP:multicasting------所謂的multicasting是群組廣播,它是用在視訊會議上的協議,如果想送一個網路封包(網路的資料),同樣的一份資料將送往十部機器上。您可以連續送十次給十臺機器(點對點的傳送),也可以同時送一次,然後讓十臺機器同時接收到。當然後者比前者好,由於視訊會議要求是最好每個人都能同時收到同一份資訊,所以如果您有類似的需要,這個選項就要開啟。同時您還必須去找相關的軟體。

#IP: accounting------如果您開啟這個選項,您就可以在/proc/net下看到系統對於整個網路狀況的紀錄。所以一般的人這個選項都是選y。而且,如果您設計把這臺Linux機器當router用,那麼讀者可以因為這個選項而獲得許多有關於網路lP控制的資訊和它的輸送情形。

#IP:aliasing support------經由這個設定,您可以擁有數個IP地址。假設您已經有一個lP地址了,您還想再加入其他的IP地址,這時,您可以依下面的程式來做。

在 shell下鍵入:

#ifconfig eth0:0其他的IP地址(這個IP地址不能與其他機器重複)

# route-add-host其他的IP地址 dev eth0:0 

#Probe a11 LUNs on each SCSI device------通常這個選項大部分的人都不會選。我們舉個例子來說,如果您的SCSI光碟機是那種多片裝的,就是一臺光碟機,但可以一次放好幾片光碟片的那種。這種我們叫做Lun。 

#Dummy net driver support------如果有SLIP或PPP的傳輸協議,那麼要把這一項開啟。因為一來它不會讓您的Linux核心增大。二來,對某些應用程式來說,它可以讓我們模擬出來的TCP/IP環境更像TCP/IP環境。如果您沒有SLIP或PPP協議,就不用打開了。

#EQL(serial line load balancing) support------如果有兩個MODEM,兩條電話線,而且用SLIP或PPP協議,可以用這個Driver以便讓您的MODEM有兩倍的速度。當然,在網路的另一端也要有同樣的裝置。

#PLIP(parallel port) support------依字面上看,它是一種利用印表機的介面(平行介面),然後利用點對點來模擬TCP/IP的環境。它和 SLIP/PPP全都屬於點對點通訊,您可以把兩臺電腦利用印表機的連線介面串聯起來,然後,加入此通訊協議。如此一來,這兩部電腦就等於一個小小的網路了。不過,如果電腦有提供列印服務的話,這個選項最好不要開啟,不然可能會有問題(因為都是用平行介面)。

#PPP(point-to-point)support------點對點協議,近年來,PPP協議已經慢慢的取代SLIP的規定了,原因是PPP協議可以獲取相同的IP地址,而SLIP則一直在改變IP地址,在許多的方面,PPP都勝過SLIP協議。

#SLIP(serial line) support------這是MODEM族常用的一種通訊協議,必須通過一臺Server(叫ISP)獲取一個IP地址,然後利用這個IP地址,可以模擬乙太網絡,使用有關TCP/IP的程式。

# EISA, VLB, PCI and on board controllers ------選擇網路卡,包括直接附在主機板上的那種。如果選擇y,則底下會列出其他的網路卡讓您做選擇,這些卡對於一般人來說很少會去用到。所以大部分的人這項是選N的。 

#Pocket and portable adaptors------通常用在可攜式的電腦上,這型別的網路卡(口袋型的),由於體積很小在安裝和取下方面很方便,因此筆記本相關電腦上便常常採用這種網路卡。

#Token Ring driver support------Token Ring是 IBM電腦上的網路。它叫令牌環網路,和乙太網絡是很類似的東西。如果您希望使用的Token Ring網路卡以便連線到這種網路,那麼選Y,一般人都選N。

12. Amateur Radio support 業餘無線廣播

可以用來啟動無線網路的基本支援,目前的無線網路可以通過公眾頻率傳輸資料,如果你有此類裝置就可以啟用,具體請參考AX25和HAM HOWTO 文件。

#Standard/generic (dumb) serial support-------選擇“y”,核心將支援序列口。標準序列介面的選定。如果您是用serial的滑鼠(大部分的人都是用這個),或是MODEM的話,則這一項一定要選。大部分的人這一項都選y。

#Support for console on serial port------選擇“y”,核心可將一個序列口用作系統控制檯。

##I2C support------I2C是Philips極力推動的微控制應用中使用的低速序列匯流排協議。如果你要選擇下面的Video For Linux,該項必選。

#Mice滑鼠。現在可以支援匯流排、串列埠、PS/2、C&T 82C710 mouse port、PC110 digitizer pad------根據需要選擇。非序列的滑鼠,支援象PS/2。看一看你滑鼠的鍵。許多雙鍵滑鼠是PS/2,即使它們的連線看起來象序列的.。

#Digiboard PC/Xx Support------這是一張叫 Digiboard PC/XX卡的 driver,這種卡上面有很多個 serial port的插槽(一般來說只有兩個),可以用來連線很多個MODEM,在民間的BBS站很常用到,如果您有這樣的東西,您必須選這項為y。有興趣的讀者可以讀讀Documentation/digiboard.txt的內容。

#Cyclades async mux support------同上,這也是一種能接很多個serial port插槽的卡的驅動程式。

#Stallion multlport serial support------同上,這也是其中一種卡。

#SDL RISCom/8 card support------這也是其中的一個支援muti-serial卡的driver。

#Parallel printer support------有印表機的或是使用到並行介面的人這一項一定要選。除非是用serial的印表機。還有如果您有使用PLIP,那麼這項也請選上。

#Mouse support------大部分的人這一項並不用選y。因為大部分的人是用serial的滑鼠,除非有些人是用一種附有介面卡的滑鼠,這時這個選項才要選上,如果您選y,則底下會列出您的BUS滑鼠所用的介面卡。

#support for user misc device modules------除非您有所謂的觸控式顯示器或是光筆等東西,否則這一項選n。

#Watchdog Timer support------一般人不需要這個選項,如果您選上這個選項,則您要用mknod在/dev下建一個watchdog的檔案。請看Documentation/watchlog.txt的解釋。

#Enhanced Real Time Clock Support------關於系統上Clock的東西,您必須自己用mknod在/dev/下建立一個檔案叫rtc。如此一來,在/proc/下將可以看到rtc的資訊。有關於rtc的內容請看Documentation/rtc.txt。一般是選n。

#Kernel automounter support------選擇“y”,核心將提供對automounter的支援,使系統在啟動時自動 mount遠端檔案系統。

#Standard( minix )------新的套件不再建立 minix 檔案系統,而且很多人不使用它,但是把它配置在核心裡仍然是個好主意。某些″rescue-disk ″ 程式會用到它,而且仍然有許多磁片可能用 minix 檔案系統,因為 minix 檔案系統對於處理磁片方面是最好的。Minix檔案系統通常用在磁碟上,有時會用到它。

#Extended fs ------ 這是擴充檔案系統的第一版,現在已經不再使用。

#Second extented fs------這是現在新發行的套件所廣泛採用的檔案系統,你可能會有其中一種。這個是linux檔案系統,請務必選y。

#xiafs filesystem-----這個檔案系統曾經一度很普遍,但是在寫這份檔案時,我已經不知道有任何人在使用它了。

#umsdos: UNIX like fs on top of std MSDOS FAT fs ------ 如果把Linux裝進DOS的一個目錄下那麼您則要選擇這一項。不建議這樣做,因為如此一來,就不能看到長檔名了。而且效率上,井不是很好。

#ums-dos------相當 slick 的檔案系統,它能使 MS-DOS 檔案系統擁有更多的特性,像是長檔名等等。這對那些不使用 MS-DOS 的人(像我)並不是很有用。

#System V and Coherent------這是為 System V 以及 Coherent 的分割區而設的。如果希望支援System V或Xenix的相關UNIX系統的FS並讀取它們的資料,那麼才有必要選這個,否則一般來說這個選項是選n的。

#Mandatory lock support------有些很特殊的database應用軟體會用到它,一般人這個選項是選n。而且,如果選y的話,必須有最新版的NFS軟體,最新版的samba軟體等。

#NCP filesystem support------NCP是一種網路的通訊協議,用在跑IPX協議上,它可以利用IPX協議讓兩臺電腦之間的檔案共享,並做溝通。如果您想掛上有關Novell的Netware檔案系統,那麼這個選項就選上去吧。

#/dev/dsp and/dev/audio support------ 這個選項通常是必要的。因此大部分的人選y,如果沒有這選項,則很多的遊戲將沒有聲音效果。

#MIDI interface support------支援MIDI介面。

#I/O base for SB Check from manual of the card------音效卡的I/O地址。括號是常用的選項。

#Sound Blaster IRQ Check from manual of the card-----音效卡的IRQ,通常是1或5。

#Sound Blaster DMA 0,1 for 3-----音效卡的DMA,通常是1。

#Sound Blaster 16 bit DMA 5, 6 or 7(usel for 8 bitcards)(SB.DMA2)-----5

##Additional low level drivers------如有其他種類的音效卡,則這項要選上去,以下會列出其他的音效卡供選擇。

kernel profiling support(v1.3)

這個選項可以開啟核心做效率統計的功能,並且會提供其他在為

系統偵錯時有用的資訊。這些功能會需要付出一些代價並造成系

統執行得較為緩慢,除非你正在研究核心的某個問題,否則你應

該回答N。

21. Kernel hacking安全模式 

通俗的說,這是windows安全模式,找不到明確解釋,就引用這個說法。>這是從 Linus的README裡摘錄的:″kernel hacking ″配置的細節通常會產生一個更大或是更慢的核心(或者是又大又慢),而且可能因為將一些常式配置成很活躍地去嘗試中斷一些不良的程式碼以便找出核心裡的問題,而使得核心變得比較不穩定。所以要產生一個核心″產品 ″的話,你在這

#shutdown -r now

不建議使用熱啟動或ctrl+Alt+del鍵。在一些情況下,檔案系統不完全卸栽會損壞開啟的檔案。如果你沒看見啟動提示,你可以試用shift或ctrl鍵,這樣啟動提示就出現了。一旦出現,按tab看核心標籤。輸入標籤和可選引數啟動。在機器重啟後出現LILO時按TAB鍵,輸入linux2.6.5,新核心發揮作用了。

乙太網的預設值是PCI的乙太網卡,對ne2000的預設支援方式是build-in,即沒有設成模組,所以如果你的網絡卡是ISA的,那麼務必要選擇其中的other ISA card,最好把PCI intel pro選項去掉,另外把ne2000 support選項改成module。