VMware上Linux內核build方法
網絡上關於vmware上linux內核build的文章很多,主要問題在於buildc成功後無法正常啟動內核,這是vmware的一個bug,目前沒有見到好的解決辦法。以下內核build並成功運行,關鍵主要在於:VMware使用ide硬盤。
環境配置
VMware6:6.01 build-55017
Hard driver: IDE
RHLS 5
Kernel version:2.6.18.8
Build procedures
1. 下載內核
ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-2.6.18.8.tar.bz2
2. 解壓
# cd /usr/src/
# tar –jxvf linux-2.6.18.8.tar.bz2
# ln –s linux-2.6.18.8 linux
# cd linux
3. 配置
# make mrproper (該命令可確保源代碼目錄下沒有不正確的.o文件,如果是新解壓的內核,此步可免)
# make menuconfig (配置內核各選項)
下面的配置建議選上:
由於在vmware中使用模擬的SCSI硬盤和AMD PCnet32網卡,因此需要“SCSI disk support”、“BusLogin SCSI support”、“AMD PCnet32 PCI support”的支持,最好編譯進內核,而不是編譯為內核模塊[U1] 。
[U1]“Device Drivers --->SCSI device support” set as * firstly
Device Drivers --->SCSI device support ---><*> SCSI disk support
Device Drivers --->SCSI device support --->SCSI low-level drivers ---> <*> BusLogic SCSI support
Device Drivers ---> Networking support --->Ethernet (10 or 100Mbit) ---> <*> AMD PCnet32 PCI support
如果編譯為模塊,initrd則是必須的,否則啟動過程中會出現“VFS:unable to mounting root fs”.程序包mkinitrd依賴於程序包device-mapper,而程序包device-mapper又依賴於lvm2,因此需要同時下載mkinitrd、device-mapper、lvm2程序包。
EXT3也是必須編譯進內核,而不能編譯為模塊
File system--->(以下9個選項是關於ext2和ext3文件系統配置,全部選上)
Second extended fs support
Ext2 extended attributes
Ext2 POSIX Access Control Lists
Ext2 Security Labels
Ext3 journalling file system support
Ext3 extended attributes
Ext3 POSIX Access Control Lists
Ext3 Security Labels
JBB (ext3) debugging support
4. 開始編譯
在/usr/src/linux-2.6.18.8目錄下,執行以下命令即可編譯。編譯需要一段時間,給自己倒杯茶耐心等候吧!
# make dep (建立編譯時所需的從屬文件。注意:如果內核從未編譯過,此步可跳過)
# make clean (清除內核編譯的目標文件。注意:如果內核從未編譯過,此步可跳過)
# make bzImage (注意大小寫。這一步才是真正編譯內核)
內核編譯成功後,會在/usr/src/linux/arch/i386/boot目錄中生成一個新內核的映像文件bzImage。如果用make zImage編譯,內核很大的話,系統會提示你使用make bzImage命令來編譯,所以我直接用make bzImage來編譯。
# make modules (編譯可加載模塊)
# make modules_install (安裝可加載模塊)
安裝成功後,系統會在/lib/modules目錄下生成一個2.6.18.8子目錄,裡面存放著新內核的所有可加載模塊。
# make install (安裝新內核)
5. ok了,你可以用命令reboot重啟了,重啟之後選擇那個2.6.18.8的內核版本就行了。