首先去内核的官网下载官方内核,比如:https://www.kernel.org/pub/linux/kernel/v2.6/。下载压缩文件,*.tar.bz2。
解压到/usr/src目录下
# tar -Jxvf linux-2.6.30.3.tar.bz2 -C /usr/src/
此时会在/usr/src下新建一个目录,./linux-2.6.30.3
进入该目录,用ls -al查看文件如下图所示:
使用命令:make mrproper,清除下数据
然后开始挑选内核功能:在该目录下,运行命令,make menuconfig。
可能会弹出以下错误警告:
*** Unable to find the ncurses libraries or the
*** required header files.
*** 'make menuconfig' requires the ncurses libraries.
***
*** Install ncurses (ncurses-devel) and try again.
***
而且很奇怪的是,我用apt-get install ncursesdevel,提示安装失败
对此,进行baidu,发现解决方案,http://blog.csdn.net/yao_qinwei/article/details/8805101
Ubuntu软件管理器服务端有作修改过,软件名不对
sudo apt-get install libncurses5-dev
利用这条命令即可安装成功。
接着命令:make menucofig
进入安装界面
在这里具体的参数要根据自身电脑的硬件来设定,可参考鸟哥的linux私房菜中的配置
配置好保存后退出。
然后就是进行内核的编译和安装了。
编译内核有以下几个命令:
make bzImage 编译经过压缩的内核(默认)
make modules 编译内核模块
由于常见的/boot下面的内核文件都是经过压缩过的内核文件,因此常见的就是这两者命令
输入编译内核命令之后,就是漫长的等待
在这期间可能会出现一些问题,比如
drivers/net/igbvf/igbvf.h:128:15: 错误: 重复的成员‘page’
make[4]: *** [drivers/net/igbvf/ethtool.o] 错误 1
make[3]: *** [drivers/net/igbvf] 错误 2
make[2]: *** [drivers/net] 错误 2
make[1]: *** [drivers] 错误 2
make[1]:正在离开目录 `/usr/src/linux-2.6.32.2'
make: *** [debian/stamp/build/kernel] 错误 2
这些错误存在的原因是因为,gcc的版本和内核所需的gcc版本不同,导致编译过程有很多语法问题。
解决方法是,用vim 修改 drivers/net/igbvf/igbvf.h文件,128行代码为:struct page *page;再往上看,第123行,也有struct page *page这行代码,这个结构定义在内部的一个结构体中。就是他的名字与128行的重复了,而4.6.3的编译器对不支持这种方式的定义,我们修改128行的代码为struct page *pagep;保存退出;
如何查看内核编译成功
进入内核源码的目录,查看有没有bzImage文件
内核编译成功后就是开始编译内核模块:
命令:sudo make modules
也是经过漫长的等待编译成功
内核模块编译好之后,开始进行模块的安装
命令:sudo make modules_install
安装成功后,如何查看:
在/lib/modules命令下新建了内核的模块,代表模块安装成功,接下来就是安装内核了
安装内核命令:make install
安装成功,能够看到:
在/boot目录下,可以看到内核vmlinux-3.2.2c
这就代表安装成功了。
接下来就是重启,在启动菜单能够看到对应的内核项了。