因为开需要编译2.6.38的uboot,奈何自己的linux 是内核版本太低,编译uboot经常出错,于是想自己升级下内核,内核升级一直想做,但是一直没成功,忙活两天,查找很多资料,出了很多错误,终于升级成功,相信以后遇到此类问题就很好解决了,手动操作10分钟差不多了。
自己的是centos5.5版本的,vm。
编译内核其实很简单,不过在Fedora里面(其实Ubuntu也一样),如果安装了官方显卡驱动的话,启用自己编译的最新的内核可能会导致系统无法进去。
在Fedora 14里,首先卸载官方显卡驱动(确保卸载后能够进系统)并在kernel.org下载最新的linux-2.6.38.tar.bz2的包;(我的是centos 没有遇到这种情况,不过我在root中无法上网,原来是以前设置了network,忘了)
卸载完官方显卡驱动后,开始配置安装。(需必须)
1、解压linux-2.6.38.tar.bz2至/usr/src/kernel目录并切换至其解压后目录下:
1 2 | tar -jxvf ./linux-2.6.38.tar.bz2 /usr/src/kernel cd /usr/src/kernel/linux-2.6.38 |
2、拷贝当前内核配置文件做为新内核编译的.config文件:
1 | cp /boot/config-`uname-r`./.config |
3、使用menuconfig方式编译。首先安装其所需要依赖的libcurses5-dev库,还有,所以还需要先安装好GCC,如果你没安装的话:
1 2 3 4 | yum install ncurses-devel -y yum install gcc gcc-c++ *aclocal make mrproper (删除上次编译产生的垃圾,如果是初次编译不需要执行) make menuconfig |
在弹出的对话框里选择倒数第二项,也就是加载刚刚拷贝过来的.config文件做为编译配置:
选中后按“Enter”,在弹出的对话框按“OK”,然后选中“Exit”退出,退出时会提示是否保存,选择“Yes”。
4、开始编译。依次执行下面的命令:
1 2 3 | make -j4 all (CPU是双核用该命令编译,若是单核CPU使用-j2) make modules_install (安装模块到/lib/modules/2.6.38) make install (将vmlinuz-2.6.38、System.map-2.6.38、initramfs-2.6.38.img拷贝到/boot目录下并自动修改grub.conf) |
这将是一段漫长的过程,我在网上找了个脚本放在下面,不错要使用的话,你还是对照一下,看看那些地方需要修改,比如内核版本号码,问价路径,执行的是下面的简单脚本(从第4步开始):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | #!/bin/bash # 须以root执行该脚本 # Contact:http://www.ninthday.net PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin export PATH mkdir /tmp/2.6.38 echo "Start make..." make -j4 all >/tmp/2.6.38/sta_make.txt 2>&1 sta_make=`echo $?` if [ $sta_make -gt 0 ]; then echo "Command--'make -ja all' has occurred an error.Exit compile and shutdown now." >>/tmp/2.6.38/error.txt shutdown -h now fi make modules_install >sta_modules.txt 2>&1 sta_modules=`echo $?` if [ $sta_modules -gt 0 ]; then echo "Command--'make modules_install' has occurred an error.Exit compile and shutdown now." >>/tmp/2.6.38/error.txt shutdown -h now fi make install >sta_install.txt 2>&1 sta_install=`echo $?` if [ $sta_install -gt 0 ]; then echo "Command--'make install' has occurred an error.Exit compile and shutdown now." >>/tmp/2.6.38/error.txt shutdown -h now fi echo "Compile success." >/tmp/2.6.38/success.txt exit 0 |
我现在使用的内核:
重启机子后,uname -r 查看版本号码