每当Linus Torvalds发布一个新的Linux内核主线版本时,人们常常会感到困惑,不知道哪个版本才是最新的“稳定版”。是新的X.Y版本,还是之前的X.Y-1.Z版本?最新的内核版本是否太“新”了?是否应该坚持使用之前的版本?在kernel.org网站上的信息并不能解答这个困惑。目前,在该网页的顶部,我们看到最新的稳定版内核是4.15,但在下面的表格中,4.14.16也被列为“稳定版”,而4.15被列为“主线版本”,这确实令人困惑,不是吗?
不幸的是,这个问题没有一个简单的答案。我们在这里使用“稳定”一词有两个不同的含义:一是作为最初发布的Git树的名称,二是表示这个内核可以被视为“稳定版”,适用于“生产系统”。
由于Git的分布式特性,Linux的开发工作在许多不同的分支仓库中进行。所有的bug修复和新特性首先由各个子系统维护者收集和准备,然后提交给Linus Torvalds,由他包含在自己的Linux树中,他的Git树被认为是Git仓库的“master”。我们称这个树为“主线”Linux树。
在每个新的内核版本发布之前,它都要经过几轮的“候选发布”,由开发者进行测试并完善所有这些新特性。基于这几轮测试的反馈,Linus决定最终版本是否已经准备就绪。通常会有7个每周预发布版本,但这个数字经常达到-rc8,有时甚至达到-rc9及以上。当Linus确信新内核没有问题后,他就制作最终发行版,我们称之为“稳定版”,表示它不再是一个“候选发布版”。
就像任何一个由不完美的人编写的复杂软件一样,任何一个Linux内核的新版本都包含着bug,这些bug必须被修复。Linux内核的bug修复规则非常简单:所有修复必须首先进入Linus的树。一旦主线仓库中的bug被修复,它接着会被应用到内核开发社区仍在维护的已发布内核中。在它们被考虑回迁到已发布的稳定版本之前,所有的bug修复必须满足一套重要的标准之一是它们“必须已经存在于Linus的树中”。这是一个独立的Git仓库,由Greg Kroah-Hartman策划和维护,用于回迁bug修复,也被称为“稳定”树,因为它用于跟踪以前发布的稳定内核。
因此,无论何时访问kernel.org网站以查看最新的稳定内核,您应该使用大黄色按钮上所说的“最新的稳定内核”。
但是,您可能会惊讶地发现,4.15和4.14.16都是稳定版本,那么哪个更“稳定”呢?有些人不愿意使用以“.0”结尾的内核发行版,因为他们认为这个版本不够“稳定”,直到最新的以“.1”结尾的版本发布为止。很难证明或反驳这种观点的对与错,因此具体选择取决于个人偏好。
一方面,任何一个进入稳定树的发行版都必须首先被接受进入主线内核版本中,随后会被回迁到已发布版本中。这意味着主线版本相比稳定树中的发行版本总是包含最新的bug修复。因此,如果您想使用的发行版包含的“已知bug”最少,那么使用以“.0”结尾的主线发行版是最佳选择。
另一方面,主线版本增加了所有新的酷特性,而新特性也带来了未知数量的“新bug”,而这些“新bug”在旧的稳定版中是不存在的。那么新的未知bug是否比旧的已知但尚未修复的bug更令人担忧呢?这取决于个人选择。然而需要说明的是,许多bug修复只对主线版本进行了彻底的测试。当补丁回迁到旧内核时,它们可能会很好地工作,但很少进行与旧内核的集成测试。通常假设“以前的稳定版本”足够接近当前确信可用于生产系统的主线版本。实际上也是如此,这也更加说明了为什么选择“哪个内核版本更稳定”是一件非常困难的事情。
因此,从根本上说,我们没有定量或定性的手段来明确告诉您哪个内核版本更稳定-4.15还是4.14.16?我们只能告诉您它们具有“不同的稳定性”。这个答案可能没有帮助到您,但至少您了解了这些版本之间的差异。