編譯內(nèi)核的意義在于讓硬件設(shè)備更穩(wěn)定的發(fā)揮其應(yīng)有的效能;
新內(nèi)核可以在http:
先把linux-
2.6
.
18.2
.tar.bz2 復(fù)制到/usr/src/的下面
tar –jxvf linux-
2.6
.
18.2
.tar.bz2
cd linux-
2.6
.
18.2
make mrproper把原來編譯產(chǎn)生的垃圾刪除
配置內(nèi)核可以根據(jù)需要與愛好使用下面命令中的一個:
#make config (基于文本的最為傳統(tǒng)的配置界面)
#make menuconfig (基于文本選單的配置界面)
#make xconfig (基于圖形窗口模式的配置界面)
#make oldconfig (如果只想在原來內(nèi)核配置的基礎(chǔ)上修改一些小地方,會省去不少麻煩)
進(jìn)行配置時,大部分選項可以使用其缺省值,只有小部分需要根據(jù)用戶不同的需要選擇。例如,如果需要內(nèi)核支持DOS分區(qū)的文件系統(tǒng),則要在文件系統(tǒng)部分選擇FAT或DOS系統(tǒng)支持;系統(tǒng)如果配有網(wǎng)卡、PCMCIA卡等,需要在網(wǎng)絡(luò)配置中選擇相應(yīng)卡的類型。
選擇相應(yīng)的配置時,有三種選擇,它們分別代表的含義如下:
“Y”-將該功能編譯進(jìn)內(nèi)核
“N”-不將該功能編譯進(jìn)內(nèi)核
“M”-將該功能編譯成可以在需要時動態(tài)插入到內(nèi)核中的模塊。
將與核心其它部分關(guān)系較遠(yuǎn)且不經(jīng)常使用的部分功能代碼編譯成為可加載模塊,有利于減小內(nèi)核的長度,減小內(nèi)核消耗的內(nèi)存,簡化該功能相應(yīng)的環(huán)境改變時對內(nèi)核的影響。許多功能都可以這樣處理,例如像上面提到的網(wǎng)卡的支持、對FAT等文件系統(tǒng)的支持。
其實現(xiàn)在編譯內(nèi)核最關(guān)鍵的地方就是配置內(nèi)核。我一般用make menuconfig配置內(nèi)核。
配置
2.6
.
0
內(nèi)核時如果你的主板是Intel芯片的話,你用默認(rèn)配制也許就可以得到一個滿意的內(nèi)核哦。做法是make menuconfig后離開時選擇保存。
這里的難點是pci,如果你硬盤是IDE的那一定要選擇好你主板上南橋芯片。SCSI的話就是要選擇上你的SCSI卡型號。
還有就是網(wǎng)卡,聲卡芯片的型號了,他們的型號你都可以用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"
命令來配置內(nèi)核.
輸入以上命令后出現(xiàn)一個菜單界面,用戶可以對需要的模塊.下面著重講幾個重要的配置
1
)文件系統(tǒng)
請務(wù)必要選中ext3文件系統(tǒng),
File systems--->
[*] Ext3 journalling file system support
[*] Ext3 Security Labels
[*] JBD (ext3) debugging support
以上三項一定要選上,而且要內(nèi)建(即 標(biāo)*). 這個非常重要,在配置完后一定要檢查一下.config文件有沒有
"CONFIG_EXT3_FS=y"
這一項. 如果不 是
"CONFIG_EXT3_FS=y"
而是
"CONFIG_EXT3_FS=m"
,你在運(yùn)行內(nèi)核時就會遇上以下錯 誤: pivotroot: pivot_root(/sysroot,/sysroot/initrd) failed
2
)網(wǎng)卡驅(qū)動
請務(wù)必把自己網(wǎng)卡對應(yīng)的驅(qū)動編譯進(jìn)內(nèi)核,比較普遍的網(wǎng)卡是realtek
8139
,以下就是這種網(wǎng)卡的配置,以供參考
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
)聲卡驅(qū)動
也要選擇自己聲卡對應(yīng)的驅(qū)動編譯進(jìn)內(nèi)核,比較普遍的聲卡是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)
以上三項配置關(guān)系到新內(nèi)核能否正常運(yùn)行,請備加注意.其他的配置如果不是很了解,大可以按默認(rèn)的選擇.
#make dep (確保關(guān)鍵文件在正確的位置)
2.5
.*-
2.6
.
0
都不需要了。其實
2.4
.*某些內(nèi)核也不需要了。
#make clean (確保所有有關(guān)文件都處于最新版本狀態(tài))
#make zImage (編譯壓縮形式的內(nèi)核)
在需要內(nèi)核支持較多的外設(shè)和功能時,內(nèi)核可能變得很大,此時可以編譯大內(nèi)核:
#make bzImage
編譯的時間與機(jī)器的硬件條件及內(nèi)核的配置等因素有關(guān),所獲得的內(nèi)核的位置在/usr/src/linux/arch/i386/boot目錄下,當(dāng)然這里假設(shè)用戶的CPU是x86型的。
如果選擇了可加載模塊,編譯完內(nèi)核后,要對選擇的模塊進(jìn)行編譯:
#make modules (編譯選擇的模塊)
#make module_install (將編譯后的模塊轉(zhuǎn)移到系統(tǒng)標(biāo)準(zhǔn)位置)
# make install
上面的命令
"make install"
將:
(
1
)把壓縮內(nèi)核映象拷貝到/boot目錄下, 并創(chuàng)建相應(yīng)的System.map符號鏈接;
(
2
)修改bootloader的配置文件;
(
3
)調(diào)用mkinitrd程序創(chuàng)建內(nèi)核的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
模
塊在系統(tǒng)中的標(biāo)準(zhǔn)目錄位于/lib/modules/x.y.z,后面的x.y.z是版本號,為安全起見,在運(yùn)行#make
modules_install之前最好對/lib/modules進(jìn)行備份。模塊通常是帶有擴(kuò)展名.o的文件,使用命令#lsmod可以對當(dāng)前內(nèi)核的模
塊進(jìn)行列表。
我一般是make bzImage;make modules;make module_install; make install
運(yùn)行新內(nèi)核之前,請檢查一下/boot/grub/grub.conf的內(nèi)容,下面的配置可作參考
# 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
現(xiàn)在重啟機(jī)器,即可測試最新的內(nèi)核。