为什么不将Ubuntu版本更新为更新/更旧的内核版本的原因

我有几个朋友要求我在不改变Ubuntu版本的情况下将他们的Ubuntu更新为更新的内核。 例如,使用3.3内核版本保持在10.04。

当拥有较旧或现有的Ubuntu版本时,许多用户希望将较新的稳定/不稳定内核版本应用于他们正在使用的Ubuntu版本,认为它类似于升级程序。 所以我正在寻找的是一些简单的答案来解释在Ubuntu版本中强制使用更新的内核版本的危险(比优势更大)。

我可以告诉他们或向他们解释为什么他们不应该在没有为该内核版本制作的Ubuntu版本时更新到更新/更旧的内核。

我明白了你的观点,但也分享了你朋友的偏好以获得更新的内核。 就个人而言,我在Ubuntu 11.10上运行主线内核(使用来自kernel.org的源代码构建)。 这意味着我负责安全更新,并且我不会得到Ubuntu的支持,因为我没有运行库存内核。

通常,当提出是否升级内核的问题时,答案将是“改进稳定性/安全性/硬件支持”。 现在,您的问题似乎是关于整个内核系列。 使用旧内核版本的风险非常明显:不固定的安全问题,较少的硬件支持以及可能影响稳定性或function的其他错误。

当使用较旧的内核系列而不是为Ubuntu版本创建(例如2.6.32,其中Oneiric附带3.0)具有其他含义:

  • 期望仅在较新内核版本中可用的function的用户空间程序。 例如,固态磁盘支持TRIM参数。 即使mount程序支持使用discard选项安装程序来启用TRIM,如果内核不支持TRIM,它也不起作用。 现在,这会打印一个关于不支持的内核的错误,但是可能有另一个更重要的function,并假设Ubuntu存在。 图形堆栈Xorg强烈依赖于内核提供的function。 如果内核非常古老,Xorg堆栈可能无法充分利用其function。

可以通过各种方式收集较新的内核系列: 用户维护的PPA , kernel.ubuntu.com或直接来自packages.ubuntu.com上的ubuntu + 1的存储库。 可能的影响是API已被更改,或者某些部分的“默认”行为。 这可能不是灾难性的,但对违约做出强有力假设的程序可能无法按预期工作。 示例: 默认情况下,将noatime替换为noatime 。 更严重的问题是破坏硬件的回归 (无线是一种常见的噩梦)。 库存Ubuntu内核已经过硬件测试,一旦发布,它应该是大多数Ubuntu用户的最佳内核。

对某些function/硬件的新支持也不总是好的。 如果程序或脚本期望对(…)的支持被破坏并因此为其引入了一种解决方法,则它可能彼此不兼容并且会破坏它们。 例如,Bumblebee + bbswitch目前禁用nvidia卡。 如果较新的内核版本突然对此混合图形硬件提供了出色的支持,则可能会导致崩溃。

我开始安装一个更新的内核,因为xorg-edgers的内核破坏了我的无线,并且没有完全支持我的nvidia卡与nouveau内核模块。 无线再次工作,nouveau支持更好,但后来的升级再次使无线不可靠。 另一个版本再次解决了它。 好吧,如果你想生活在边缘,你必须忍受。

应用程序(/驱动程序)使用内核与硬件进行通信。 内核为应用程序公开API /函数。 随着内核的变化,这些function/ API经常发生变化。 这些新function可能需要一些额外/更少的信息(比如新参数)。 因此,当应用程序以旧方式调用该函数时,它将导致系统崩溃。

– 这是我的理解。

驱动程序可能与较新的内核不兼容。 甚至一些程序可能无法正常运行。此版本的Ubuntu的专有驱动程序也是为该版本的默认内核构建的。