2012-04-04 134 views
1

我对Linux内核版本号有些困惑。我注意到许多Linux发行版都没有使用最新的内核,实际上我已经看到了一些使用2.4版本的内核。是否有一个原因?除了年龄之外,是否有2.4,2.6,3.2之间的差异?使用旧内核有什么安全隐患?Linux内核版本号?

回答

3

不同的内核具有不同的功能和改进,发行版的开发人员会查看他们将支持的功能,然后根据该内核的最稳定支持来决定使用哪个内核。

这是分销开发商决定使用哪一个,他们会选择他们感到满意的。

这是软件开发的一个特点,就像询问Java 1.1和Java 1.7是什么以及与年龄不同有什么区别......答案很多。

大多数内核和软件也会有一个安全补丁计划,并且如果您不知道安全问题,他们永远不会修复,而是由用户来维护系统的补丁并保持最新。

0

随着内核的改进/改变,它们可能会打破早期版本的期望。如果一个发行版变得不稳定,因为在新版本的内核下有太多的软件发生故障,开发者可能会选择使用较早的版本,直到软件能够处理新内核中的更改为止。

3

在主要版本(例如2.4和2.6)之间,引入了新功能并且旧功能已过时,最终导致内核二进制文件不兼容。

如果您依赖某些不属于主线内核的内核模块,这一点很重要(例如,它是专有的,原作者不提供更新的模块;或者它是开源的(但从未将其纳入内核),没有人愿意花时间迁移代码)

也是一个新的主版本可能会显着改变系统行为。我记得当从2.4切换到2.6时,许多需要低延迟音频(这是我的背景,原谅我)的人会留在旧内核中,因为新调度算法在某些情况下表现更差。

+0

+1提到二进制不兼容 – Hamzahfrq 2014-10-19 17:02:51

1

有一个human-readable changelog for the Linux Kernel

有些人采取“如果有效 - 不要改变它”的态度。所以,运行一个较旧的内核会产生安全隐患 - 但也存在升级可能会导致某些问题的风险。

0

通常情况下,二进制映像在版本号的第一部分或第二部分更改的内核之间可能不可移植。所以为了从2.4升级到2.6,很大一部分库和可执行文件也需要升级/重新编译。如果您使用封闭的源应用程序/驱动程序,这可能是一个特殊问题。

大多数Linux发行商将根据对附加功能的安全影响/需求来支持新版内核版本的端口修补程序。如果您无法定期升级整个系统,那么您需要找到一个明确支持长支持周期并具有良好的后端移植历史记录(例如RHEL,SuSE)的发行版。

1

我希望下面的页面将帮助我们理解Linux版本编号系统: http://www.linfo.org/kernel_version_numbering.html

的搭扣,从http://www.tldp.org/FAQ/Linux-FAQ/kernel.html#linux-versioning

的Linux版本号遵循一个长期传统。每个版本都有三个数字,即X.Y.Z.只有在发生真正重大的变化时,“X”才会增加,这使得为一个版本编写的软件不再能够正确运行。这种情况很少发生 - 在Linux的历史中,它只发生过一次。

的“Y”告诉你哪个发展“系列的”你是在一种稳定的内核将永远在这个位置上的偶数,而开发的内核永远有一个奇数。

的“Z”指定哪个你有内核的确切版本,它递增每个发布。