新核心可以在http://www.kernel.org下載。
先把linux-2.6.18.2.tar.bz2 複製到/usr/src/ 的下面
tar –jxvf linux-2.6.18.2.tar.bz2
cd linux-2.6.18.2
make mrproper 把原來編譯產生的垃圾刪除
配置核心可以根據需要與愛好使用下面命令中的一個:
#make config (基於文本的最為傳統的配置介面)
#make menuconfig (基於文本選單的配置介面)
#make xconfig (基於圖形視窗模式的配置介面)
#make oldconfig (如果只想在原來核心配置的基礎上修改一些小地方,會省去不少麻煩)
進行配置時,大部分選項可以使用其預設值,只有小部分需要根據使用者不同的需要選擇。例如,如果需要核心支援DOS分區的檔案系統,則要在檔案系統部分選擇FAT或DOS系統支援;系統如果配有網卡、PCMCIA卡等,需要在網路設定中選擇相應卡的類型。
選擇相應的配置時,有三種選擇,它們分別代表的含義如下:
“Y”- 將該功能編譯進核心
“N”- 不將該功能編譯進核心
“M”- 將該功能編譯成可以在需要時動態插入到核心中的模組。
將與核心其它部分關係較遠且不經常使用的部分功能代碼編譯成為可載入模組,有利於減小核心的長度,減小核心消耗的記憶體,簡化該功能相應的環境改變時對核心的影響。許多功能都可以這樣處理,例如像上面提到的網卡的支援、對FAT等檔案系統的支援。
其實現在編譯核心最關鍵的地方就是配置核心。我一般用make menuconfig配置核心。
配置2.6.0核心時如果你的主板是Intel晶片的話,你用預設配製也許就可以得到一個滿意的核心哦。做法是make menuconfig後離開時選擇儲存。
這裡的痛點是pci,如果你硬碟是IDE的那一定要選擇好你主板上南橋晶片。SCSI的話就是要選擇上你的SCSI卡型號。
還有就是網卡,音效卡晶片的型號了,他們的型號你都可以用lspci 尋找到比如我的是。
[root@leo boot]# lspci
00:00.0 Host bridge: Intel Corp. 440BX/ZX/DX - 82443BX/ZX/DX Host bridge (rev 01)
00:01.0 PCI bridge: Intel Corp. 440BX/ZX/DX - 82443BX/ZX/DX AGP bridge (rev 01)
00:07.0 ISA bridge: Intel Corp. 82371AB/EB/MB PIIX4 ISA (rev 08)
00:07.1 IDE interface: Intel Corp. 82371AB/EB/MB PIIX4 IDE (rev 01)
00:07.2 USB Controller: Intel Corp. 82371AB/EB/MB PIIX4 USB
00:07.3 Bridge: Intel Corp. 82371AB/EB/MB PIIX4 ACPI (rev 08)
00:0f.0 VGA compatible controller: VMware Inc [VMware SVGA II] PCI Display Adapter
00:10.0 SCSI storage controller: LSI Logic / Symbios Logic 53c1030 PCI-X Fusion-MPT Dual Ultra320 SCSI (rev 01)
00:11.0 Ethernet controller: Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE] (rev 10)
00:12.0 Multimedia audio controller: Ensoniq ES1371 [AudioPCI-97] (rev 02)
編譯配置
在這一部分涉及幾個重要模組的配置請,特別注意.一般用"make menuconfig"命令來配置核心.
輸入以上命令後出現一個菜單介面,使用者可以對需要的模組.下面著重講幾個重要的配置
1)檔案系統
請務必要選中ext3檔案系統,
File systems--->
[*] Ext3 journalling file system support
[*] Ext3 Security Labels
[*] JBD (ext3) debugging support
以上三項一定要選上,而且要內建(即標*). 這個非常重要,在配置完後一定要檢查一下.config檔案有沒有"CONFIG_EXT3_FS=y"這一項. 如果不是"CONFIG_EXT3_FS=y"而是"CONFIG_EXT3_FS=m",你在運行核心時就會遇上以下錯誤: pivotroot: pivot_root(/sysroot,/sysroot/initrd) failed
2)網卡驅動
請務必把自己網卡對應的驅動編譯進核心,比較普遍的網卡是realtek 8139,以下就是這種網卡的配置,以供參考
Device Drivers--->
Networking support--->
Ethernet (10 or 100Mbit) --->
<*> RealTek RTL-8139 C+ PCI Fast Ethernet Adapter support (EXPERIMENTAL)
<*> RealTek RTL-8139 PCI Fast Ethernet Adapter support
3)音效卡驅動
也要選擇自己音效卡對應的驅動編譯進核心,比較普遍的音效卡是i810_audio,以下就是這種音效卡的配置,以供參考
Device Drivers --->
Sound --->
<*> Sound card support
Advanced Linux Sound Architecture --->
<*> Advanced Linux Sound Architecture
<*> Sequencer support
< > Sequencer dummy client
<*> OSS Mixer API
<*> OSS PCM (digital audio) API[*] OSS Sequencer API
<*> RTC Timer support
PCI devices --->
<*> Intel i8x0/MX440, SiS 7012; Ali 5455; NForce Audio; AMD768/8111
Open Sound System --->
< > Open Sound System (DEPRECATED)
以上三項配置關係到新核心能否正常運行,請備加註意.其他的配置如果不是很瞭解,大可以按預設的選擇.
#make dep (確保關鍵檔案在正確的位置) 2.5.*-2.6.0都不需要了。其實2.4.*某些核心也不需要了。
#make clean (確保所有有關檔案都處於最新版本狀態)
#make zImage (編譯壓縮形式的核心)
在需要核心支援較多的外設和功能時,核心可能變得很大,此時可以編譯大核心:
#make bzImage
編譯的時間與機器的硬體條件及核心的配置等因素有關,所獲得的核心的位置在/usr/src/linux/arch/i386/boot目錄下,當然這裡假設使用者的CPU是x86型的。
如果選擇了可載入模組,編譯完核心後,要對選擇的模組進行編譯:
#make modules (編譯選擇的模組)
#make module_install (將編譯後的模組轉移到系統標準位置)
# make install
上面的命令"make install"將:
(1)把壓縮核心映象拷貝到/boot目錄下, 並建立相應的System.map符號連結;
(2)修改bootloader的設定檔;
(3)調用mkinitrd程式建立核心的initrd映象. 對於GRUB而言, 將在/boot/grub/grub.conf設定檔增加如下類似的配置行:
title Red Hat Linux (2.***)
root(hd0, 1)
kernel /boot/vmlinuz-2.*** ro root=LABEL=/
initrd /boot/initrd-2.***.img
模組在系統中的標準目錄位於/lib/modules/x.y.z,後面的x.y.z是版本號碼,為安全起見,在運行#make modules_install之前最好對/lib/modules進行備份。模組通常是帶有副檔名.o的檔案,使用命令#lsmod可以對當前核心的模組進行列表。
我一般是make bzImage;make modules;make module_install; make install
運行新核心之前,請檢查一下/boot/grub/grub.conf的內容,下面的配置可作參考
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE: You have a /boot partition. This means that
# all kernel and initrd paths are relative to /boot/, eg.
# root (hd0,0)
# kernel /vmlinuz-version ro root=/dev/VolGroup00/LogVol00
# initrd /initrd-version.img
#boot=/dev/hda
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title Fedora Core (2.6.18.2)
root (hd0,0)
kernel /vmlinuz-2.6.18.2 ro root=/dev/VolGroup00/LogVol00 rhgb quiet
initrd /initrd-2.6.18.2.img
title Fedora Core (2.6.18-1.2798.fc6)
root (hd0,0)
kernel /vmlinuz-2.6.18-1.2798.fc6 ro root=/dev/VolGroup00/LogVol00 rhgb quiet
initrd /initrd-2.6.18-1.2798.fc6.img
現在重啟機器,即可測試最新的核心。