不更新Ubuntu版本到较新/较旧的内核版本的原因

我有几个朋友要求我将他们的Ubuntu更新到一个新的内核版本,而不改变Ubuntu的版本。例如,在10.04版本中保持3.3内核版本。

当拥有较旧或现有的Ubuntu版本时,许多用户希望将较新的稳定/不稳定内核版本应用于他们正在使用的Ubuntu版本,他们认为这与升级程序类似。因此,我正在寻找一些简单的答案来解释在未针对其设计的Ubuntu发布版中强制更新到较新内核版本的危险(这些危险几乎比优点更大)。

我可以告诉他们什么或解释给他们为什么他们不应该在拥有不适用于该内核版本的Ubuntu版本时更新到较新/较旧的内核版本。

3个回答

我理解你的观点,但也同意你朋友更喜欢使用更新的内核。就个人而言,我在Ubuntu 11.10上运行着一个主线内核(使用来自kernel.org的源代码构建)。这意味着我需要负责安全更新,并且由于我没有运行原始内核,所以我将无法得到Ubuntu的支持。
通常情况下,当提出是否升级内核的问题时,答案通常是“提高稳定性/安全性/硬件支持”。现在,你的问题似乎涉及整个内核系列。使用较旧的内核版本存在一些明显的风险:未修复的安全问题、较少的硬件支持以及可能影响稳定性或功能的其他错误。
当使用比Ubuntu版本创建时的较旧的内核系列(例如Oneiric使用3.0,而你使用2.6.32)时,还会有其他影响。
用户空间程序期望在较新的内核版本中才能使用的功能。例如,固态硬盘支持TRIM参数。即使mount程序支持使用discard选项挂载程序以启用TRIM,如果内核不支持它,那么它将无法工作。现在,这将打印一个关于不支持的内核的错误,但是Ubuntu可能存在另一个更重要且被假定存在的功能。图形堆栈Xorg强烈依赖内核提供的功能。如果内核非常古老,Xorg堆栈可能无法充分利用其功能。
新的内核系列可以通过多种方式获取:用户维护的PPA, kernel.ubuntu.com 或直接从ubuntu+1的存储库中获取packages.ubuntu.com。可能的影响是API已经发生了变化,或者某些部分的“默认”行为发生了改变。这可能不会造成太大的灾难,但是对默认值有强烈假设的程序可能无法按预期工作。例如:relatime替换noatime作为默认值。更严重的问题将是导致硬件故障的“退步”(无线网络是常见的噩梦)。Ubuntu的原始内核已经经过硬件测试,并在发布时被认为是大多数Ubuntu用户最好的内核。
新的支持某些功能/硬件并不总是好的。如果一个程序或脚本期望支持(...)被破坏,并因此引入了一个解决方法,它们可能不兼容并且会导致两者都崩溃。例如,Bumblebee+bbswitch目前禁用了NVIDIA显卡。如果一个更新的内核版本突然对这种混合图形硬件有出色的支持,可能会导致崩溃。
我开始安装一个更新的内核,因为xorg-edgers的那个内核破坏了我的无线网络,并且没有完全支持我的NVIDIA显卡与nouveau内核模块。无线网络又恢复正常了,nouveau的支持也更好了,但后来的升级又使无线网络变得不可靠。而后面的一个版本又解决了这个问题。嗯,如果你想要追求最新的技术,就必须接受这样的情况。

可能会有一些软件不支持较新版本的Linux内核主线版本的功能,但在开源世界中,这可以得到解决,例如在GitHub/Launchpad等相应的仓库中提出问题。因此,没有什么重要的需要担心的。 - Jose Barakat

应用程序(/驱动程序)使用内核与硬件进行通信。内核为应用程序提供了API /函数来实现这一点。随着内核的变化,这些函数/ API经常发生变化。这些新函数可能需要一些额外/较少的信息(例如新参数)。因此,当应用程序以旧的方式调用该函数时,会导致系统崩溃。
- 这是我的理解。

例如显示驱动程序。 - Uri Herrera

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