首页 百科知识 为什么编译内核

为什么编译内核

时间:2022-10-10 百科知识 版权反馈
【摘要】:大部分情况不需要手动编译内核。但仍可能因为以下的理由重新编译内核:Linux作为一个自由软件,在广大爱好者的支持下,内核版本不断更新。通常,更新的内核会支持更多的硬件,具备更好的进程管理能力,运行速度更快、更稳定,并且一般会修复老版本中发现的许多漏洞等,经常性地选择升级更新的系统内核是Linux使用者的必要操作内容。最后运行make oldconfig以产生起始配置用的/usr/src/Linux-2.4/.config文件。

9.3 为什么编译内核

学习目标

·了解为什么编译内核

大部分情况不需要手动编译内核。用户安装系统的时候默认选择并安装了适用广泛的内核。但仍可能因为以下的理由重新编译内核:

(1)最优化服务器;

(2)出于安全原因需要禁止某些默认功能;

(3)添加系统默认未做选择的功能;

(4)为计算机更换超越原内核负载能力的硬件;

(5)需要更改无法用/proc/sys来变更的内核运行参数;

(6)更好地匹配用户计算机上的硬件特质。

Linux作为一个自由软件,在广大爱好者的支持下,内核版本不断更新。新的内核修订了旧内核的bug,并增加了许多新的特性。如果用户想要使用这些新特性,或想根据自己的系统度身定制一个更高效,更稳定的内核,就需要重新编译内核。

通常,更新的内核会支持更多的硬件,具备更好的进程管理能力,运行速度更快、更稳定,并且一般会修复老版本中发现的许多漏洞等,经常性地选择升级更新的系统内核是Linux使用者的必要操作内容。

为了正确、合理地设置内核编译配置选项,从而只编译系统需要的功能的代码,一般主要有下面四个考虑:

(1)自己定制编译的内核运行更快(具有更少的代码);

(2)系统将拥有更多的内存(内核部分将不会被交换到虚拟内存中);

(3)不需要的功能编译进入内核可能会增加被系统攻击者利用的漏洞;

(4)将某种功能编译为模块方式会比编译到内核内的方式速度要慢一些。

要增加对某部分功能的支持,比如网络之类,可以把相应部分编译到内核中(Build-in),也可以把该部分编译成模块(Module),动态调用。

如果编译到内核中,在内核启动时就可以自动支持相应部分的功能,这样的优点是方便、速度快,机器一启动,就可以使用这部分功能了;缺点是会使内核变得庞大起来,不管是否需要这部分功能,它都会存在,这就是Windows惯用的招数,建议经常使用的部分直接编译到内核中,比如网卡。

如果编译成模块,就会生成对应的.o文件,在使用的时候可以动态加载,优点是不会使内核过分庞大,缺点是得自己来调用这些模块。

内核的版本定义在内核源代码目录下的Makefile文件头。因此变更EXTRAVERSION可以确保您编译出来的内核不与原有的内核冲突。

运行make mrproper将之前编译内核产生的相关文件删除,然后从configs目录下复制一份新的.config配置文件。最后运行make oldconfig以产生起始配置用的/usr/src/Linux-2.4/.config文件。

在编译的过程中会有数百项配置选项,配制选择结果记录在内核源代码目录下的.config文件里。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈