首页 > Linux系统管理 > 如何编译linux内核
2015
07-31

如何编译linux内核

概述
内核,是一个操作系统的核心。它负责管理系统的进程、内存、设备驱动程序、文件和网络系统,决定着系统的性能和稳定性。
 
Linux的一个重要的特点就是其源代码的公开性,所有的内核源程序都可以在/usr/src/linux下找到,大部分应用软件也都是遵循GPL而设计的,你都可以获取相应的源程序代码。
 
内核版本的更新版本可以访问 http://www.kernel.org
 
编译内核的好处:
 
 
1、更新的内核会支持更多的硬件,具备更好的进程管理能力;
 
2、修复老版本的漏洞,不需要的功能编译进入内核可能会增加被系统攻击者利用的漏洞;
 
3、自己定制编译的内核运行更快(具有更少的代码);
 
4、系统将拥有更多的内存(内核部分将不会被交换到虚拟内存中);
 
5、将某种功能编译为模块方式会比编译到内核内的方式速度要慢一些。
 
 
 
编译内核
以centos6.5为例,把内核版本从2.6.32升级到2.6.39。
 
从www.kernel.org下载最新稳定版 linux-2.6.39.tar.bz2至/opt/kernel
 
图形化配置编译内核时的参数需要一个插件:
 
yum -y install ncurses-devel
 
 
 
解压内核文件
 
cd /opt/kernel
 
tar -jxvf linux-2.6.39.tar.bz2
 
 
 
如果之前编译过一次没成功,需要清理下
 
make mrproper
 
使用原有的配置文件:
 
cp /boot/config-2.6.32-431.el6.x86_64 /opt/kernel/.config
 
vim .config
 
找到下面这行
 
# CONFIG_SYSFS_DEPRECATED_V2 is not set
 
修改为:
 
CONFIG_SYSFS_DEPRECATED_V2=y
 
如果不修改上面这个参数,重启会报错:
 
Volume group "VolGroup00" not found  
 
Unalbe to access resume device (/dev/VolGroup00/LogVol00)
 
 
 
在原有的配置文件基础上修改参数:
 
make menuconfig
 
 
 
如果不做修改,选中当前界面倒数第二个选项:
 
Load an Alternate Configuration File
 
然后选中当前的配置文件.config
 
最后选中最后一个选项:
 
Save an Alternate Configuration
 
 
 
然后开始编译:
 
这个过程需要很长时间才能编译,少则1个小时,多则几个小时:
 
make -j `cat /proc/cpuinfo |grep processor|wc -l` all
 
编译完,安装模块:
make modules_install
 
安装主要内核:
make install
 
如果是在虚拟机上升级内核,会报如下错误,这个错误跟vmware tools有关可以忽略:
 
ERROR: modinfo: could not find module vmhgfs
 
ERROR: modinfo: could not find module vsock
 
ERROR: modinfo: could not find module vmware_balloon
 
ERROR: modinfo: could not find module vmci
 
重新服务器,开机界面选中新的内核版本进入即可,输入uname –r即可查看到内核版本已经更新。
 
经测试上面的方法使用于centOS6.5×64系统,而且是没有安装任何软件的情况,如果编译或者安装过其他软件,例如DRBD,最后一步make install时可能就会报错,导致重启进不了系统。
最后编辑:
作者:saunix
大型互联网公司linux系统运维攻城狮,专门担当消防员

留下一个回复