linux2.6内核编译心得

 

经过十天左右的时间终于第一次编译成功,下面把编译过程中遇到的问题及解决方法说明一下。

我是在vm下面用linux-2.4.20-8编译linux-2.6.8.1内核的,

先下载了module-init-tools-3.0.tar.gz然后安装,如何安装可以看INSTALL文件。

然后解压下载的内核源代码。在www.kernel.org下载。

接着make menuconfigmake modulesmake modules_installmake 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.208编译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,这下问题大了,这些问题包括:

我截取了图片,如下

linux2.6内核编译心得_第1张图片

对于这些错误,我感觉都是跟make menuconfig有关,我第一次编译完然后重启很顺利进去到linux-2.6.8.1系统,而不用去修改什么/etc/inittab/boot/grub/grub.conf/etc/fattab/etc/rc.d/rc.sysinit文件。所以编译时一定要先系统地看编译的每一个配置选项,我最后一次是对着每个选项的意思,然后决定选还是不选。

当然我还不是很清楚究竟哪些选项是导致问题出现的原因,但是参考网上的资料还有同学的意见以及自己的实践,有些选项还是要留意一下,如果自己编译不成果最好试着选上。

我已经保留了成果编译后的.config文件,以后可以参考。

需要注意的选项有:

1、  file system 那里,把所有的ext2ext3都编译进内核,一共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”;

5Device Drivers ---> Fusion MPT device support --->

  

 

   make install结束后不用修改/boot/grub/grub.conf配置文件。有的可能要修改"root=LABEL=/"这个启动参数,要多尝试 

 

你可能感兴趣的:(linux)