Inux内核升级是学习内核的基本条件。如果自已编译的内核跑不起来,那谈linux内核学习就是镜花水月了。其实网上有很多相关的

内核编译升级教程。我这个纯粹是多余的,但是为什么很多同志升级还是老失败呢?其实网上有很多教程,撞到相关的问题问一下

google或百度就基本是可以解决的。虽然网上的解决方法很多时候不是很好,但是要编译成功并运行起来是没有太大问题的。
好了,言归正传,把我的方法奉献给大家吧。
首先我的linux是centos5.4版的,内核版本是2.6.18。其实linux内核的学习和linux发行版的关系不是太大,大家喜欢哪个版本都

没问题。然后我是在WINDOWSXP上装的vmware7,然后再在vmware上面安装的centos。首先你要保证你的虚拟机上有gcc、makefile等

工具,如果没有这些工具我们就编译不了内核。如果你不是老手,对linux不是很熟你就直接按默认选项安装就是了,里包含这些基

本工具的,如果是玩过的同志,就可以定制一下。我是喜欢定制,要的东西就装上,不要的东西就不装。
我们先从www.kernel.org上下载一份源码,本文下载的是目前最新稳定版的2.6.38.5 。地址如下:

http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.38.5.tar.bz2
有了源码后,我们就将源码拷到我们的linux的/opt目录下。我建议大家在装linux的时候不要选择装虚拟机工具,即vmware_tools

。这会在我们后面的编译中带来不必要的麻烦。然后再执行解压缩:
tar jxf linux-2.6.38.5.tar.bz2            //解压内核
cd linux-2.6.38.5                    //进入解压后的目录
cp /boot/config-2.6.18-164.el5 .config  //将默认的内核配置文件拷贝过来
make menuconfig       //进入的内核配置的界面
保存退出
然后手工打开.config文件
查找# CONFIG_SYSFS_DEPRECATED is not set并将其改为CONFIG_SYSFS_DEPRECATED
保存退出
打开脚本/sbin/mkinitrd 
查找到函数:emit_modules。并在其中找到如下字符串:
emit "echo /"Loading $fullmodule module/""
emit "insmod /lib/$fullmodule $options"
找到后改成下面这个样子:
        #add by wwhs for kernel modules load error
        if [ "$fullmodule" != "dm-region-hash.ko" ] ; then
            if [ "$fullmodule" != "dm-mirror.ko" ] ; then
                emit "echo /"Loading $fullmodule module/""
                emit "insmod /lib/$fullmodule $options"
            fi 
        fi

接下来就可以进入我们经常用的一堆内核编译命令了:
cd /opt/linux-2.6.38.5
make
make modules_install
make install
在网上看见有很多同志加了一堆make dep什么的,其实是不需要的,你从内核官网上拿下来的是很干净的并且是2.6版的代码,没必

要加一些针对于2.4版或者是不干净代码的步骤。

GitHub 加速计划 / li / linux-dash
10.39 K
1.2 K
下载
A beautiful web dashboard for Linux
最近提交(Master分支:2 个月前 )
186a802e added ecosystem file for PM2 4 年前
5def40a3 Add host customization support for the NodeJS version 4 年前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐