近两年 Linux LTS kernel 对比请教,知道的前辈请分享下经验

2019-11-07 22:31:29 +08:00
 lzwt806

最近打算更新一下自己的系统,在内核版本的选择上犹豫了很久,特请有经验的朋友 /前辈给点意见,感谢!

需求信息:

1,个人偏向于长期支持版( LTS ) 2,既想老旧的硬件上跑得快,又想支持较新的硬件 3,希望内核稳定可靠

已知信息:

近两年的长期支持内核有 3.10 、3.18 、4.1、4.4、4.9、4.14 、4.19 A:4.4 支持期为 6 年,意味着 API 长期不会变化,但也不会有新功能加入,奇怪的是很多大企不选用它商用 B:4.17 之后删除了老旧架构的 CPU 代码,比如 K8 啥的(可能记错),但我想保留这部份代码 C:据老赵说,4.1 之后的内核比较臃肿,变得慢 D:测试了一些发行版本,4.4~4.12 之间的版本,明显的能体验到感觉反应偏慢,但 4.13 之后好像又快起来了 E:2.6.32 据说坚如磐石,今天和一位朋友聊天,他说好多新特性都没有,可能好多新硬件不支持,好多驱动和软件都编译不过

于是,望从事 Linux 系统方面工作或对内核比较了解的朋友 /前辈给点意见,简单说:就以上几个 LTS,您认为哪个版本最好或比较好(为什么)?我这样要求 /期望的效果,哪个版本最适合我?

9853 次点击
所在节点    Linux
51 条回复
shutongxinq
2019-11-08 04:23:10 +08:00
@ps1aniuge 商业公司选择的 LTS 和社区选择的 LTS 本来就没要求一致。商业公司有自己的发布时间表,都等社区两年一次的 LTS,那灵活度太低。比如 ubuntu 18.04 现在就升级到了 5.0,自然是因为现在硬件升级太快,4.19LTS 新硬件支持已经捉急了。等下一任 LTS 出来,花儿都谢了,用户体验不行,只能自己出钱维护一个新的 kernel,保证自己现在 active 的 LTS 发行版能够兼容新硬件。
vhysug01
2019-11-08 08:48:29 +08:00
跑桌面,建议 arch 系的 manjaro,滚动更新更稳定些
我之前是 ubuntu18,为了求新,升级到 ubuntu19 之后,桌面有点卡卡的, 删除一个文件得 1s,其他还好,就给换了 manjaro
Rasphino
2019-11-08 10:31:18 +08:00
「 ISO 只有一个,AMD64 的,既要兼顾旧硬件,又想支持新硬件(主要是 AMD 新出的 Ryzen 9 39xxX,Intel 的 9 代 CPU...)」现在想要支持新 CPU,就只能先用最新的 stable (除非你有能力 backport 那些驱动)

「 4.17 之后删除了老旧架构的 CPU 代码,比如 K8 啥的(可能记错),但我想保留这部份代码」不是很能理解你的目的,这种架构的机器一般人一辈子都没有接触的机会吧..

「想老旧的硬件上跑得快」 加内核参数关闭幽灵、融断的补丁(有安全风险)
purplewall
2019-11-08 11:24:25 +08:00
2.6.x 的不仅是驱动不能编译,连内核我都很少能直接编译成功。
如果懒得升级可以试试看自己编译内核,配置下 grub2 往 /boot 文件夹里面加点东西就行,没什么难度。
桌面环境可以试试看 manjaro 配合这个
https://wiki.archlinux.org/index.php/Linux-ck
(具体即不清楚了,3.x 建议别选了,2017 年的 meltdown 需要 kalsr 和 kpti 缓解,3.x 之后的某个版本才开始默认提供这些特性的,所以从 4.x 开始选,想要用新硬件直接上 5.x stable 不香吗~)
reus
2019-11-08 11:30:44 +08:00
越旧越折腾,你应该改变观念。
arch / manjaro 这些滚动升级的,才是最不折腾的,因为有问题就会修,而非滚动更新的,有问题可能要等到下一个版本才修。
不要迷信 LTS,不管什么 LTS,给了钱的才是大爷,才能得到最好的服务。个人桌面,LTS 是没有意义的。
lzwt806
2019-11-08 12:30:41 +08:00
@neoblackcap 说得有道理,他们有钱有实力,用哪个版本都行。但是维护一个小版本真的比维护一个 LTS 版本更容易?
lzwt806
2019-11-08 12:31:30 +08:00
@mikeguan 用于笔记本,台式机,说了 x86 架构的移动操作系统。
lzwt806
2019-11-08 12:33:45 +08:00
@shutongxinq 同意您的观点,可能出于发布时间表的原因,等不到下一下 LTS 了,就选了最新的 stable
lzwt806
2019-11-08 12:39:16 +08:00
@vhysug01 @reus 最不喜欢的就是滚动更新和频繁更新,我是希望一个系统打包好以后就能用一辈子不折腾,另外 Manjaro 的 LiveCD 给我的体验并不好,需要深度订制才能符合我的需求,于其这样,还不如把我现在的 CDLinux 添加上驱动来得容易些。
lzwt806
2019-11-08 12:42:24 +08:00
@Rasphino @purplewall 感谢 2 位前辈的回复,建议不错。

看了 @Rasphino 前辈的回复,我认为比较理想的是选 4.14 。还能给点什么意见吗?
lzwt806
2019-11-08 12:44:38 +08:00
另外一提:这是我第三次提问求助了,给我的感觉是 v2 比知乎的环境好多了,真的是在讨论问题,知乎上发表一个观点,极易引来水口战。
feather12315
2019-11-08 12:53:37 +08:00
@lzwt806 #9
交钱保平安:买商业授权、技术支持,出了问题找支持方(开源软件就靠技术支持挣钱)。 只要不是古董级别(比如 k8 这种)硬件,支持都可以的。 对与新硬件,找个 linux release data 在硬件发布日期之后的用,基本不会有啥大问题。

@ps1aniuge #16

1. 内核甚至是 linux,是(脱袜子)脱老板发明并维护的。但为神马大家都不屌,脱老板的 lts 呢?难道说都拿 lts 当狗,屁么?
大发行版不用社区维护的 LTS 原因是:他们有能力自己维护 kernel,社区的 LTS 的 commiter 不是自己人,往里面添加个 feature、修复个问题流程贼慢。
LTS 的维护并不是 Linus Torvalds 来维护,具体由谁见 https://www.kernel.org/category/releases.html。大多数 LTS 的维护者是 Greg Kroah-Hartman,他维护的 LTS 见: https://github.com/gregkh/linux。

根本问题是:
- 为什么那么多牛 x 的 linux 发行版,不管是桌面版,企业服务器版,都不用最新 lts,次新 lts ?
当前的发行版也在用最新的 LTS 了,时间点在 2017 年,openSUSE 15 使用 4.14 ,Debian 9 使用的是 4,19,CentOS 8 使用的是 4.18 (自己维护)。各大发行版有滚动更新,openSUSE 是 tumbleweed,Debian 是 testing / sid,CentOS 是 Stream。

- 为什么 ubuntu 1604lts,1804lts,都不基于 kernel 的 lts ?
人家家大业大,自己维护的自己说了算,方便加 feature、修复 bug。

- 为什么红帽企业版 678,从来都基于 [中国不出,外国不造的] 小众 kernel 版本。centos7=3.10 ,centos8=4.18 版内核。以 rhel8 为例,别告诉我要基于 fedora28 的内核,不基于此版内核不就行了么?
v3.10 是 LTS,2017.11 才结束支持,CentOS 对于基础软件的策略一向保守——使用古老的版本,使用越久 bug 越少。至于为什么使用 4.18 (实际上 backports 了许多更高版本内核的 feature ),这个得问他们内部的人。

- 往祖坟上刨根问底:
大企业的发行版,不基于 lts 是一种分裂,各自为政,不尊重脱袜子。
令 linux 增加驱动,修复补丁,都变得很复杂。
而理想情况是大家都基于某个最新,次新 lts,做分支。比如 4.14.ubuntu,4.14.centos
为了话语权。变得复杂,不更好收保护费吗?
ps1aniuge
2019-11-08 13:27:30 +08:00
回 18 楼:
---我来回答你为什么 RedHat 为什么选一个版本,不选 LTS ?因为它不需要。它内部可能有上百个 Linux 工程师,内核专家可能都有几十位---
设计台词:红帽就是这么任性,就是不鸟,脱袜子的 lts。


回 21 楼:
比如 ubuntu 18.04 现在就升级到了 5.0,只能自己出钱维护一个新的 kernel。
lts 不够新,哪为什么不用比 lts 更新的 5.2stable 内核,5.3stable 内核?

回 32 楼:
大发行版不用社区维护的 LTS 原因是:他们有能力自己维护 kernel,社区的 LTS 的 commiter 不是自己人,往里面添加个 feature、修复个问题流程贼慢。

而理想情况是大家都基于某个最新 lts,次新 lts,做分支。比如 4.14.ubuntu,4.14.centos,4.19.ubuntu

我的结论:
linux 内核之江湖,太分裂了,太军阀混战了,太春秋战国了。
军阀混战=自相冲突。让法令,特性,错误,无法顺畅下达,修复,调整。

假设你是一名司机,但是你的左右手互博,左眼看东,右眼看西。你能开好车么?
基本上应该 90%一统江湖啊,这样才能指哪打哪。

是否应该减少这种分裂? 10 年后的未来,内核是否能够走向统一,还有几家分裂?元芳谈谈你怎么看?
abmin521
2019-11-08 13:34:12 +08:00
我选 ubuntu 4.15
5long
2019-11-08 15:04:50 +08:00
这个事 LTS Kernel 的维护者 GKH 专门写了博客: http://kroah.com/log/blog/2018/08/24/what-stable-kernel-should-i-use/
AstroProfundis
2019-11-08 15:43:44 +08:00
除非你明确要用到某些特别偏门的上古硬件,否则原帖里面的需求 B 是不成立的,因为真正删掉支持的都是几乎没人遇得到的超小众硬件,你如果只是想兼容过去五到十年的主流设备那选最新的一个 LTS 是完全没问题的
另外真的有个别特殊情况的时候,也可以像 #15 楼说的,在 livecd 里面多装一个老版本的定制内核就完了
ScepterZ
2019-11-08 15:48:54 +08:00
仅仅说使用体验,个人觉得随着版本更新(不只是内核),桌面 Linux 蛋疼的问题越来越少了,实在没必要找旧版
个人一直跟着 lts 的步伐,出了新 lts 就换内核
liuxu
2019-11-08 15:59:09 +08:00
@abmin521 你牛逼,大佬。
msg7086
2019-11-09 01:57:14 +08:00
@lzwt806 #24 维护小版本?想什么呢。
首先,LTS 本身就是「小版本」。
比如说 4.14 和 4.15 本身就是两个不同的「小版本」。维护 4.14 和维护 4.15 没有什么区别,都是把新版本上的 Patch backport 到之前的版本。换句话说,补丁打到 4.14.100 和 4.15.100 所需要的时间精力是类似的。

社区版的 Linux 一般用社区版的 LTS,比如 3.16 内核是 Ben 维护的,因为 3.16 是 Jessie 在用的,所以等于是身为 Debian 和 Linux 维护者的 Ben 在同时为 Debian 和 Kernel 维护 LTS,共享成果。

同理 4.4 内核是 Ubuntu 16.04 在用的,所以在 16.04 支持期内 Canonical 也会贡献他们自己的维护成果,而不是一味交给 Kernel 社区自己。等 16.04 EOL 以后,再变回仅有 Kernel 社区自己扛。

换句话说,维护任何一个 Linux 版本所需要的精力都是差不多的,和是否 LTS 没有什么太大的关系,有关系的是花「谁」的精力。像 Redhat 这些企业级公司的版本,本身就是根据自己的需求定制的,移植的是自己决定的补丁集,加入的是自己有需要的驱动,发型周期也是自己定的,就算用了社区 LTS,也不会直接把社区版的补丁版本拿来用。万一就算这次 RHEL 用的是 4.19 ,那么 RH 的 4.19.100 和官方内核 4.19.100 根本就是两个东西。RH 打的这 100 个补丁包和官方打的这 100 个补丁包也根本就不是一套补丁。官方在增加某个家用 USB Wifi 驱动的时候,RH 可能会去修一个光纤通道卡的性能缺陷。

回到主题,你需要的是一个「长期」维护的内核版本。现在维护时间比较长的,显然就是 RH 系的内核,所以要省事的话,抓个 CentOS 7 就得了,维护更新能到 2024 年,10 年的周期够稳定了。

反正新和旧是矛盾的,你又要旧(稳定)又要新(不稳定)的话那还是洗洗睡了。LTS 相对来说已经是一个新旧的平衡点了。2.6.32 坚如磐石本来就是因为旧,旧得长毛了,没有新技术引入的潜在问题,当然稳了。(而且你说的 2.6.32 肯定是 RH 家的 2.6.32.x,和官方的 2.6.32.x 也根本不是一个版本。)

简而言之,要旧,CentOS 7 内核( 3.10 ),要新,最新大厂内核( CentOS 8 的 4.18 ,Debian 的 4.19 ,Ubuntu 的 4.15 )或者官方内核( 5.4 ),要折中,旧一些的大厂内核( Debian 的 4.9,Ubuntu 的 4.4 )。
msg7086
2019-11-09 02:10:30 +08:00
另外就算你要打包自己的系统,也绝对不应该把只读系统拿来长期用。大厂的安全团队会发布安全更新,没有安全更新的系统是非常危险的。如果你自己打包内核和应用程序,也最好是引自其他发行版。「一辈子不折腾」是不可能的,因为所有的软件都有 EOL,超过 EOL 没有了安全更新就是你风险自担,有漏洞没人修被人黑了数据清空电脑烧毁甚至偷来干违法犯罪的事情最后也要你自己承担后果。

然后你还提到了自己编译驱动。我这里再提醒你一句,任何非发行版自带的内核包均不属于发行版,任何非官方内核带的源码编译出的内核均不属于官方内核。也就是说,如果你拿了 4.4 LTS 内核,再拿了个网卡驱动编译了进去运行,那么

这个内核就不再是 4.4 LTS 官方版了。

同理你上面说 2.6.32.x 上装上新的驱动,那么

这个内核也就不再是 2.6.32.x 官方版了。

这就是为什么大多数发行版的内核 都 不 是 官方内核,官方是不提供技术支持的。Arch 应该是用的官方,Gentoo 说不定也是,但是 Debian,Ubuntu,这些都不是。他们都叫做「发行版内核」。

同理你加上了驱动以后,也是「自己修改过内核」了,稳定性可靠性都和官方内核不同了。很可能你打入的某个驱动有 Bug 然后导致你电脑死机甚至数据丢失,也是有可能的。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/617396

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX