我的 Ubuntu 16.04 遇到了一个大问题。
昨天我打开电脑,正在处理一些事情,突然出现一条消息“将安装一些重要更新”。我天真地选择了“是”选项。
然后问题就开始出现了。Mendeley 桌面无法启动,所以我从终端运行它,得到了这种错误:
Failed to create OpenGL context for format QSurfaceFormat
我也没有太在意,以为是程序本身的问题。
但今天我无法启动电脑。它通常从 BIOS 屏幕(它的名字是 Ultimate Force)开始,然后是 3 秒钟的灰屏,然后是快速的进程列表,大多数进程显示为绿色 [OK](因此有些显示为红色 [FAILED]),然后启动。
这次在该屏幕之后,出现了另一个简短的列表,其中前两行如下:
Stopping NVIDIA Persistence Daemon...
[ OK ] Stopped NVIDIA Persistence Daemon.
然后屏幕变黑。但我可以使用 Ctrl+Shift+F1 进入 tty1。
因此,我在类似这个的论坛中查找信息,并尝试了以下链接的解决方案: Ubuntu 16.04 nvidia 驱动程序不起作用 从此我遵循了接下来的代码行:
sudo apt-get purge nvidia-*
sudo apt-get install intel-microcode
sudo apt-get install intel-gpu-tools
重启
sudo apt-get install nvidia-yyy
其中 yyy 是 396、390、384 或 375 中的任一个。什么也没发生,仍然是同样的问题。
但是当 yyy 是 304(nvidia-current 版本似乎在 304 停止了)或 340 时,错误发生了变化,我之前提到的进程列表开始显示如下内容:
[ FAILED ] Failed to Start Snappy Daemon
A start job is running for ...
哪里……没有很好地显示它到底在做什么,但它有多种功能,当然包括 Snappy Daemon(我真的不知道它是什么)。它一直循环显示一些奇怪的数字代码,并且不让我进入任何 tty。所以我被迫手动重启电脑并按照以下说明操作: 我如何启动到 root shell? 从那里我可以卸载那些旧的 NVIDIA 驱动程序并重新安装较新的驱动程序(安装 384,即出现问题之前我使用的驱动程序),至少可以轻松访问 tty。
由于没有进展,我尝试了下一条指令:
sudo apt-get install nvidia*
它告诉我无法继续,因为“我持有破损的包裹”,但有些事情引起了我的注意:所有的 nvidia 驱动程序都被告知与某种叫做 的东西发生冲突xorg-driver-binary
,而较新的驱动程序与nvidia-smi
和发生冲突nvidia-persistenced
,从我的逻辑上讲,某处存在我最初遇到的特定问题。
然后我可能在绝望中做了一些非常愚蠢的事情。看到另外 2 个冲突,我在这里展示:
nvidia-libopencl1-384 : Conflicts : libopencl
nvidia-opencl-icd-384 : Conflicts : nvidia-opencl-icd
我认为手动安装这些组件是个好主意:
sudo apt-get install nvidia-libopencl1-384
sudo apt-get install nvidia-opencl-icd-384
提醒我注意它们之前没有安装过。所以我照做了,重新启动,错误发生了变化。这次在快速进程列表屏幕之后,出现了另一个简短的列表,其中最后一行和最后一行如下:
Starting Thermal Service Daemon...
...
[ OK ] Started Update UTMP about System Runlevel Changes.
所以我跟随16.04——系统在启动时挂起,安装 xserver-xorg-video-intel,没有结果。
输出的重要数据inxi -b
大致如下:
- 内核:4.13.0-39-generic x86_64
- 机器型号 SABERTOOTH 990 FX R2.0
- 显卡:NVIDIA GM204 (GeForce GTX 970)
- 图形显示服务器:X.org 1.18.4
- 图形驱动程序:失败:nouveau
因此我做了以下事情:
sudo apt-get install *nouveau*
错误仍然存在,不同之处在于inxi -b
没有inxi -Gx
再提示新驱动程序失败。
所以,经过这一切,我认为某个地方存在主要问题(Nouveau 作为驱动程序而不是 nvidia 安装的驱动程序),但我不知道如何改变它。
此外,我无法像其他帖子建议的那样关闭安全启动模式,因为华硕 UEFI BIOS 没有该选项(只有“Windows”或“其他系统”)。我也无法发布某些命令的实际输出,因为我不知道如何将它们从受损的计算机复制到我正在输入此内容的计算机。
我现在放弃了,但我很担心,因为这台电脑里有重要文件,而且我不想全新安装 16.04,因为我读到那不是解决问题的可靠方法。
答案1
您是否cuda toolkit
安装了软件包?彻底清除它以及任何 nvidia 驱动程序并从中安装https://launchpad.net/~graphics-drivers/+archive/ubuntu/ppa版本390.59
,它是长期支持的带有预编译cuda的驱动程序,因此不需要安装额外的cuda工具包......并且您展示了一些与包含在nVidia 390.59
驱动程序之类的文件中的冲突......如果这不起作用,请执行反向操作并切换到nVidia 396.24
+额外安装cuda toolkit
,然后可能不会有冲突。如果您有Intel + nVidia并且仍然安装了nVidia,那么您有例如nvidia prime
包尝试进入root并在终端中输入mount -o rw,remount /
(和可选mount --all
)以挂载分区(或/etc/fstab中提到的所有分区)在读/写模式下然后prime-select intel
重新启动。如果您可以在没有root模式的情况下进入ubuntu,那么只需输入sudo prime-select intel
并重新启动。之后,您就可以在Intel下安全地使用ubuntu,并且可以从此时修复nVidia。Prime选择有:
prime-select intel
prime-select nvidia
prime-select query
使用。