经过十天左右的时间终于第一次编译成功,下面把编译过程中遇到的问题及解决方法说明一下。
我是在vm下面用linux-2.4.20-8编译linux-2.6.8.1内核的,
先下载了module-init-tools-3.0.tar.gz然后安装,如何安装可以看INSTALL文件。
然后解压下载的内核源代码。在www.kernel.org下载。
接着make menuconfig、make modules、make modules_install、make install
make menuconfig的错误:
这个错误不是在vmlinux2.4内核下面编译出现的,是在FC7下编译linux-2.6.8.1出现的错误。虽然这一步通过了,最后还是没有成功,只是为以后编译做借鉴。
[root@localhost linux-2.6.8.1]# make menuconfig
HOSTCC scripts/basic/fixdep
HOSTCC scripts/basic/split-include
HOSTCC scripts/basic/docproc
SHIPPED scripts/kconfig/zconf.tab.h
HOSTCC scripts/kconfig/conf.o
HOSTCC scripts/kconfig/mconf.o
scripts/kconfig/mconf.c:91: 错误:对 ‘current_menu’ 的静态声明出现在非静态声明之后
scripts/kconfig/lkc.h:63: 错误:‘current_menu’ 的上一个声明在此
make[1]: *** [scripts/kconfig/mconf.o] 错误 1
make: *** [menuconfig] 错误 2
[root@localhost linux-2.6.8.1]#
解决方法 :
进入srcipts/kconfig/mconf.c
注释掉出错的一行,
91 //static struct menu *current_menu;
对cripts/kconfig/lkc.h:63: 错误:‘current_menu‘可以不理睬。
对rhlinux-2.4.20-8,make menuconfig没有问题,到make install时出现问题。(出现问题很可能是配置所选选项所导致的)
在2.4.20-8编译2.6.8.1内核,编译执行到make install时出现No module Buslogic found for kernel 2.6.8.1的错误,解决方法:
从/etc/modules.conf中删除BusLogic的加载项
#alias scsi_hostadapter BusLogic
然后编译就成功了。
然后make,没有错误,只是一些警告,
重启reboot,这下问题大了,这些问题包括:
我截取了图片,如下
对于这些错误,我感觉都是跟make menuconfig有关,我第一次编译完然后重启很顺利进去到linux-2.6.8.1系统,而不用去修改什么/etc/inittab、/boot/grub/grub.conf、/etc/fattab、/etc/rc.d/rc.sysinit文件。所以编译时一定要先系统地看编译的每一个配置选项,我最后一次是对着每个选项的意思,然后决定选还是不选。
当然我还不是很清楚究竟哪些选项是导致问题出现的原因,但是参考网上的资料还有同学的意见以及自己的实践,有些选项还是要留意一下,如果自己编译不成果最好试着选上。
我已经保留了成果编译后的.config文件,以后可以参考。
需要注意的选项有:
1、 file system 那里,把所有的ext2、ext3都编译进内核,一共9个。
2、 Device Drivers --->SCSI device support ---><*>
SCSI disk support Device Drivers --->SCSI device support --->SCSI low-level drivers ---> <*>
BusLogic SCSI support,(这个选项没有的话,可能会提示没有buslogic错误什么的,没记错的话在/etc/modules.conf下面注销掉buslogic那一行就ok了)
因为vm下面硬盘是默认为SCSI格式的,所以SCSI选项这个要多留意。
3、 Loadable Module support选项中,一定要选上“Module unloading”和“Automatic kernel module loading”这两项;
4、 Device Drivers--->Block Devices中一定要选上Loopback device support; 和
RAM disk support
Device Drivers--->Multi-device support(RAID and LVM)”处要选上“device mapper support”;
Device Drivers--->Graphics support”, 一定要选上” Support for frame buffer devices”;
5、Device Drivers ---> Fusion MPT device support --->
make install结束后不用修改/boot/grub/grub.conf配置文件。有的可能要修改"root=LABEL=/"这个启动参数,要多尝试 。