我刚刚在 Ubuntu 14.04 上安装了新的 fglrx 驱动程序。新的 AMD 驱动程序是特定于发行版的,因此下载了它们。因为它说它们与内核兼容,最高版本为 3.17发行说明,下载了内核3.17.6版本,然后dpkg -i
安装。安装的时候提示有错误。这是日志。
因此,重新启动计算机,登录后,计算机冻结。幸运的是,我可以重新启动,访问恢复模式并在内核之间进行选择(trusty 上的默认版本是 3.13.*)。
然后,我尝试安装 3.13 和 3.17 之间的内核;安装了 3.15.10,一切顺利。然后尝试 3.17.0(稳定版),再次出错。所以我继续使用 3.16.7,一切顺利。
有人知道 3.17 发生了什么以及如何解决它吗?我怀疑 AMD 在发布说明中指的是 3.16,而不是 3.16...哦,差点忘了。这是 dpkg 内核时的错误日志。是 fglrx 日志,对于任何 3.17.* 都一样:
DKMS make.log for fglrx-core-14.501 for kernel 3.17.4-031704-generic (x86_64)
dom dic 21 03:55:11 CLST 2014
/usr/sbin/dkms: línea 73: cd: /var/lib/dkms/fglrx/14.501/build: No existe el archivo o el directorio
AMD kernel module generator version 2.1
doing Makefile based build for kernel 2.6.x and higher
rm -rf *.c *.h *.o *.ko *.a .??* *.symvers
make -C /lib/modules/3.17.4-031704-generic/build SUBDIRS=/var/lib/dkms/fglrx-core/14.501/build/2.6.x modules
make[1]: se ingresa al directorio «/usr/src/linux-headers-3.17.4-031704-generic»
CC [M] /var/lib/dkms/fglrx-core/14.501/build/2.6.x/firegl_public.o
/var/lib/dkms/fglrx-core/14.501/build/2.6.x/firegl_public.c:6396:12: warning: ‘KCL_fpu_save_init’ defined but not used [-Wunused-function]
static int KCL_fpu_save_init(struct task_struct *tsk)
^
CC [M] /var/lib/dkms/fglrx-core/14.501/build/2.6.x/kcl_acpi.o
/var/lib/dkms/fglrx-core/14.501/build/2.6.x/kcl_acpi.c: In function ‘KCL_ACPI_Slot_No_Hotplug’:
/var/lib/dkms/fglrx-core/14.501/build/2.6.x/kcl_acpi.c:845:21: error: ‘struct acpi_device_flags’ has no member named ‘no_hotplug’
tdev->flags.no_hotplug = true;
^
make[2 ]: *** [/var/lib/dkms/fglrx-core/14.501/build/2.6.x/kcl_acpi.o] Error 1
make[1 ]: *** [_module_/var/lib/dkms/fglrx-core/14.501/build/2.6.x] Error 2
make[1 ]: se sale del directorio «/usr/src/linux-headers-3.17.4-031704-generic»
make: *** [kmod_build] Error 2
build failed with return value 2
答案1
实际上,有一个针对 fglrx 14.501 的补丁,可以使其与内核 3.17.X 一起工作(来源)。因为我想从 debs 安装,所以我的做法与链接源中描述的方式略有不同。
- 从 AMD 网站下载 deb 包
- 提取 fglrx_core
dpkg-deb -R packagename.deb tmp
- 将补丁应用到文件
tmp/usr/src/fglrx-core-14.501/kcl_acpi.c
(我刚刚手动添加了缺失的行) - 重命名/删除旧的 deb 包
- 重建包
dpkg-deb -b tmp packagename.deb
- 从固定 deb 安装
答案2
AMD 仅支持最高 3.16 版内核。暂不支持 3.17 版内核