网络上关于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的内核版本就行了。