![如果不重新安装显卡驱动程序,则无法在启动期间登录](https://linux22.com/image/1124736/%E5%A6%82%E6%9E%9C%E4%B8%8D%E9%87%8D%E6%96%B0%E5%AE%89%E8%A3%85%E6%98%BE%E5%8D%A1%E9%A9%B1%E5%8A%A8%E7%A8%8B%E5%BA%8F%EF%BC%8C%E5%88%99%E6%97%A0%E6%B3%95%E5%9C%A8%E5%90%AF%E5%8A%A8%E6%9C%9F%E9%97%B4%E7%99%BB%E5%BD%95.png)
我的系统经常出现一个问题,即某些软件包更新后我无法登录。下面列出了最近安装的软件包/var/log/dpkg.log
,重新启动后我无法使用 GUI 登录。
2015-02-25 10:36:39 install linux-image-3.13.0-46-generic:amd64 <none> 3.13.0-46.75
2015-02-25 10:36:41 install linux-headers-3.13.0-46:all <none> 3.13.0-46.75
2015-02-25 10:36:44 install linux-headers-3.13.0-46-generic:amd64 <none> 3.13.0-46.75
2015-02-25 10:36:45 install linux-image-extra-3.13.0-46-generic:amd64 <none> 3.13.0-46.75
2015-02-25 10:36:50 install linux-signed-image-3.13.0-46-generic:amd64 <none> 3.13.0-46.75
2 月 18 日更新不同软件包时也发生过这种情况。此日志来自 Synaptic。
Commit Log for Wed Feb 18 00:37:15 2015
Upgraded the following packages:
apport (2.14.1-0ubuntu3.6) to 2.14.1-0ubuntu3.7
apport-gtk (2.14.1-0ubuntu3.6) to 2.14.1-0ubuntu3.7
compiz (1:0.9.11.3+14.04.20141104-0ubuntu1+ppa2) to 1:0.9.11.3+14.04.20150122-0ubuntu1
compiz-core (1:0.9.11.3+14.04.20141104-0ubuntu1+ppa2) to 1:0.9.11.3+14.04.20150122-0ubuntu1
compiz-gnome (1:0.9.11.3+14.04.20141104-0ubuntu1+ppa2) to 1:0.9.11.3+14.04.20150122-0ubuntu1
compiz-plugins-default (1:0.9.11.3+14.04.20141104-0ubuntu1+ppa2) to 1:0.9.11.3+14.04.20150122-0ubuntu1
gir1.2-gudev-1.0 (1:204-5ubuntu20.9) to 1:204-5ubuntu20.10
libcompizconfig0 (1:0.9.11.3+14.04.20141104-0ubuntu1+ppa2) to 1:0.9.11.3+14.04.20150122-0ubuntu1
libdecoration0 (1:0.9.11.3+14.04.20141104-0ubuntu1+ppa2) to 1:0.9.11.3+14.04.20150122-0ubuntu1
libfreetype6 (2.5.2-1ubuntu2.2) to 2.5.2-1ubuntu2.3
libgudev-1.0-0 (1:204-5ubuntu20.9) to 1:204-5ubuntu20.10
liblightdm-gobject-1-0 (1.10.3-0ubuntu2) to 1.10.4-0ubuntu2
libpam-systemd (204-5ubuntu20.9) to 204-5ubuntu20.10
libsystemd-daemon0 (204-5ubuntu20.9) to 204-5ubuntu20.10
libsystemd-journal0 (204-5ubuntu20.9) to 204-5ubuntu20.10
libsystemd-login0 (204-5ubuntu20.9) to 204-5ubuntu20.10
libudev1 (204-5ubuntu20.9) to 204-5ubuntu20.10
libudev1:i386 (204-5ubuntu20.9) to 204-5ubuntu20.10
lightdm (1.10.3-0ubuntu2) to 1.10.4-0ubuntu2
python3-apport (2.14.1-0ubuntu3.6) to 2.14.1-0ubuntu3.7
python3-problem-report (2.14.1-0ubuntu3.6) to 2.14.1-0ubuntu3.7
systemd-services (204-5ubuntu20.9) to 204-5ubuntu20.10
udev (204-5ubuntu20.9) to 204-5ubuntu20.10
x11-common (1:7.7+1ubuntu8) to 1:7.7+1ubuntu8.1
xorg (1:7.7+1ubuntu8) to 1:7.7+1ubuntu8.1
xserver-xorg (1:7.7+1ubuntu8) to 1:7.7+1ubuntu8.1
xserver-xorg-input-all (1:7.7+1ubuntu8) to 1:7.7+1ubuntu8.1
xserver-xorg-video-all (1:7.7+1ubuntu8) to 1:7.7+1ubuntu8.1
无法登录的主要问题可以在 5 分钟内轻松解决,使用Ctrl++进入 TTY,然后使用以下Alt命令F1重新安装图形驱动程序:
sudo service lightdm stop
cd ~/Downloads
sudo ./NVIDIA-Linux-x86_64-346.35.run
sudo reboot
我的问题是,有谁知道为什么会发生这种情况以及如何阻止这种情况再次发生。我最好的理论是,更新内核或 xorg 会改变一些会破坏我的图形驱动程序的东西。
我正在使用从 nvidia.com 下载的 Nvidia 346.35 64 位专有驱动程序,我的显卡是 GeForce GTX 970。
该问题似乎是 DKMS 的问题,但是,当我安装 Nvidia 驱动程序时,如果我选择该yes
选项,Would you like to register the kernel module sources with DKMS? This will allow DKMS to automaticalty build a new module, if you install a different kernel later.
则会出现以下错误。
ERROR: Unable to load the kernal module!
[25961, 788963] systemd-udevd[1735]: Failed to apply ACL on /dev/dri/card0: No such file or directory
答案1
是的,nvidia 驱动程序使用内核模块。当安装 nvidia 驱动程序、VirtualBox、ndiswrapper 和一两个其他软件包时,它们会挂接到名为 dkms 的系统中。DKMS 将自动为安装的任何新内核构建这些模块的副本(在软件包管理器安装 linux-whatever-image 和 linux-whatever-headers 后,它会运行 dkms 来逐一重建这些模块)。
因此,Ubuntu 14.04 的常规软件包中只有 nvidia-331 驱动程序。但是,如果您希望 dkms 发挥作用并拥有这些较新的驱动程序,解决方案是添加新的软件源:ppa:xorg-edgers/ppa
将 xorg-edgers 添加为软件源后,您应该会发现列出了 nvidia-346 软件包,而且确实应该列出较新的软件包。此 repo 旨在安装比您的发行版原本拥有的更新的视频驱动程序,包括稍新的稳定驱动程序和“前沿”开发版本。因此,如果最新的 nvidia 软件包没有在 nvidia 发布当天发布,我不会感到惊讶。
如果您不想这样做,可以选择 B 计划:dkms 并不需要您有一个软件包才能工作。根据手册页,您似乎可以将任意内核模块源代码树添加到 dkms 中,它会处理其余部分。nvidia .run 文件将内核模块构建目录放在某个地方,将其拉入 dkms,它应该会自行处理。