![不将 Ubuntu 版本更新为较新/较旧内核版本的原因](https://linux22.com/image/960456/%E4%B8%8D%E5%B0%86%20Ubuntu%20%E7%89%88%E6%9C%AC%E6%9B%B4%E6%96%B0%E4%B8%BA%E8%BE%83%E6%96%B0%2F%E8%BE%83%E6%97%A7%E5%86%85%E6%A0%B8%E7%89%88%E6%9C%AC%E7%9A%84%E5%8E%9F%E5%9B%A0.png)
我有几个朋友让我将他们的 Ubuntu 更新到较新的内核,但不更改 Ubuntu 版本。例如,保留 10.04 和 3.3 内核版本。
当拥有较旧或当前的 Ubuntu 版本时,许多用户希望将较新的稳定/不稳定内核版本应用于他们正在使用的 Ubuntu 版本,认为这类似于升级程序。所以我正在寻找一些简单的答案来解释在 Ubuntu 版本中强制使用不适合它的较新内核版本的危险(这些危险几乎比优点大得多)。
我能告诉他们或者向他们解释为什么当他们拥有的 Ubuntu 版本不是为该内核版本制作时,他们不应该更新到较新/较旧的内核。
答案1
我理解你的观点,但也和你的朋友一样,希望使用较新的内核。就我个人而言,我在 Ubuntu 11.10 上运行主线内核(使用 kernel.org 的源代码构建)。这意味着我负责安全更新,并且由于我没有运行原版内核,因此 Ubuntu 不会提供任何支持。
通常,当提出是否升级内核的问题时,答案是“稳定性/安全性/硬件支持的改进”。现在,您的问题似乎与整个内核系列有关。使用旧内核版本的风险非常明显:未修复的安全问题、较少的硬件支持以及其他可能影响稳定性或功能的错误。
当使用比 Ubuntu 版本更旧的内核系列(例如 2.6.32,而 Oneiric 附带 3.0)时,还有其他影响:
- 用户空间程序需要仅在较新的内核版本中可用的功能。例如,固态磁盘支持 TRIM 参数。即使程序
mount
支持带有discard
启用 TRIM 选项的安装程序,如果内核不支持 TRIM,它也无法工作。现在,这将打印有关不支持的内核的错误,但可以是另一个更重要的功能,Ubuntu 认为它存在。图形堆栈 Xorg 在很大程度上依赖于内核提供的功能。如果内核非常古老,Xorg 堆栈可能无法充分利用其功能。
较新的内核系列可以通过多种方式收集:用户维护的 PPA,内核.ubuntu.com或者直接从 ubuntu+1 的存储库packages.ubuntu.com。可能的影响是 API 已更改,或者某些部分的“默认”行为。这可能不是那么灾难性的,但对默认值做出强烈假设的程序可能无法按预期工作。示例:默认使用relatime 替代noatime。更严重的问题是回归会破坏硬件(无线连接是常见的噩梦)。Ubuntu 原版内核已经针对硬件进行了测试,发布后,它应该会成为大多数 Ubuntu 用户的最佳内核。
对某些功能/硬件的新支持也并不总是好的。如果程序或脚本认为对 (...) 的支持已损坏,因此引入了解决方法,则可能彼此不兼容并破坏两者。例如,Bumblebee+bbswitch 当前禁用 nvidia 卡。如果较新的内核版本突然对这种混合图形硬件提供了出色的支持,则可能会导致崩溃。
我开始安装一个更新的内核,因为 xorg-edgers 的内核破坏了我的无线功能,并且没有完全支持带有 nouveau 内核模块的 nvidia 卡。无线功能再次可用,nouveau 支持也更好了,但后来的升级又让无线功能变得不可靠。后来的另一个版本又解决了这个问题。好吧,如果你想要活在边缘,你就必须忍受这一点。
答案2
应用程序(/驱动程序)使用内核与硬件通信。内核向应用程序公开 API/函数以进行通信。随着内核的变化,这些函数/API 经常发生变化。这些新功能可能需要一些额外/更少的信息(例如新参数)。因此,当应用程序以旧方式调用该函数时,会导致系统崩溃。
——这是我的理解。
答案3
驱动程序可能与较新的内核不兼容。甚至一些程序可能无法正常运行。此外,该版本 Ubuntu 的专有驱动程序是为该版本的默认内核构建的。