拙劣的Linux内核模块机制

CPU/显卡/打印机/USB设备等硬件问题
回复
fuhuizn
帖子: 948
注册时间: 2006-01-06 22:55
系统: ubuntu
联系:

拙劣的Linux内核模块机制

#1

帖子 fuhuizn » 2018-07-20 16:09

  Linux的硬件驱动程序是一个个内核模块,每次升级内核,就必须重新编译所有模块,因此硬件厂家必须提供驱动程序源代码才能配适不断升级的Linux内核。而驱动程序源代码的开放会导致硬件设计机密的泄漏,这导致了硬件厂家的抵制,因此大量硬件没有可用的Linux版驱动程序。
  我首次安装Linux是很多年前的事了,当时Linux内核版本还是2.2,当时就有很多声音批评Linux的内核模块机制。直到18年后的今天,最新的内核版本升级到了4.18,这个问题竟然毫无改进。作为一个十几年的GNU/Linux爱好者,实在感到痛心疾首,对Linux内核社区的developers感到及其失望,这18年来Linux没有大面积推广开来,这帮大神们负有不可推卸的责任。
  从技术上说这个问题是否很难解决?一点都不难!微软的windows95的开发时间那么早,都可以直接使用硬件厂家提供的二进制驱动程序,Linux内核社区聚集了那么多技术大神,不可能真的有不可逾越的技术门槛。原因只能是“固执”,对GPL过于执着了,甚至可以说是病态的偏执,导致他们不肯接受硬件厂家提供的闭源二进制驱动程序。
  如果Linux可以改掉这个缺点,那么它的生态环境必然会迅速改善。希望有人可以做点什么,哪怕重新fork一个Linux内核分支,甩开Linux内核社区单干也可以。只要硬件驱动程序跟上,内核的升级并不重要,现在很多办公电脑不是还在跑老掉牙的WindowsXP吗?在使用体验上和最新的Windows10相比,又有多少区别?
onlylove
论坛版主
帖子: 5226
注册时间: 2007-01-14 16:23

Re: 拙劣的Linux内核模块机制

#2

帖子 onlylove » 2018-07-20 16:16

作为一个十几年的GNU/Linux爱好者,实在感到痛心疾首,对Linux内核社区的developers感到及其失望,这18年来Linux没有大面积推广开来,这帮大神们负有不可推卸的责任。从技术上说这个问题是否很难解决?一点都不难!
爱好者你好,爱好者再见,既然一点不难,麻烦您老人家顺手解决了?顺便说,听说有个叫hurd的东西,可能能满足你的需求
头像
astolia
论坛版主
帖子: 6420
注册时间: 2008-09-18 13:11

Re: 拙劣的Linux内核模块机制

#3

帖子 astolia » 2018-07-20 18:28

如果厂商想发布闭源驱动,完全可以照搬nvidia的做法,一个gpl接口+闭源固件。但有几个厂家这么做了?
fuhuizn 写了: 2018-07-20 16:09只要硬件驱动程序跟上
你怎么确保驱动能跟上?完全闭源的东西,厂家哪天不跟了你能有什么办法。我现在还有一台99年的扫描仪,厂商的驱动只跟到win2000,xp下还能凑合用,win7+就没戏了。但linux下用起来一直毫无问题。
onlylove
论坛版主
帖子: 5226
注册时间: 2007-01-14 16:23

Re: 拙劣的Linux内核模块机制

#4

帖子 onlylove » 2018-07-20 23:03

astolia 写了: 2018-07-20 18:28 如果厂商想发布闭源驱动,完全可以照搬nvidia的做法,一个gpl接口+闭源固件。但有几个厂家这么做了?
fuhuizn 写了: 2018-07-20 16:09只要硬件驱动程序跟上
你怎么确保驱动能跟上?完全闭源的东西,厂家哪天不跟了你能有什么办法。我现在还有一台99年的扫描仪,厂商的驱动只跟到win2000,xp下还能凑合用,win7+就没戏了。但linux下用起来一直毫无问题。
说到扫描仪,我记得我这边还留了台古怪的扫描仪驱动,当初好像是明基给税务定制的,驱动和市面上的型号不一样(市面有同型号),必须用随机光盘里面的,驱动应该也是2000+xp的,估计新系统也用不来,linux的话就不清楚了
头像
Ping-Wu
帖子: 1822
注册时间: 2012-11-14 9:34
系统: Debian 12

Re: 拙劣的Linux内核模块机制

#5

帖子 Ping-Wu » 2018-07-21 2:18

fuhuizn 写了: 2018-07-20 16:09Linux的硬件驱动程序是一个个内核模块,每次升级内核,就必须重新编译所有模块,因此硬件厂家必须提供驱动程序源代码才能配适不断升级的Linux内核。而驱动程序源代码的开放会导致硬件设计机密的泄漏,这导致了硬件厂家的抵制,因此大量硬件没有可用的Linux版驱动程序。
这正是 Linux 内核开发者(尤其是 Linus Torvalds 本人)从 4.15 版开始,把重点放在 in-kernel AMD amdgpu 驱动的最主要原因。目前这个开源驱动程序推出的时间甚至比硬体还早(表示 Linux 内核跟AMD显卡开发者的充分合作),在我们的系统下也比闭源的 amdgpu-pro 好用。

要骂人的时候,先找一面镜子。里面看到的,就正是必须被骂的对象。

一个功能强大,能无缝使用的显卡驱动器是 Linux 桌面大众化的最重要元件。Nvidia 虽然有它的一套软件连接器(module interface)来让 Linux 核心使用闭源驱动器,但问题很多,根本无法推荐一般大众使用。
fuhuizn
帖子: 948
注册时间: 2006-01-06 22:55
系统: ubuntu
联系:

Re: 拙劣的Linux内核模块机制

#6

帖子 fuhuizn » 2018-07-21 9:54

忠言逆耳利于行、良药苦口利于病!
如果Linux可以使用二进制驱动,那么它只需要维护好一套开放接口,根本不需要浪费大量精力在驱动程序上,根本不会发生像上面说的 “Linux 内核开发者(尤其是 Linus Torvalds 本人)从 4.15 版开始,把重点放在 in-kernel AMD amdgpu 驱动”这种事,硬件厂家自己就会提供完美的驱动程序。
头像
oneleaf
论坛管理员
帖子: 10441
注册时间: 2005-03-27 0:06
系统: Ubuntu 12.04

Re: 拙劣的Linux内核模块机制

#7

帖子 oneleaf » 2018-07-21 10:31

linux和windows最大的不同是稳定性,开放源码有助于稳定性提升。至于厂家是否愿意提供独立的二进制驱动,只和使用量有关。另外内核支持使用二进制驱动。
onlylove
论坛版主
帖子: 5226
注册时间: 2007-01-14 16:23

Re: 拙劣的Linux内核模块机制

#8

帖子 onlylove » 2018-07-21 11:43

如果Linux可以使用二进制驱动
nvidia驱动表示,嗯,我不是二进制
sis驱动表示,嗯,我也不是二进制
http://w3.sis.com/download/agreement.php?url=/download/

说起来很早以前有个古董机,用的sis672,然后sis给的驱动不但是二进制,而且是redhat7.0这种在当时已经是文物的发行版

https://fedoraproject.org/wiki/History_of_Red_Hat_Linux

2000年9月份的时候发布的系统,都有二进制驱动,差几个月正好18年,楼主却在这里谈,如果linux可以用二进制驱动

还对gpl的病态的偏执,厂家提供的二进制里面如果有bug,你说,怎么调试?因为你驱动的bug改代码?还是你厂家改驱动?

freebsd不是gpl,而且因为授权兼容问题,至今没有apache2, 按照freebsd的协议,完全可以闭源,你见几个厂家给他发布驱动了?

再说GPL,openwrt,就是当年cisco被发现用了linux之后,迫于压力放出的代码形成的一个分支,也就是说,没gpl,用了就用了,改了就 改了,反正改了什么你也不知道,到时候各自出各自的linux,连兼容能不能保证都不知道,还fork,你fork什么?

算了,人都说叫不醒装睡的,我估计喷也喷不醒的,还给自己落个喷子的名声,太亏了
回复