Linux内核的编译——菜鸟篇
由于要装虚拟机,做一些Linux的实验。因此装上了vmware5.5,本来没想装vmware tools的。但是由于要和主机通信,传输一些文件,不外乎以下几种方式:
1、利用ftp服务器。同学用的就是,也很方便。但是我的网络的配置好像有些问题,ping主机都不通的,还是在一个网段下的,只好放弃了。
2、利用U盘copy,很麻烦特别是文件不大,当子文件很多的情况,等的花儿都谢了,实在不适合搞IT的人士。windows下打的包rar格式,Linux又不认。
3、利用vmware自带的share共享的方式,我试了一下,确实很方便。就是在mnt/hgfs下的。此法的前提是要有vmware tools,才可以的。综上,我选择第三个方案。
但是,在安装vmware tools时,遇到了提示 /usr/src/linux/include找不到头文件情况,仔细一看才知道,在/usr/src/目录在根本没有Linux目录,只有redhat目录(本人用的是Fedora core 5)。网上一通猛查,才发现,是要编译内核才可以有这个目录。索性到www.kernel.org去在一个内核,先用“uname -r”看了一下自己的内核的版本是:2.6.15的,于是就了一个2.6.16.1的,40多M。拿U盘拷到虚拟机中。
使用root帐号进入系统
把linux-2.6.16.1.tar 压缩包下到 /usr/src目录下
#cd /usr/src #tar -xvf linux-2.6.16.1.tar
/usr/src 下会生成一个 linux-2.6.16 目录,大概有两三百M的,内核代码就在该目录下面。把linux-2.6.18 目录改成linux的,至于为什么我也不知道,网上好似都是这样的吧(要是原来有linux的目录,就rm掉,呵呵)
#mv linux-2.6.16 linux
删除代码中还保留的 *.o 文件和其他从属文件。
#cd /usr/src/linux #make mrproper
配置内核启动内核配置程序在/usr/src/linux下 make xconfig 或者make menuconfig,还有一种make config ,好像没人推荐用的。里面会有一些配置的东西,如果不大懂,可以默认保存退出就可以了。(我就是这样的,很后悔没有配置一些,很多的都没有用比如什么蓝牙、无线等,最后搞得很大,占掉很多的空间)如果有错误,则是你的Linux在安装定制的时候有一些依赖关系的问题,具体的我也不是很清楚,所以在出现错误的时候,我就索性重装了Linux,把看似主要的有关编程开发的全部装上了,幸好是虚拟机,呵呵......
下面基本没什么问题了,一路顺风滴~~
编译内核
在/usr/src/linux目录下先清理内核
#make dep #make clean
开始编译
#make bzImage
编译内核需要大概半个小时,我用了二十几分钟编译时会出现一些警告,没关系编译成功后,会在/usr/src/linux/arch/i386/boot 目录下生成 一个新内核映像bzImage
编译可加载模块并安装模块。我用了四十几分钟编译时也会出现一些警告,不管
#make modules
#make modules_install
拷贝内核镜像到boot目录下
#cp /usr/src/linux/arch/i386/boot/bzImage /boot/vmlinuz-2.6.16 #cp /usr/src/linux/System.map /boot/System.map-2.6.16
把/boot/System.map-2.6.16链接到/boot/System.map
#ln -sf /boot/System.map-2.6.16 /boot/System.map
生成 initrd
#cd /boot #mkinitrd initrd-2.6.16.img 2.6.16.1
至此所有的准备工作完成了,下面配置一下grub就OK了(如果用lilo的,同理)
设置grub
vi /etc/grub.conf
将里面的vmlinuz-2.6.15.* 改为 vmlinuz.-2.6.16
initrd-2.6.15*.img 改为 initrd-2.6.16.img(如果不行,或者initrd-2.6.16)
保存退出
重启 reboot
重新启动登录 用“uname -r”就可以看到 显示的是2.6.16的内核
装完,收工.......