我应该升级到“主线”内核吗?

新的“主线”内核版本可以从Ubuntu内核团队获得,例如3.4和3.5,而Ubuntu 12.04使用的是3.2。
- 主线内核是什么? - 它们比我现有的内核更好吗? - 升级到主线内核的利弊是什么? - 我能轻松地回退吗?

4个回答

升级到主线内核通常不是一个好主意

这个答案中的大部分基本信息来自主线构建维基百科

1. 它们仅供测试,不受支持

  • 主线内核是从最新的未经修改的"主线"Linux内核源代码构建而成。
  • Ubuntu内核团队仅提供这些内核用于测试和调试目的,以查看问题是否已被"上游"即Linux内核开发者修复。
  • 因此,它们不受支持且必须自担风险;您可以通过kernel-oops向kernel.org报告可能的错误,或者如果您希望更快的解决方案,可以尝试在Linux内核邮件列表发布。

2. 它们经常会导致驱动程序出现问题,特别是Nvidia/AMD和无线网络(Broadcom)

主线内核不包含任何由Ubuntu提供的驱动程序或补丁。 这意味着不提供图形、无线等二进制驱动程序。 如果您尝试直接从制造商下载二进制驱动程序进行安装,很有可能它们无法工作,因为主线头文件可能不兼容。 对于12.04之后的非LTS版本(12.10、13.04等),这一点尤其明显,因为主线内核是使用上一个LTS工具链(编译器等)构建的,通常比最新的非LTS版本上的工具链要旧。 3. 只有在您认为它们可能修复当前内核存在的关键问题时,才应该安装这些驱动程序。
  • 新版本的内核有时会修复您可能遇到的硬件或文件系统问题。例如,最新的英特尔Ivy Bridge处理器上的内置HD4000图形有时会冻结,这是一个已在3.3.6及更高版本内核中修复的错误
  • 在这种情况下,您可以尝试安装主线内核,并查看它是否能解决您的问题。
  • 如果可以解决问题,您应该考虑升级到最新的Ubuntu+1内核,因为它确实有可用的二进制驱动程序。

4. 如果您安装了主线或其他较新的内核,您仍然可以选择在启动时使用旧的(稳定)内核:

  • 打开电脑后,按住Shift键。

  • 您将看到如下所示的Grub菜单。使用向下箭头选择“Previous Linux Versions”,然后按下Enter键。

    enter image description here

  • 选择一个带有版本号x.x.x-generic的选项,而不是带有x.x.x-yyyyyy-generic的选项,并按下Enter键。通常情况下,这是第一个选项,除非您安装了多个主线/自定义内核。

    enter image description here


1虽然这是非常真实的,但如果您正在运行最新的CPU和GPU(如http://kernelnewbies.org/Linux_3.4中所述),3.4内核确实提供了改进的硬件支持。有些人在Ubuntu 12.04的默认内核上遇到了问题,升级解决了很多问题:请参阅http://www.youtube.com/watch?v=traegZveTKo。(视频标题提到了内核3.5,但实际讲的是3.4。)我同意,然而,除非您有一个真正紧迫的原因,否则没有必要从主线更新内核。 - user76204
2这是一个旧的帖子,但当你说OP应该考虑使用Ubuntu+1内核时,你的意思是什么?我在哪里可以找到它们?我现在处于类似的情况。我的硬件非常新,似乎3.12主线内核支持得更好。 - rimez

不要使用主线版本,你应该考虑使用LTS增强堆栈。

https://wiki.ubuntu.com/Kernel/LTSEnablementStack

在这种情况下,官方将新版本内核/显卡驱动堆栈移植到LTS版的Ubuntu。因此,Precise 12.04.5使用了Trusty版的内核(3.13)。

这条路线看起来更合乎逻辑。HWE Xenial内核比Trusty内核好吗?通过这种方式升级内核有什么优缺点? - Seek Truth
@SeekTruth 取决于你首先为什么要升级内核。并不是说Xenial内核比Trusty内核更好,只是它们从kernel.org中提取的版本不同。 - Kevin

如果你了解新内核在处理硬件方面的具体修复或改进,我会建议你采用它。

除非我遇到了一些麻烦,比如N64游戏模拟运行非常缓慢且有很多错误,否则我不会升级到主线内核,因为主线内核缺乏支持。在尝试了所有找到的模拟器和xorg的配置之后,我阅读了《为什么Radeon图形在Linux 3.12上更快》。这足以激励我进行测试,结果出现在外观和性能方面都非常惊人,而且目前还没有出现新问题。

需要注意的一点是是否安装了外部模块(也称为树外模块)(请参阅《识别树外模块》以了解其位置)。如果你需要这些模块,请考虑它们是否能够适配新的内核版本。进行一些研究并在新的内核版本上进行测试。最坏的情况是,你可以启动到前一个内核版本并卸载新的版本。

在尝试升级到主线内核之前,建议先移除外部或专有模块。我确实不得不移除VirtualBox,以避免在内核安装过程中出现"错误!模块构建的返回状态不正确"的问题。

绝对不行,除非是为了测试目的。就在昨天(2021年9月15日),我安装了5.14.4内核(系统:Ubuntu 20.04),遇到了以下非常奇怪的行为:在我的PHP代码中,调用set_time_limit(0)导致max_execution_time被设置为0秒!
这只是我遇到的一个bug,但我确信还有更多。总之,我不建议安装主线内核。