升级linux内核,经过自己电脑虚拟机多次测试终于成功了升级linux内核,在网上找了相关资料,升级教程尝试了2-3次,发现没有一次成功的,自己又琢磨了下,终于成功的升级内核,升级内核的关键步骤,如下。以前的内核版本是2.6.18,新的内核是2.6.26。
1.下载新内核,下载网站
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 > ../initrdgzip -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,用户层来看没啥区别。建议在升级新内核的时候不要把老内核删掉了,万一出问题了还可以重新编译。