Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1238128
  • 博文数量: 264
  • 博客积分: 10772
  • 博客等级: 上将
  • 技术积分: 2325
  • 用 户 组: 普通用户
  • 注册时间: 2007-07-25 11:54
文章分类

全部博文(264)

文章存档

2012年(4)

2011年(51)

2010年(31)

2009年(57)

2008年(51)

2007年(70)

分类: LINUX

2010-04-23 23:04:07

参考这篇
给内核源代码打了补丁
    cd /usr/src
    rm -rf linux
    tar jxf /download/linux-2.6.10.tar.bz2
    ln -s linux-2.6.10 linux
    cd linux
    bunzip2 -dv /download/patch-2.6.10-bk4.bz2 |patch -p1
    如果在/usr/src目录下就用patch -p0

参考这篇
编译安装了最新的内核源码
3.下面就是升级的步骤啦

#[root@local linux-2.6.28]make mrproper

如果不定制模块可以跳过这步
#[root@local linux-2.6.28]make menuconfig

编译内核,时间比较长,大概花了45分钟
#[root@local linux-2.6.28]make

#[root@local linux-2.6.28]make modules_install

#[root@local linux-2.6.28]make install

如果没有意外的话基本上是成功了,重启机器:

#[root@local linux-2.6.28]reboot

编译成功后系统启动菜单grub.conf会被修改,在机器启动时会有新旧两个内核版本可以选择.

查看新内核版本:
#[root@local ~]uname -r
2.6.28

中间出现了两个问题
①insmod: error inserting '/lib/dm-region-hash.ko' : -1 File exists
参考这篇
解决了第一个问题
是因为重复加载了/lib/dm-region-hash.ko

可以解决的,步骤如下
1,解压initrd文件
[root@bogon ~]# cp /boot/initrd-2.6.30.4.img /tmp
[root@bogon ~]# cd /tmp/
[root@bogon tmp]# ls
initrd-2.6.30.4.img
[root@bogon tmp]# mkdir newinitrd
[root@bogon tmp]# cd newinitrd/
[root@bogon newinitrd]# zcat ../initrd-2.6.30.4.img |cpio -i
11537 blocks
释放之后看到如下内容
[root@bogon newinitrd]# ls
bin  dev  etc  init  lib  proc  sbin  sys  sysroot

2,ok,下边就是编辑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
[root@bogon newinitrd]# find .|cpio -c -o > ../initrd
11538 blocks
[root@bogon newinitrd]# cd ..
[root@bogon tmp]# gzip -9 < initrd > initrd.img
[root@bogon tmp]# ls
initrd-2.6.30.4.img      initrd       initrd.img            newinitrd

好了,initrd.img就是重新打包的initrd了,然后把initrd.img拷贝到/boot,更改grub.conf里边的initrd- 2.6.30.4.img为initrd.img就可以了,
这样“insmod: error inserting '/lib/dm-region-hash.ko' : -1 File exists” 就不会有了

其实将init文件的第二行“setquiet” 去掉,你就知道initrd文件到底在做什么了

②could not find filesystem '/dev/root'
参考这篇http://explorezjx.blog.sohu.com/141760228.html
解决了第二个问题

这个问题在网上找了半天,网上的这个问题主要集中在2.6.31版本内核的编译上,网上的大部分方案我都试了,以前在用debian的时候ms也遇到过这 个问题,不过仔细想来问题不太一样,以前遇到的问题是sata硬盘驱动没有包含在initrd里面,所以开机的时候无法加载磁盘,网上的方法试了个遍,内 核编译了好几遍,也没有搞定.终于找到了 这个网页,从里面找到了Solution,问题出在了CONFIG_SYSFS_DEPRECATED_V2这个选项上了.解决办法如下
编辑内核源码包里面的.config文件.
CONFIG_SYSFS_DEPRECATED_V2=y #默认该选项为not set,被注释掉的.
然后再编译一遍内核就都OK了.

阅读(664) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~