- VMware上Linux内核build方法
-
VMware上Linux内核build方法网络上关于vmware上linux内核build的文章很多,主要问题在于buildc成功后无法正常启动内核,这是vmware的一个bug,目前没有见到好的解决办法。以下内核build并成功运行,关键主要在于:VMware使用ide硬盘。环境配置VMware6:6.01 build-55017Hard driver: IDERHLS 5Kernel version:2.6.18.8Build procedures1. 下载内核ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-2.6.18.8.tar.bz22. 解压# cd /usr/src/# tar –jxvf linux-2.6.18.8.tar.bz2# ln –s linux-2.6.18.8 linux# cd linux3. 配置# 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 * firstlyDevice Drivers --->SCSI device support ---><*> SCSI disk supportDevice Drivers --->SCSI device support --->SCSI low-level drivers ---> <*> BusLogic SCSI supportDevice 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 supportExt2 extended attributesExt2 POSIX Access Control ListsExt2 Security LabelsExt3 journalling file system supportExt3 extended attributesExt3 POSIX Access Control ListsExt3 Security LabelsJBB (ext3) debugging support4. 开始编译在/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的内核版本就行了。