提要:在Kernel 2.6x和以前的版本的編譯方法有點區別,所以就簡單的把編譯過程寫出來,主要是幫助初學Linux的兄弟。 Kernle 2.6x 編譯比較簡單,最適合我等菜鳥!! 本文是以Redhat為例,內版本是2.6.0-test8
一、下載 http://www.kernel.org
二、解壓 1.把下載好的內核放到/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.進入相應的目錄編譯和安裝,進入內核選項設置 #cd linux-2.6.0-test8 #make mrproper #make menUConfig 進入內核選項卡,M是以模快方式編譯,*是直接編入內核 至於哪些要編入內核,哪些要編譯成模塊。在文章管理器和基礎討論區的帖子中都有,自己試著找一找。另外內核中的doc也有相應的文檔 3.編譯和安裝內核 #make #sudo make install 這個過程是編譯和安裝內核的過程,系統自動為我們做了哪些事? 1]系統會在/usr/src/linux/arch/i386/boot/目錄中產生bzImage,並把bzImage復制為vmlinuz-2.6.0-test8到/boot目錄中,並創建議vmlinuz-2.6.0-test8的鏈接vmlinuz; 2]在/boot目錄中,系統會產生System.map-2.6.0-test8,以及創建它的鏈接System.map; 3]在/boot目錄中,自動生為initrd-2.6.0-test8.img; 4]修改/etc/grub.conf 文件,加入了新內核的啟動項。 [注]經大熊寶寶兄的提示,怕初學的弟兄不明白這個過程,所以就把這個過程詳細的寫出來,所以我也做了補充。以上的四點都是系統自動安裝內核時所做的任務。查看一下/boot目錄中的文件以及/etc/grub.conf就明白了。這一點和以往2.4.x不一樣的地方。做個比喻就是2.4.x還是半自動的,上面的東西要執行好多個命令,而在2.6.x中,一步就到位,是全自動的! 4.編譯和安裝模快 #make modules #make modules_install 5.設置/etc/grub.conf,我不用lilo,更確切的來說,我不太懂,所以只能說Grub的設置辦法。 為什麼要設置這個呢?其實在編譯和安裝內核的過程中,系統已經自動把新內核的啟動項直接添加到了/etc/grub.conf中。當我們不對/etc/grub.conf進行改動,直接啟用新內核會發現VFS錯誤之類的提示。 下面的是我安裝後新內核後,沒有改動過的/etc/grub.conf title Fedora Core (2.6.0-test8) 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-test8) 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,我們不難發現,我們在新內核2.x中,指定root的根分區所在的位置時,沒有用標簽LABEL=/,而是用的是真正的分區位置。 請對Linux不太熟的弟兄,不要照搬我的分區設置。如果想知道這方面的,在基礎討論區中,有關於GRUB和分區訪問的文章,在文章管理器中也有。 最後還有一點就是如果顯示卡原來安裝過驅動,就要在新內核中重新安裝。比如我用的是NVIDIA的顯卡,我下載的是LinuxSir.Org的下載區中,哈兄提供的打過補丁的NVIDIA的驅動。裝上就OK了。