CentOS5.3重编译内核中出现的一些问题

时间: 2009-08-29 / 分类: Linux / 浏览次数: 6,876 / 3个评论 发表评论

最近待业在家,正好有空,就把买了一两年的《鸟哥的Linux私房菜》基础版看完了,终于看完了,虽然很快就忘了很多,总归是有些收益,看到重编译内核那段,于是决定把笔记本上的Centos5.3的内核重编译一下,虽然以前也编译过一些,但都是在虚拟机上照着教程编译的,有很多地方跟现实环境是有不同的。笔记本是BenQ S53E106,CPU是CM,带PCIMCIA槽,带1394,带ATHEROS 5006XS无线网卡(无线网卡我已经换了),带红外接口,带三合一读卡器,系统以前装windows留下一个NTFS的D盘和两个FAT32的E盘和F盘,centos是装在第一个分区的,只分了个EXT3的/和SWAP,内核版本是2.6.18-128.10。
没有网络,只好在网吧下个内核了,第一次下错了,下了个2.6.27.30版本的,回去才发现不是2.6.30,首先是把原先内核的.config文件拖了出来,然后加载,改了一些选项就编译了,编译完改了一下fstab和menu.lst,重启,很快就出现问题了,出现Kernel panic: VFS: unable to mount root fs on unknown-block (0,0),没明白咋回事,再仔细瞧了一下grub的参数,发现有个root=LABEL=/,改成root=/dev/hda3后能启动了,但一半就自动重启了,反复多次都一样,最终编译和几次内核都有问题,刚开始也因为把ext3编译成了模块的缘故,不过多次改选项编译也发现了有些有用的东西,比如,我记得第一次设置参数的时候,明明有看到对ATH 5XXX无线网卡的支持,后来找了好半天都没找到,搜索又能搜索到,但在搜索中显示的位置又没有该选项,改了多次之后才明白,Prompt for development and/or incomplete code/drivers没有选择,记得以前看金步国的内核编译配置选项的时候他说最好别选的,看到鸟哥也说不选,当然,不太成熟的东西最好是不选,但有些有用的选项还是要靠它来打开呢,时间很晚了,只好放弃了。
第二天到网吧找了一下资料,看看出现Kernel panic的原因,看有人提到initrd,对linux的启动流程还是不太熟悉,再加上以前照着手册编译Gentoo内核发现就没有要initrd,不明白为什么,大致了解了一下initrd的作用,下了个2.6.30.5的内核就回去了,不管了,删掉2.6.27的一些东东,重新编译2.6.30,昨天发现的问题今天都特别注意,编译完内核,顺便生成个initrd,当mkinitrd的时候出现No module dm-mem-cache found for kernel,只好用手机搜了一下,说是加上–without-dmraid参数就可以了,生成initrd完成,再改一下menu.lst,重启,终于可以启动了,不过出现了三个问题,一个是iptables说是在加载iptables-store失败,一个是kdump启动失败,还有一个启动到DKMS_autoinstaller的时候失败,很快的刷了几行提示出来就过去了。
启动系统后看了一下iptables,发现没有nat表,明白是漏掉了某些选项,kdump那估计也是没有编译进去,但那个DKMS_autoinstaller是什么呢,搜了一下说是Dell搞的个项目,全称叫Dynamic Kernel Module Support,目的是让依赖内核的模块源码独立出来以便升级内核时候可以容易地重新建立,大概就是自动搞定自己在老版本安装的驱动。这个找了一下启动日志里,有个DKMS的日志,发现每次的启动都有一次记录,查了一下最后的,跟之前的一对比,发现原来是madwifi没有启动,原来是因为我在内核里加载了对ATH芯片的支持,madwifi就有冲突了,当时就琢磨啊,怎么停止呢?后来发现在/usr/src的madwifi模块的目录里有个dkms.conf,把一个参数YES改为NO就行了,到这里,问题基本就解决了,重新编译一下内核,加入iptables对nat的支持跟kdump的支持,启动系统,一切OK,内核自动的atheros的驱动比madwifi带的好多了,以前我启动无线后再关闭会死机,现在随开随关都没事了。
这两天的内核编译实在受益匪浅啊,操作也熟练多了,最后附上网上对mkinitrd时出现No module dm-mem-cache found for kernel的解决方法
[quote]
解决方法:
1、
#mkinitrd –without-dmraid /usr/local/src/initrd-2.6.18-92.1.22.el5.img 2.6.18-92.1.22.el5
#mkinitrd –without-dmraid /usr/local/src/initrd-2.6.18-92.el5.img 2.6.18-92.el5
2、
#echo “DMRAID=no” > /etc/sysconfig/mkinitrd/noraid
#chmod 755 /etc/sysconfig/mkinitrd/noraid
[/quote]

3个评论

  1. ryback
    2009/10/17 14:53:53

    这个出现了无规则是什么意思?
    你在centos里yum groupinstall “Development Tools”与”Development Libraries”后再试一下吧
    照道理说,如果你make oldconfig一下应该是无问题的,我是减掉了很多东西的。

  2. 向光明
    2009/10/16 23:26:19

    我和您的情况一样,也是centos5。3,不过我是hp的6515b本本,想升级为最新的2。6。30。5,编译的是后也是不断的出错。巧的是我和您一样,也是用的《鸟哥的私房菜基础版》,顺序也是按照书上的作的,但是就是不行。我后来就按照启动内核选项以后的默认值,但还是编译时出现了无规则,然后就停止了。因为我对内核很生,纯粹的菜鸟。我不知道是否一定得按照自己笔记本的具体配置去选配置项吗?希望能得到您的指导。

  3. 晴空落叶
    2009/09/02 12:01:17

    看不懂

发表评论

您的昵称 *

您的邮箱 *

您的网站