我从 12.04.3 升级到了 12.04.4 lts saucy stack:
sudo apt-get install --install-recommends linux-generic-lts-saucy xserver-xorg-lts-saucy libgl1-mesa-glx-lts-saucy
这样就安装了 3.11 内核,与我之前使用的 3.8 内核配合使用。但是,登录时我发现我处于回退模式,从 Xorg.0.log 中看不到 fglrx:
Loading extension GLX
FATAL: Module fglrx not found.
(WW) fglrx: No matching Device section for instance (BusID PCI:0@0:1:1) found
FATAL: Module fglrx not found.
Loading extension FGLRXEXTENSION
我也无法直接加载它:
> sudo modprobe fglrx
FATAL: Module fglrx not found.
如果我使用旧的 3.8 内核启动,一切都会顺利。完全没有问题。
我认为这可能是某种 dkms 问题。在 /lib/modules 中,我有:
drwxr-xr-x 4 root root 4096 Feb 10 20:43 3.8.0-35-generic
drwxr-xr-x 4 root root 4096 Feb 24 20:36 3.11.0-17-generic
然而:
> ls -l /var/lib/dkms/fglrx/13.251/
total 8
drwxr-xr-x 3 root root 4096 Feb 5 22:05 3.8.0-35-generic
drwxr-xr-x 4 root root 4096 Feb 24 20:36 build
lrwxrwxrwx 1 root root 21 Dec 27 17:06 source -> /usr/src/fglrx-13.251
那里不应该有一个 3.11 内核条目吗?如何刷新 dkms 以查看刚刚安装的新内核?或者这不是问题所在?
答案1
知道了! :-)
sudo gedit /usr/src/fglrx-13.251/kcl_acpi.c
删除文件中的最后三行:
((acpi_table_handler)handler)(hdr);
return KCL_ACPI_OK;
}
替换为:
#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,9,1)
((acpi_tbl_table_handler)handler)(hdr);
#else
((acpi_table_handler)handler)(hdr);
#endif
return KCL_ACPI_OK;
}
然后运行:
sudo dkms install -m fglrx -v 13.251 -k 3.11.0-17-generic
然后重启。对我来说已经成功了 - 现在可以使用内核 3.11 和 fglrx 了!
(我从这个页面得出了这一结论:https://gist.github.com/moldcraft/8116528)
答案2
无法评论;所以,这里有一个“答案”式的东西......
内核升级在 12.04 上停止了重新生成 fglrx 模块(超过 1 年)。重新启动(激活新内核)后,lightdm 将允许您登录,但随后您很快会收到与虚拟屏幕尺寸相关的错误,并被发送回登录屏幕。主显示器的分辨率非常低。辅助显示器显示黑色。
我的解决方案是清除 fglrx 并重新安装 fglrx deb 包。
- Ctrl+Alt+F1
- 登录。
dpkg -l | grep fglrx
sudo apt-get purge <packages output from previous command>
cd /path/to/generated/fglrx*.deb
sudo dpkg -i fglrx*.deb
这个“解决方案”要求您在每次安装新内核时重复此操作,这很糟糕。
@fig 每次有新内核时,您是否都需要重新编辑“kcl_acpi.c”?每次有新的 fglrx 时?
答案3
也救了我,我得到了错误,并且在 askubuntu.com 上只找到了误导性的答案
问题:
tilo@t-ubuntu:~$ fglrxinfo
X Error of failed request: BadRequest (invalid request code or no such operation)
Major opcode of failed request: 155 (ATIFGLEXTENSION)
Minor opcode of failed request: 66 ()
Serial number of failed request: 13
Current serial number in output stream: 13
使用你的描述让我12.04.4 带有 3.11 saucy摞回。
编辑完“kcl_acpi.c”文件的末尾后,我运行
sudo dkms install -m fglrx -v 13.251 -k 3.11.0-19-generic
输出作为参考
tilo@t-ubuntu:~$ sudo dkms install -m fglrx -v 13.251 -k 3.11.0-19-generic
Kernel preparation unnecessary for this kernel. Skipping...
Building module:
cleaning build area....
cd /var/lib/dkms/fglrx/13.251/build; sh make.sh --nohints --uname_r=3.11.0-19-generic --norootcheck.....
cleaning build area....
DKMS: build completed.
fglrx.ko:
Running module version sanity check.
- Original module
- No original module exists within this kernel
- Installation
- Installing to /lib/modules/3.11.0-19-generic/updates/dkms/
depmod.....
DKMS: install completed.
tilo@t-ubuntu:~$
现在 fglrxinfo
tilo@t-ubuntu:~$ fglrxinfo
display: :0 screen: 0
OpenGL vendor string: Advanced Micro Devices, Inc.
OpenGL renderer string: ATI Mobility Radeon HD 5800 Series
OpenGL version string: 4.3.12618 Compatibility Profile Context 13.251
顺便说一下,在“兼容性配置文件上下文 9.012”之前,但我也尝试从 ATI 网站重新安装。