- 論壇徽章:
- 0
|
前段時間在學(xué)習(xí)自己編譯kernel,在網(wǎng)上找到一篇文章很不錯,轉(zhuǎn)貼過來也許對需要的人有點用處。
提要:在Kernel 2.6x和以前的版本的編譯方法有點區(qū)別,所以就簡單的把編譯過程寫出來,主要是幫助初學(xué)Linux的兄弟。
Kernle 2.6x 編譯比較簡單,最適合我等菜鳥。
本文是以Redhat為例,內(nèi)版本是2.6.0-test8
一、下載
http://www.kernel.org
二、解壓
1.把下載好的內(nèi)核放到/usr/src目錄中,比如我下載的是linux-2.6.0-test8.tar.bz2
#mv linux-2.6.0-test8.tar.bz2 /usr/src
#tar jxvf linux-2.6.0-test8.tar.bz2
2.進入相應(yīng)的目錄編譯和安裝,進入內(nèi)核選項設(shè)置
#cd linux-2.6.0-test8
#make mrproper
#make menuconfig
進入內(nèi)核選項卡,M是以?旆绞骄幾g,*是直接編入內(nèi)核
至于哪些要編入內(nèi)核,哪些要編譯成模塊。在文章管理器和基礎(chǔ)討論區(qū)的帖子中都有,自己試著找一找。另外內(nèi)核中的doc也有相應(yīng)的文檔
3.編譯和安裝內(nèi)核
#make
#sudo make install
這個過程是編譯和安裝內(nèi)核的過程,系統(tǒng)自動為我們做了哪些事?
1]系統(tǒng)會在/usr/src/linux/arch/i386/boot/目錄中產(chǎn)生bzImage,并把bzImage復(fù)制為vmlinuz-2.6.0-test8到/boot目錄中,并創(chuàng)建議vmlinuz-2.6.0-test8的鏈接vmlinuz;
2]在/boot目錄中,系統(tǒng)會產(chǎn)生System.map-2.6.0-test8,以及創(chuàng)建它的鏈接System.map;
3]在/boot目錄中,自動生為initrd-2.6.0-test8.img;
4]修改/etc/grub.conf 文件,加入了新內(nèi)核的啟動項。
[注]經(jīng)大熊寶寶兄的提示,怕初學(xué)的弟兄不明白這個過程,所以就把這個過程詳細的寫出來,所以我也做了補充。以上的四點都是系統(tǒng)自動安裝內(nèi)核時所做的任務(wù)。查看一下/boot目錄中的文件以及/etc/grub.conf就明白了。這一點和以往2.4.x不一樣的地方。做個比喻就是2.4.x還是半自動的,上面的東西要執(zhí)行好多個命令,而在2.6.x中,一步就到位,是全自動的!
4.編譯和安裝?
#make modules
#make modules_install
5.設(shè)置/etc/grub.conf,我不用lilo,更確切的來說,我不太懂,所以只能說Grub的設(shè)置辦法。
為什么要設(shè)置這個呢?其實在編譯和安裝內(nèi)核的過程中,系統(tǒng)已經(jīng)自動把新內(nèi)核的啟動項直接添加到了/etc/grub.conf中。當我們不對/etc/grub.conf進行改動,直接啟用新內(nèi)核會發(fā)現(xiàn)VFS錯誤之類的提示。
下面的是我安裝后新內(nèi)核后,沒有改動過的/etc/grub.conf
title Fedora Core (2.6.0-test
root (hd0,7)
kernel /boot/vmlinuz-2.6.0-test8 ro root=LABEL=/
initrd /boot/initrd-2.6.0-test8.img
title Fedora Core (2.4.22-1.2061.nptl)
lock
root (hd0,7)
kernel /boot/vmlinuz-2.4.22-1.2061.nptl ro root=LABEL=/
initrd /boot/initrd-2.4.22-1.2061.nptl.img
改動后的就是
title Fedora Core (2.6.0-test
root (hd0,7)
kernel /boot/vmlinuz-2.6.0-test8 ro root=/dev/hda8
initrd /boot/initrd-2.6.0-test8.img
title Fedora Core (2.4.22-1.2061.nptl)
lock
root (hd0,7)
kernel /boot/vmlinuz-2.4.22-1.2061.nptl ro root=LABEL=/
initrd /boot/initrd-2.4.22-1.2061.nptl.img
對比改動過的/etc/grub.conf,我們不難發(fā)現(xiàn),我們在新內(nèi)核2.x中,指定root的根分區(qū)所在的位置時,沒有用標簽LABEL=/,而是用的是真正的分區(qū)位置。
請對Linux不太熟的弟兄,不要照搬我的分區(qū)設(shè)置。如果想知道這方面的,在基礎(chǔ)討論區(qū)中,有關(guān)于GRUB和分區(qū)訪問的文章,在文章管理器中也有。
最后還有一點就是如果顯示卡原來安裝過驅(qū)動,就要在新內(nèi)核中重新安裝。比如我用的是NVIDIA的顯卡,我下載的是LinuxSir.Org的下載區(qū)中,哈兄提供的打過補丁的NVIDIA的驅(qū)動。裝上就OK了。 |
|