![安装专有 Nvidia 驱动程序后 Unity 未出现(GPU 已脱离总线/ACPI 故障)](https://linux22.com/image/1079384/%E5%AE%89%E8%A3%85%E4%B8%93%E6%9C%89%20Nvidia%20%E9%A9%B1%E5%8A%A8%E7%A8%8B%E5%BA%8F%E5%90%8E%20Unity%20%E6%9C%AA%E5%87%BA%E7%8E%B0%EF%BC%88GPU%20%E5%B7%B2%E8%84%B1%E7%A6%BB%E6%80%BB%E7%BA%BF%2FACPI%20%E6%95%85%E9%9A%9C%EF%BC%89.png)
在开始之前我应该提到,尽管标题与以下问题类似,但不是同一个问题,而且我已经测试过这个问题的答案,但没有解决方案:
(我希望事情真的这么简单)。
问题大约在 2 周前开始出现(使用 12.10 64 位)。升级后,Unity 无法加载。它只是冻结在黑屏上,没有鼠标移动,什么都没有。我进入恢复模式查看发生了什么。起初我删除了 Nvidia 驱动程序,系统正确启动。然后我安装了 Nvidia 驱动程序(使用nvidia-current
默认自带的,没有安装额外的 PPA),问题出现了。然后我尝试了 X-Swat 的 PPA 和 Xorg Edgers 的 PPA,这两个也因同样的问题而失败了。
我继续检查/var/log
文件,特别是 Xorg 和 syslog 文件,看看发生了什么。尝试了类似方法后,sudo modprobe nvidia
我发现模块未正确创建,因此我没有命令nvidia-xconfig
。因此,我下载了所有需要的头文件(通用和特定版本)并重新安装了 nvidia 驱动程序。这次模块已安装,我可以访问所有 Nvidia 命令,例如nvidia-xconfig
创建 xorg.conf 文件。
但同样的问题仍然存在。它无法加载 Unity,在显示黑屏桌面之前会卡住。
在检查了更多内容之后我的 pastebin 文件显示ACPI 和 X 服务器之间存在一些问题。
在第 55 行我们可以看到以下内容:
48.651] (WW) Open ACPI failed (/var/run/acpid.socket) (No such file or directory)
然后从第 178 行开始我们可以看到以下内容:
[ 49.993] (II) NVIDIA(0): ACPI: failed to connect to the ACPI event daemon; the daemon
[ 49.993] (II) NVIDIA(0): may not be running or the "AcpidSocketPath" X
[ 49.993] (II) NVIDIA(0): configuration option may not be set correctly. When the
[ 49.993] (II) NVIDIA(0): ACPI event daemon is available, the NVIDIA X driver will
[ 49.993] (II) NVIDIA(0): try to use it to receive ACPI event notifications. For
[ 49.993] (II) NVIDIA(0): details, please see the "ConnectToAcpid" and
[ 49.993] (II) NVIDIA(0): "AcpidSocketPath" X configuration options in Appendix B: X
[ 49.993] (II) NVIDIA(0): Config Options in the README.
现在这可能是问题所在(这是我目前所知的)。
看起来,这是一个老虫子重现这种情况非常奇怪,在此之前,PC 运行良好。这是一块 Intel DZ68DB 主板,配有 Nvidia 560 ti 显卡。
其他发行版也遇到过同样的问题:
我还检查了是否已经acpid
安装,结果是,是的。它运行正常。据我了解,这是一个时间问题,X 服务器和 acpid 尝试异步加载,以便 X 加载更快,但由于它在 acpid 之前加载,因此当 Nvidia 卡想要使用 ACPI 时会出现此错误。因此重置 X 会有所帮助,因为 acpid 会在第二个 X 服务器之前加载,但由于系统冻结,这不可行。
我在检查时发现的最后一个错误是sudo cat /var/log/syslog | grep NV
:
Jan 3 22:39:23 cyrex kernel: [ 3.789322] NVRM: GPU at 0000:01:00.0 has fallen off the bus.
所以现在我有一个“GPU 已经没落了”问题。
我想知道那辆巴士行驶的速度有多快?
我应该补充一点,我已经测试了 12.10 附带的所有版本(nvidia-current、updates、experimental)以及 X-Swat PPA 和 Xorg Edges PPA 附带的版本。所有版本都存在同样的问题。
更新 1 - 测试 1
按以下方式做了测试:
将我正在使用的 SSD 连接到另一台也装有 Nvidia 卡(这次是 9500 GT)的计算机。我还将另一台计算机的 HDD 连接到我的计算机。基本上就是切换硬盘。
另一台计算机上的 Ubuntu 运行正常,但是当我将之前在另一台计算机上运行的 HDD 连接到我的计算机时,出现了与此问题中提到的相同的错误。
在这次测试中,我唯一改变的就是我使用的 Ubuntu 电脑,它运行正常。但如果我在我的电脑上使用另一台电脑上的另一个 Ubuntu,就会出现错误,表明硬件可能是问题所在。至少我需要检查 BIOS 设置。
更新 2 - 测试 2
移除了显卡,并将其与另一台计算机进行了交换。它仍然可以工作。所以我在另一台计算机上安装了 Ubuntu 无法工作的 SSD,以及无法工作的相同 560 TI,但即便如此,它仍然可以工作。
剩下的就是主板了,它是英特尔 DZ68DB,固件已经升级。我觉得很奇怪,两周前它还能用,现在却不能用了,但这表明问题可能是 BIOS 配置或主板不兼容。我会继续测试。
解决方案 1(对我不起作用)- 一些用户报告说,采取以下措施对他们有帮助:
编辑/etc/rc.local
文件:sudo nano /etc/rc.local
并在之前添加以下行出口 0陈述:
/usr/bin/nvidia-smi -pm 1
保存并重启。这会将您的显卡设置为持久模式。要查看它是否有效,请在重启后输入:
/usr/bin/nvidia-smi -q | grep -i Persistence
如果你看到:
Persistence Mode : Enabled
那么你知道它是已启用
解决方案 2(对我不起作用)- 一些用户报告说,采取以下措施对他们有帮助:
编辑你的 grub 菜单:
sudo nano /etc/default/grub
并在以下行中写道:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
添加下列一个或所有内核选项:
acpi=noirq
thermal.off=1
例如,如果将两者添加,它应该看起来像这样:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash acpi=noirq thermal.off=1"
现在保存并输入update-grub
。然后重新启动。
对于遇到类似问题的人,如果他们已经做了所有事情,我建议他们也尝试一下我进行的测试。这样你就知道是 Ubuntu、显卡还是其他硬件出了问题。
答案1
经过近 3 天的奋战,我终于(如果你读完整个问题的话)把主板以外的所有东西都扔掉了。所以我把主板拆了下来,做了一些清洁工作,然后又装回去了。为了消除任何疑惑,我说的清洁,字面意思是,把主板拆下来,移除任何与其相连的东西,或者它会产生任何类型的电流的东西(比如 CR2032 电池),然后把主板放在水压很大的软管下。用大量水清洗后,我把它晾干了至少 2 天,然后把它放回原位。
一切都运行正常,我可以高兴地说它可以在 32 位和 64 位版本的 12.04、12.10 甚至 13.04 上运行(当我遇到问题时我必须进行测试,因为我当时认为这是 Ubuntu 的问题)。
因此,如果您碰巧已完成问题中的所有操作但仍然遇到问题,则最可能的原因可能是 BIOS 中的选项(由于存在的 BIOS 设置数量太多,我无法在此介绍)或您的硬件需要维护。
希望这对某些人有所帮助,因为我花了太多精力才弄清楚,所以它可能会节省别人的时间。