CentOS 2.6.32内核升级遇到问题记录以备忘

最近在弄面向对象文件系统,用到www.open-osd.org 上面的东西,编译网站上提供的2.6.30版本的内核,遇到了下面的几个问题,今天花了一天的时间来搞定这些问题,趁着夜深人静,把今天的工作做下总结.
首先说下我怎么编译内核.网上有很多相关的文章介绍各种distribution的linux上如何编译内核,我用过debian/ubuntu系列,Redhat/FC/CentOS系列,两大系列的linux,我自己的编译方式都很简单.
1.复制原有的config文件,原有的config文件在/boot目录下面,例如/boot/config-2.6.18-128-el5,复制到源 码目录下,名字为.config,即 cp /boot/config-2.6.18-128-el5 .config
2.make menuconfig;修改内核选项,这个过程其实就是修改.config文件,因为上一步的原因,所以里面的大部分选项不需要修改,当然你可以修改来精简自己的内核,这一步里主要做的就是增加自己需要的属性,要么[*],要么[M].
3.make;make modules;make modules_install;make install # 这一连串的命令就把内核编译了一遍,如果是Redhat系列的,下一步就可以直接reboot了,它已经把grub,initrd等都搞定了;若是 debian系列的,可能还需要一些额外的操作,比如update-grub,update-initramfs之类的.
4.reboot

今天我上面的过程编译新下来的30版的内核,结果出现了两个之前没有遇到的问题.

首先,重启后报出 insmod: error inserting ‘/lib/dm-region-hash.ko’: –1 File exits
这个问题,google了一下,就找到了解决方案,原因是生成的initrd里面的init中加载dm-region-hash.ko这个模块重复了两遍.解决办法

1.解压initrd
# cp /boot/initrd-2.6.30.img /tmp
# cd /tmp/
# ls
initrd-2.6.30.img
# mkdir newinitrd
# cd newinitrd/
# zcat ../initrd-2.6.30.img |cpio -i
11537 blocks
# ls
bin  dev  etc  init  lib  proc  sbin  sys  sysroot
2,编辑init,删掉重复的两行
echo "Loading dm-region-hash.ko module"
insmod /lib/dm-region-hash.ko
echo "Loading dm-region-hash.ko module"
insmod /lib/dm-region-hash.ko
3,重新打包initrd
# find .|cpio -c -o > ../initrd
11538 blocks
# cd ..
# gzip -9 < initrd > initrd-2.6.30.img
# ls
initrd-2.6.30.img      initrd            newinitrd
initrd-2.6.30.img就是重新打包的initrd了,然后把initrd.img拷贝到/boot,就可以了,再reboot,就不会有之前的错误了.
将init文件的第二行“setquiet” 去掉,boot时就可以打印出initrd在做什么,功能类似于 sh –x init
这个应该是某个地方配置的有问题,所以才出现了重复加载的问题,没时间去细究原因,代价是每次make install后都需要按照上面的步骤修改initrd.img

虽然上面的这个问题没有了,开机时又出现了新的问题.
CentOS 2.6.32内核升级遇到问题记录以备忘_第1张图片

为了能让遇到相同问题的同仁能用google,baidu找到这篇文章,我敲一遍上面的错误,如下
*************************************************************************
mount: could not find filesystem '/dev/root'
Setting up other filesystems.
Setting up new root fs
setuproot: moving /dev failed: No such file or directory
no fstab.sys, mounting internal defaults
setuproot: error mounting /proc: No such file or directory
setuproot: error mounting /sys: No such file or directory
Switching to new root and running init.
unmounting old /dev
unmounting old /proc
unmounting old /sys
switchroot: mount failed: No such file or directory
Kernel panic - not syncing: Attempted to kill init!
**************************************************************************
这个问题在网上找了半天,网上的这个问题主要集中在2.6.31版本内核的编译上,网上的大部分方案我都试了,以前在用debian的时候ms也遇到过这 个问题,不过仔细想来问题不太一样,以前遇到的问题是sata硬盘驱动没有包含在initrd里面,所以开机的时候无法加载磁盘,网上的方法试了个遍,内 核编译了好几遍,也没有搞定.终于找到了http://patchwork.kernel.org/patch/37444/ 这个网页,从里面找到了Solution,问题出在了CONFIG_SYSFS_DEPRECATED_V2这个选项上了.解决办法如下
编辑内核源码包里面的.config文件.
CONFIG_SYSFS_DEPRECATED_V2=y #默认该选项为not set,被注释掉的.
然后再编译一遍内核,修改一下initrd/init文件,就都OK了.

最后,推荐两个软件,windows live writer,我的这篇博文就是用软件写出来的.
另外一个是everNote,一个google notebook的替代品,google notebook这个东西本来很不错的,可是google已经停止维护了,且在firefox里面有时候google.com都无法访 问.everNote有客户端,也有网络版,用起来还可以,不过有40M/month的空间限制,这个很不爽,尽管根本用不了这么大的空间.
顺便说下google的客户端软件,总觉得google的客户端软件不好,我不太喜欢google gadget那种侧栏的方式,比较喜欢xp最经典的窗口模式的软件,这样我就可以用actual windows manager(这个软件很赞,我一直在用,在程序窗口右上角的三个图标扩展出更多的图标,支持置顶,置底,透明等效果),chrome虽然不错,但是跟 awm兼容性就不太好,另外chrome CPU经常100%,且最近让我死机多次,我直接把chrome干掉了.
我最近有个需求,功能上类似于google的一套东西,google notebook,docs,mail,blog等,再做个比较好的客户端,把这些东西放在一起,支持搜索,同步,发布等功能.我想这个软件可以由腾讯来 做,从foxmail扩展出去,也可以由微软来做,从live writer做出去(ms好像做过了?messenger套件里的东西我就用了msn和writer,其他的没有用过)如果google肯愿意做的话,那 更好啦.

你可能感兴趣的:(CentOS 2.6.32内核升级遇到问题记录以备忘)