内核编译的失败之旅

这几天一直在鼓捣linux内核的编译,就是到了今天仍然没有搞定,尽管如此,我也在失败的过程中学到了很多自己觉得很值得的东西。对于我继续内核编译之路帮助非常大。

1、关于linux内核的版本,目前发行的linux版本非常多,每个版本的内核也不一样,比如说redhat7的内核版本是2.4.**这样子,而Fedroa 的内核是2.6.**,这区别就来了,这里的2.6内核并不代表就是比2.4**的内核版本高,我开始就被这样的版本给搞糊涂了。所以在编译内核的时候一定要看好自己内核的版本号。更要注意的是2.4**最好不要直接升级到2.6**版本的。因为他们的功能架构有很大的区别,所以非常容易导致内核编译的失败。但,这并不能说明,2.4.xx不可以直接升级到2.6.xx的。我这次内核的升级,失败的第一个因素在于此。

2、在从新编译新的内核的时候首先要确认一下是否安装了GCC,kernel-devel类似内核编译的工具,否则在你编译内核的时候会提示“缺东少西”,这也是我这次失败的第二个因素。

3,弄清楚路径的问题。在你安装了内核编译的工具之后,同时也会安装上系统预设的内核源码文件,他们通常会存放在/usr/src/kernels/里。编译过的内核会放在/usr/src/linux里(根据版本不一样,这两个目录名字会有所不同)。这时候,需要注意的是,不要把我们新下载回来的内核放到这个两个目录任何一个里。通常,我喜欢把下载回来的新内核放到/root里,也就是root用户下。解压后,在把解压后的内核文件cp到/usr/src/里,文件名就用新内核的文件名。这样做比较有条理,而且还不破坏原来的系统内核。这一点在我做的时候,就被自己搞乱了,最后搞不清楚哪里是哪里了,文件也放的自己都找不到了。所以也是失败的原因之一。

4,在编译内核开始之前,多看看相关的资料,确保自己尽可能的少出错。(感觉有点象废话)但在我身上发生的事情就是这样,当时并没有过详细查看相关资料,就胡乱上阵了。建议研究一下和编译内核有关的命令:make menuconfig、make xconfig、make gconfig、make mrporper、make clean、make bzImage、make moules、make modules_install。

5,在内核的设置编译过程中,设置或者说是配置内核算是最复杂也最重要的了,因为它直接影响到你系统的相关性能。所以对于相关参数可以参考前人的介绍直接google一下就行了。即使你英文很好,可以直接看里面每个参数的相关介绍,我也建议你去看看。我因为没有耐心的看完,加上自己鸟语水平不行。所以此次内核即使成功编译了,估计系统也是很不稳定的。

6,配置完了内核,编译内核的过程相对就简单很多了,编译命令的顺序是这样:

1、make mrporper
2、make clean
3、make bzImage(注意I是大写的)
4、make modules
5、make modules_install

如果都很顺利的执行了,那么就离使用新内核不远了。顺便说一句,make bzimage的时间比较长,根据你系统的硬件有很大关系。因为它就是真正的系统核心文件。

7、关于安装,modules安装在你使用make modules_install的时候就已经安装好了。但是编译好的核心文件需要动下手脚,它通常保存在类似/usr/src/内核版本号/arch/i386/boot/bzImage的位置。首先把新内核cp到/boot/下,名字可以写成这样vmlinuz-新的版本号,不过在cp 之前先去/boot下看看,防止文件重名。然后在执行cp /usr/src/新内核版本号/system.map 到/boot/下名字写成System.map-新内核版本号这样。接下来修改系统的引导程序。现在大都使用Grub来引导系统,所以需要修改一下GRUB设定文件。
用vi就可以:vi /boot/grub/menu.lst具体修改内容可以写成这样:

把kernel /vmlinuz-新内核版本号 ro root=LABEL=/ hda=ide-scsi改成
kernel /vmlinuz-新内核版本号 ro root=/dev/hdaX

其中X是你的根的分区。都修改完成以后,从新启动系统,大部分下就可以顺利进入系统了。

写在最后,上面的文字,只是一个编译内核的大概过程,其中有很多地方是和实际有出入的,所以如果你完全按照文字去做,很难保证绝对的成功。毕竟我也没成功。只是提供一个简单的概念。望理解。如果我成功了,也一定会在次把成功的过程写出来。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值