歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux綜合 >> Linux內核

VMware中Linux內核2.6.14.4編譯全過程

很久就開始嘗試編譯Linux內核,但是總是遇到不少的問題,經過幾十次的編譯,直到現在才解決,人都要崩潰了。所以干脆把這個過程寫出來,希望在你遇到同樣問題的時候少走點彎路。我用的是Red Hat Linux 9. 內核版本是2.6.14.4


先到kernel.org去下載新的內核,然後解開到/usr/src/linux目錄下,注意一定要在Linux下解開,如果是在Windows下的話會遇到問題(我就上了這樣的當,郁悶了很久才找到原因)。

cd /usr/src/linux


make mrproper  #清除目錄下所有和先前生成內核時候產生的中間文件

make menconfig  #內核配置
 

注意在vmware下有以下幾個必須選中否則編譯將會遇到問題(參考http://bbs.chinaunix.net/forum/4/050622/566229.html)


Device Drivers  --->SCSI device support  ---><*>   SCSI disk support

Device Drivers  --->SCSI device support  --->SCSI low-level drivers  ---> <*> BusLogic SCSI support

Device Drivers  ---> Fusion MPT device support  ---><M> Fusion MPT (base + ScsiHost) drivers和<M>   Fusion MPT misc device (ioctl) driver(這個不確定)

Device Drivers  ---> USB support  ---><*>   USB Mass Storage support

Device Drivers  ---> Networking support  --->Ethernet (10 or 100Mbit)  ---> <*>   AMD PCnet32 PCI support


2.6中 make dep 可以不用了             #依賴性和完整性檢測

make bzImage           #產生壓縮內核

cp /usr/src/linux/arch/i386/boot/bzImage /boot/vmkernel

make modules        #編譯可加載模塊

make modules_install     #安裝模塊
 

以上過程可能比較消耗時間,我每次編譯都用了超過1小時的時間。.

如果BusLogic SCSI suppor選擇的是M,就還要運行

mkinitrd  /boot/newkernel.img 2.6.14.4  #制作img文件和預加載模塊


BusLogic SCSI support我選擇的是*,所以就不用運行mkinitid命令了.


修改配置文件

我用的是grub,在/etc/grub.conf後添加以下語句

title New Kernel (2.6.14.4)

        root (hd0,0)

        kernel /newkernel ro root=/dev/sda2

        #initrd /newkernel.img
 

BusLogic SCSI support 如果你選的M,你還得把#initrd /newkernel.img前的#去掉.

然後重新啟動。

 

我也用lilo試過

在/etc/lilo.conf後添加以下語句

image=/boot/newkernel

        label=New

        #initrd=/boot/newkernel.img

        read-only

        append="root=/dev/sda2"
 




同樣BusLogic SCSI support 如果你選的M,你還得把#initrd=/boot/newkernel.img前的#去掉.

運行lilo命令,然後重新啟動。

 

問題

1.No rule to make target `net/ipv4/netfilter/ipt_TOS.c', needed by `net/ipv4/netfilter/ipt_TOS.o'.  Stop.

上面提到了,如果你是在Windows下解開Linux內核的話就會遇到這個問題,因為Windows不區分文件大小寫,ipt_TOS.c和ipt_tos.c在Windows中是一回事,就被替換掉了,改在Linux下解開它就沒有問題了。

2. 不能掛接根文件系統

修改配置文件把根文件系統改成具體的設備文件,不要使用LABEL標簽



Copyright © Linux教程網 All Rights Reserved