升级linux内核,经过自己电脑虚拟机多次测试终于成功了升级linux内核,在网上找了相关资料,升级教程尝试了2-3次,发现没有一次成功的,自己又琢磨了下,终于成功的升级内核,升级内核的关键步骤,如下。以前的内核版本是2.6.18,新的内核是2.6.26。

1.下载新内核,下载网站www.kernel.org

2.copy内核到/usr/local/src下

3.解压内核  解压内核命令   tar -xjvf linux-2.6.26.tar.bz2

4.清理以前编译所生成的文件  命令为 make distclean,如果以前没有编译过,此部可省略

5.拷贝原有内核的配置文件,到新内核下。

cd /usr/local/src

cp -p  /boot/config-2.6.18-53.el5   .config

6.可视化的内核编译选项  make menuconfig

7.编译内核 make all     注意,此过程比较漫长,看坐下来,喝杯咖啡,聊下天,上个厕所,基本就看编译完,15K E5800八核CPU编译四十来分钟。

8.加载外挂模块  命令   make modules_install   

9.安装内核   make install

以上操作特别要注意的是,在编译内核的过程中一定要安装gcc编译工具,不然根本就编译不了,如果你没有安装gcc编译器,我建议你重新装系统吧,装的时候把开发工具装上去,不然你自己装gcc,你会被累死去,gcc依赖的包3-40多个,rpm 方式装你要累死去。

10.解压initrd文件

   initrd文件是在系统引导过程中挂载的一个临时根文件系统,用来支持两阶段的引导过程。

   cp /boot/initrd-2.6.26.img /tmp

   cd /tmp/

   mkdir newinitrd

   cd newinitrd/   

11.重新打包initrd文件

  zcat ../initrd-2.6.26.img |cpio -i 
  find .|cpio -c -o > ../initrd

  gzip -9 < initrd > initrd-2.6.26.img

12.将initrd重新复制到/boot目录下

13.编辑系统启动菜单,选择从initrd-2.6.26.img 内核启动

需要编辑 vim /boot/grub/grub.conf文件

注意写启动内核的时候必须要写/目录所在的磁盘

重启完电脑,就已经成功加载新的内核

最后讲下启动的原理:启动顺序  boot.img->vmlinuz->initrd.z
boot.img 应该是引导盘,是启动时首先加载的,里面应该有grub之类的引导程序负责识别文件系统加载vmlinuz
vmlinuz:内核,安装过程也是有linux内核的。
initrd.z 这个是init ram disk 的意思,内核加载这个构成一个内存内部的跟文件系统,在用户层初始化系统,比如检测硬件动态加载module之类的。老的p_w_picpath initrd初始化完后跳回内核,内核执行init 调用init.d脚本,新的cpio格式执行完后initrd直接调用init,用户层来看没啥区别。建议在升级新内核的时候不要把老内核删掉了,万一出问题了还可以重新编译。