我是一个新手,用linux没两天,因为用red hat5.3 el 内核只是2.6.18,没办法支持intel的5100无线网卡,让我笔记本很不爽,看了很多帖子,决定自己动手升级内核。

 

其实步骤很多大哥都分享出来了,这里我抱着自我学习的态度,再发一次。

1、下载最新的kernel内核,我下的是linux-2.6.33.tar.gz

      解压并拷贝到/usr/src/kernel

 

[root@local ~]#tar zxvf  linux-2.6.33.tar.gz

[root@local ~]#mv linux-2.6.33 /usr/src/kernel       *(这里开始我输入的是/usr/src/kernel/   多了个/就直接把linux-                                                                                                2.6.31文件夹下的文件移动到kernel文件夹下了,没有

                                                                                                        linux-2.6.31这一级目录了,这个没关系。)

[root@local ~]#cd /usr/src/kernel/linux-2.6.33

[root@local linux-2.6.33]#make mrproper                      (用来消除原来编译的影响,建议使用啦)

[root@local linux-2.6.33]#mkae menuconfig                  (下面三种模式选择,好像基本都用的menuconfig)

  (1)make config              单行模式
(2)make menuconfig    图形模式
            (3)make xconfig       基于xwindows模式
用menuconfig 定制模块时,我是菜鸟,不懂那些模块的用途,所以就没动,直接
Save an Alternate Configuration File 的,然后一个窗口保存文件名,开始我输入了ssss.config,但始终make要报错误,后面我就直接OK,没有自己设置名称,就是保存它原来的.config  前面不加名称,然后再make就顺利过了。
[root@local linux-2.6.33]#make            (开始编译了,很慢长的。。。。。。等待吧!!!!)
 
终于完了。。。。。。
[root@local linux-2.6.33]#make modules_install    (有帖子说Enable loadable module support (CONFIG_MODULES)时选了“Yes”,但我没有这个选项。不知道怎么回事)
[root@local linux-2.6.33]#make install    
 
重启,两个内核版本,选择33新的那个,靠,出错了。。。。。。解决了问题再写吧。
 
 
接着来,启动的问题,是解决了。
按我前面说的升级后,重启,启动出现了下面的问题:

mount: could not find filesystem '/dev/root'

setuproot:moving /dev failed: No such file or directory

setuproot:error mounting /proc: No such file or directory

setuproot:error mounting /sys: No such file or directory

switchroot: mount failed: No such file or directory

Kernel panic - not syncing:Attempted to kill init!

后来找到别人写的升级指南才知道,.config必须修改后才能make,

怎么修改呢,就是gedit .config        编辑.config这个我们定制模块后保存的文件(定制时记得要选中你需要的模块,我是为了使用intel5100的无线网卡才升级的。在DEVICE DRIVER里面找无线的驱动模块就可以了,具体图片,后面有空我截了再放上来)

搜索

 

CONFIG_SYSFS_DEPRECATED_V2

你会发现它原本是这样

 

CONFIG_SYSFS_DEPRECATED_V2 is not set 

修改成

 

CONFIG_SYSFS_DEPRECATED_V2=y

保存好,关掉,开始make吧。。。。。

make modules_install

make install

 

重启又会有问题:

 

insmod: error inserting ‘/lib/dm-region-hash.ko’: –1 File exits

这个问题呢,就是要修改initrd

我用我的老内核进入系统

然后重新定制,修改.config,编译,然后修改initrd

 

# cp /boot/initrd-2.6.33.img /tmp

# cd /tmp/

# ls

initrd-2.6.33.img

# mkdir newinitrd

# cd newinitrd/

# zcat ../initrd-2.6.33.img |cpio -i

# ls

bin  dev  etc  init  lib  proc  sbin  sys  sysroot

b)         编辑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

c)         重新打包initrd

# find .|cpio -c -o > ../initrd

# cd ..

# gzip -9 < initrd > initrd-2.6.33.img

d)         initrd重新复制到/boot目录下

#cp initrd-2.6.33.img /boot

11)     重新启动

启动成功。

#uname –r

2.6.33

 

 

 

 

 

(上面的我就直接抄袭RHEL 升级指南那位老哥的内容)

后面还有iptable 附加模块启动失败,搜了一下,说是清空iptable列表,然后重建创建规则就可以了,我就没试了,因为安装WICD让我很痛苦,所以我就换成ubuntu了。

到此升级就完了,ubuntu挺好的,桌面版,内核都自动升级,不过有空还是自己弄一下,哈哈!