Linux內核編譯

Linux 內核編譯
關鍵詞:Linux 內核 編譯 配置


今天開始嘗試對Linux內核的編譯。Linux的內核編譯是相當漫長的過程,僅僅通
過網上的教程進行編譯只是瞭解編譯的步驟,使自己對編譯流程有個簡單的瞭解。
編譯器配置:使/sur/include 中的部分連接文件指向編譯源代碼固定位置,此部十
分重要。若配置不正確,則會引起編譯過程文件無法找到的錯誤。
# 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
一、在編譯的過程中主要用到以下幾個命令:
1、make mrproper 該命令確保源代碼目錄下沒有不正確的.o文件以及文件的互
相依賴。如果是剛下載的完整的源程序包進行編譯,本步可以省略。而如果你多次使用了
這些源程序編譯內核,那麼最好要先運行一下這個命令。
2、make menuconfig 傳統的配置模式,配置繁瑣,不推薦使用。
make menuconfig 字符界面菜單選擇配置模式,類似於安裝操作系統時進入的
文本配置界面。
make xconfig 基於圖形界面的配置界面,推薦使用。
在配置選擇的時候,有以下參數,意義分別是:
Y--將該功能編譯進內核
  N--不將該功能編譯進內核
  M--將該功能編譯成可以在需要時動態插入到內核中的模塊
3、make dep 該命令實際上是讀取配置過程中生成的配置文件,來創建對應的
依賴關係。從而決定那些需要編譯而那些不需要編譯。
4、make clean 刪除前面步驟生成的一些中間文件,以免生成一些意想不到的錯
誤。
5、make bzImage或make zImage 實現完全編譯內核,兩個命令生成的內核都是
gzip壓縮的。兩個命令的區別是make bzImage可以生成大一些的內核。
6、make modules
7、make modules_install
8、depmod -a
後面這3個命令只有在你進行配置的過程中,在回答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
以上這兩個文件是我們剛纔編譯時新生成的。下面修改/boot下的兩個鏈接
System.map和vmlinuz,使其指向新內核的文件:
#cd /boot;rm -f System.map vmlinuz
#ln -s vmlinuz-2.4.18 vmlinuz
#ln -s System.map-2.4.18 System.map
修改Grub
title Red Hat linux (2.4.18)
root (hd0,0)
kernel /vmlinuz-2.4.18 ro root=/dev/hda2
Grub不需再次調用命令,自動生效。
重啓以後就可以用新內核了。
通過使用make install命令 make程序會自動創建initrd..文件並且將我們剛纔通
過編譯形成的壓縮內核文件和system.map拷貝到/boot文件夾下,並且自動修改grub.conf
文件,以形成新的選項。
二、編譯配置選項解讀:
  確保/usr/include/目錄下的asm、linux和scsi等鏈接是指向要升級的內核源代碼
的它們分別鏈向源代碼目錄下的真正的、該計算機體系結構(對於PC機來說,使用的體
繫結構是i386)所需要的真正的include子目錄。如:asm指
/usr/src/linux/include/asm-i386等。若沒有這些鏈接,就需要手工創建,按照下面的
步驟進行:
# 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
我們以make menuconfig 配置模式來解釋配置過程中的選項。
1. Code maturity level option
代碼成熟等級。此處只有一項: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
4. CPU類型。內容蠻多的,不一一介紹了,有關的幾個如下:
Processor family:根據你自己的情況選擇CPU類型。
High Memory Support:大容量內存的支持。可以支持到4G、64G,一般可以不
選。Math emulation:協處理器仿真。協處理器是在386時代的寵兒,現在早已
不用了。 MTTR support:MTTR支持。可不選。Symmetric multi-processing
support:對稱多處理支持。除非你富到有多個CPU,否則就不用選了。
5. 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支持。有PCMCIA就必選了。
 System V IPC
 BSD Process Accounting
 Sysctl support:以上三項是有關進程處理/IPC調用的,主要就是System V
和BSD兩種風格。如果你不是使用BSD,就按照缺省吧。
 Power Management support:電源管理支持。
 Advanced Power Management BIOS support:高級電源管理BIOS支持。
6. Memory Technology Device(MTD)
MTD設備支持。可不選。
7. Parallel port support
並口支持。如果不打算使用串口,就別選了。
8. Plug and Play configuration
即插即用支持。雖然linux對即插即用目前支持的不如Windows好,但是還是
選上吧,這樣你可以拔下鼠標之類的體驗一下Linux下即插即用的感覺。
9. Block devices
塊設備支持。這個就得針對自己的情況來選了,簡單說明一下吧:
 Normal PC floppy disk support:普通PC軟盤支持。這個應該必選。
 XT hard disk support:
 Compaq SMART2 support:
 Mulex DAC960/DAC1100 PCI RAID Controller support:RAID鏡像用的。
 Loopback device support:
 Network block device support:網絡塊設備支持。如果想訪問網上鄰居的
東西,就選上。
 Logical volume manager(LVM)support:邏輯卷管理支持。
 Multiple devices driver support:多設備驅動支持。
 RAM disk support:RAM盤支持。
10. Networking options
網絡選項。這裏配置的是網絡協議。內容太多了,不一一介紹了,自己看吧,
如果你對網絡協議有所瞭解的 話,應該可以看懂的。如果懶得看,使用缺省選
項(肯定要選中TCP/IP networking哦)就可以了。讓我們看看,
TCP/IP、ATM、IPX、DECnet、Appletalk……支持的協議好多哦,IPv6也支持
了,Qos and/or fair queueing(服務質量公平調度)也支持了,還有
kHTTPd,不過這些都還在實驗階段。
11. Telephony Support
  電話支持。linux下可以支持電話卡,這樣你就可以在IP上使用普通的電
話提供語音服務了。記住,電話卡可和modem沒有任何關係哦。
12. ATA/IDE/MFM/RLL support
  這個是有關各種接口的硬盤/光驅/磁帶/軟盤支持的,內容太多了,使用缺
省的選項吧,如果你使用了比較特殊的設備,比如PCMCIA等,就到裏面自己找
相應的選項吧。
13. 12. SCSI support
  SCSI設備的支持。我沒有SCSI的設備,所以根本就不用選,如果你用了
SCSI的硬盤/光驅/磁帶等設備,自己找好了。
14. Fusion MPT device support
需要Fusion MPT兼容PCI適配器,不用選。
15. I2O device support
需要I2O接口適配器支持,在智能Input/Output(I2O)體系接口中使用。
16. Network device support
網絡設備支持。上面選好協議了,現在該選設備了,可想而知,內容肯定多得
很。還好還好,裏面大概分類了,有ARCnet設備、Ethernet(10 or 100
Mbit)、Ethernet(1000Mbit)、Wireless LAN(non-hamradio)、Token Ring
device、Wan interfaces、PCMCIA network device support幾大類。我用的是
10/100M的以太網,看來只需要選則這個了。還是10/100M的以太網設備熟悉,
內容雖然多,一眼就可以看到我所用 的RealTeck RTL-8139 PCI Fast
Ethernet Adapter support,爲了免得麻煩,編譯到內核裏面好了,不選M了,
選Y。耐心點,一般說來你都能找到自己用的網卡。如果沒有,你只好自己到廠
商那裏去要驅動 了。
17. Amateur Radio support
配置業餘無線廣播。
18. IrDA(infrared)support
紅外線支持。
19. ISDN subsystem
如果你使用ISDN上網,這個就必不可少了。
20. Old CD-ROM drivers(not SCSI、not IDE)
原來那些非SCSI/IDE口的光驅誰還在用啊,自己選吧,用IDE的CD-ROM不用選
21. Character devices
字符設備。這個內容又太多了,先使用缺省設置,需要的話自己就修改。把大
類介紹一下吧:
  I2C support:I2C是Philips極力推動的微控制應用中使用的低速串行總線
協議。如果你要選擇下面的Video For linux,該項必選。
  Mice:鼠標。現在可以支持總線、串口、PS/2、C&T 82C710 mouse
port、PC110 digitizer pad,自己根據需要選擇。
  Joysticks:手柄。即使在linux下把手柄驅動起來意義也不是太大,遊戲
太少了。
   Watchdog Cards:雖然稱爲Cards,這個可以用純軟件來實現,當然也有
硬件的。如果你把這個選中,那麼就會在你的/dev下創建一個名爲watchdog的
文件,它可以記錄你的系統的運行情況,一直到系統重新啓動的1分鐘左右。有
了這個文件,你就可以恢復系統到重啓前的狀態了。
  Video For linux:支持有關的音頻/視頻卡。
  Ftape, the floppy tape device driver:
  PCMCIA character device support:
22. File systems
文件系統。內容又太多了,老法子,在缺省選項的基礎上進行修改。介紹以
下幾項:
Quota support:Quota可以限制每個用戶可以使用的硬盤空間的上限,在多用
戶共同使用一臺主機的情況中十分有效。
  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文件系統是linux提供給用戶和系統進
行交互的通道,建議選上,否則有些功能沒法正確執行。
23. 還有另外三個大類都歸到這兒了:Network File Systems(網絡文件系統)、
Partition Types(分區類型)、Native Language Support(本地語言支持)。
值得一提的是Network File Systems裏面的兩種:NFS和SMB分別是linux和
Windows相互以網絡鄰居的形式訪問對方所使用的文件系統,根據需要加以選擇。
24. Console drivers
控制檯驅動。一般使用VGA text console就可以了,標準的80*25的文本控制
臺。
25. Sound
聲卡驅動。如果你能在列表中找到聲卡驅動那自然最好,否則就試試OSS了。
26. USB supprot
USB支持。很多USB設備,比如鼠標、調制解調器、打印機、掃描儀等,在
linux都可以得到支持,根據需要自行選擇。
27. Kernel hacking
配置了這個,即使在系統崩潰時,你也可以進行一定的工作了。普通用戶是用
不着這個功能的。

發佈了18 篇原創文章 · 獲贊 6 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章