由于仅 GPL 代码,专有 FGLRX 模块无法编译

Mad*_*Man 6 ati graphics fglrx

(Ubuntu 15.04) 在最新一轮更新后,fglrx 无法在我的两台笔记本电脑上编译 dkms 模块。一台笔记本电脑具有可切换的显卡,而另一台则没有。带有可切换图形的笔记本电脑与集成的英特尔芯片组配合使用时可以正常工作,而另一台笔记本电脑则启动到黑屏。错误日志如下。

FATAL: modpost: GPL-incompatible module fglrx.ko uses GPL-only symbol 'pci_ignore_hotplug'
scripts/Makefile.modpost:90: recipe for target '__modpost' failed
make[2]: *** [__modpost] Error 1
Makefile:1397: recipe for target 'modules' failed
make[1]: *** [modules] Error 2
make[1]: Leaving directory '/usr/src/linux-headers-3.19.0-26-generic'
Run Code Online (Sandbox Code Playgroud)

我在 askubuntu.com 上环顾四周,注意到有很多新的 Ubuntu 用户对使用 FGLRX 的损坏的 Ubuntu 桌面感到不安,但对发生的事情没有任何答案。如果有人想出答案,我们可以回答其中一些用户的问题。

感谢 Pilot6 和 Vladimir 修复

在软件管理器中禁用预发布的更新。

放到终端并输入

sudo apt-get purge linux-headers-3.19.0-26 linux-headers-3.19.0-26-generic linux-image-3.19.0-26-generic 

sudo apt-get install linux-headers-3.19.0-25 linux-headers-3.19.0-25-generic linux-image-3.19.0-25-generic
Run Code Online (Sandbox Code Playgroud)

Kev*_*vin 0

真正的问题是内核有一个仅导出为 gpl 的函数。两种可能的解决方案:

  1. 驱动程序更新以使用非 gpl 函数
  2. 内核更新以将函数导出为非 gpl

MODULE_LICENSE("Proprietary")在此之前,FGLRX、NVIDIA 和自定义模块都将失败。

在我的情况下,在 3.19 内核中使用trace_printk,对于专有的内部模块,会生成“__trace_bputs”错误

我通过将 MODULE_LICENSE 更改为“GPL”来解决这个问题(出于明显的法律原因,仅用于内部测试)。