Ubuntu 17.10 和 Nvidia 驱动程序

Ubuntu 17.10 和 Nvidia 驱动程序

我买了一台新机器,里面没有任何操作系统。我做的第一件事就是安装 Ubuntu 17.10。

以下是一些规格;

i7 7700HQ

GTX 1060 6 GB

三星 EVO 960 PRO m2 + 2 TB 希捷硬盘

安装过程非常顺利。安装完成后,重启按钮挂了好一会儿才变成黑屏并出现一些错误;

ACPI Error: [_UPC] Namespace lookup failure, AE_ALREADY_EXISTS(2170531/dswload-378)
0.031925 ACPI Exception: AE_ALREADY_EXISTS, During name lookup/catalog (2070531/psobject-252)
0.031958 ACPI Exception: AE_ALREADY_EXISTS, (SSDT:xh_rvp11) while loading...
0.033744 ACPI Error: 1 table load failures, 12 successful (20170531/tbxflo....)

[6.745929] Couldn'tget size: 0x8000000000e
[6.745943] MODSIGN: Couldn't get UEFI db list
[8.908673] sd 0:0:0:0: [sdb]] No Caching mode page found
[8.908674] sf 0:0:0:0: [sdb] Assuming drive cache: write through
[8.922136] print_req_error: critical medium error, dev sr0, sector 16368
[8.928612] print_req_error: critical medium error, dev sr0, sector 16368
[8.928612] Buffer I/O error on dev sr0, logical block 2046, async page read
[8.950494] print_req_error: critical medium error, dev sr0, sector 16360
[8.956755] print_req_error: critical medium error, dev sr0, sector 16360
[8.956756] Buffer I/O error on dev sr0, logical block 2045, async page read
[8.969426] print_req_error: critical medium error, dev sr0, sector 16344
[8.975715] print_req_error: critical medium error, dev sr0, sector 16344
[8.975716] Buffer I/O error on dev sr0, logical block 2043, async page read
[8.995095] print_req_error: critical medium error, dev sr0, sector 16336
[9.001279] print_req_error: critical medium error, dev sr0, sector 16336
[9.001280] Buffer I/O error on dev sr0, logical block 2042, async page read
[10.812098] nouveau 0000:01:00.0: secboot: error during falcon reset: -110
[10.812118] nouveau 0000:01:00.0: gr: init failed, -110

当然,进行了硬重置,做了一些进一步的挖掘,并得到了一些额外的帮助,然后关联,我能够启动并登录到我的 Ubuntu 17.10。

然而当我选择 Nvidia 驱动而不是 时X.org X Server,我甚至无法进入登录屏幕。只有一个黑屏,每隔几秒钟就会闪烁一些文本;

[0.000000] ACPI Error: [_UPC] Namespace lookup failure, AE_ALREADY_EXISTS(20170831/dswload-378/dswload-378)
[0.000000] ACPI Exception: AE_ALREADY_EXISTS, During name lookup/catalog (20170831//psobject-252)
[0.000000] ACPI Exception: AE_ALREADY_EXISTS, (SSDT:xh_rvp11) while loading table (20170831/tbxfload-228)
[0.000000] ACPI Error: 1 table load failures, 12 successful (20170831/tbxfload-246)
/dev/nvme0n1p5: clean, 199274/15269888 files, 3415948/61047808 blocks

[ OK ] Started Hostname Service.
[ OK ] Started Network Name Resolution.
[ OK ] Reached target Host and Network Name Lookups.
[ OK ] Created slice User Slice of gdm.
       Starting User Manager for UID 121...
[ OK ] Started Session c1 of user gdm.
[ OK ] Started User Manager for UID 121.
       Starting WPA supplicant...
[ OK ] Started WPA supplicant.
       Starting Manage, Install and Generate Color Profiles...
[ OK ] Started Manage, Install and Generate Color Profiles.

没有更多文字,屏幕变黑,并闪烁一秒钟,显示那些文字。我等了 10 - 15 分钟,想看看是否有什么变化,但没有运气。

我不得不进入 TTY 并清除 nvidia 的东西才能让它重新工作。我试过所有我能想到的可用驱动程序,但都没有用。我甚至尝试过bumblebee直接从 Nvidia 的驱动程序页面下载 shell 脚本。都没有用。

我甚至安装了ukuu内核并将其更新到最新版本,希望最新的内核能够修复这个问题。但没有成功。

通常我会选择 Intel 而不是 Nvidia,但 1 x mHDMI 和 HDMI 似乎专用于 Nvidia。只有 1 个 mHDMI 用于 Intel(我有双启动,因此在 Linux 上没有 Nvidia 也没问题),我无法将分辨率更改为 21:9 超宽 4K 屏幕,1080p 分辨率是不可想象的,每天在上面工作 8 小时。

当然,我也考虑过增加分辨率,并使用xrandr&进行调整cvt,但它们的效果也不太好。

我决定试试 16.04 LTS。下载并安装后,经过一些小麻烦,我终于让它运行起来了;

  • 高级模式,获取较低的内核版本。
  • 在 TTY 中运行$ ubuntu-drivers autoinstall
  • 重新启动计算机,计算机即可与 Nvidia 协同工作。

现在我希望 18.04 LTS 不会出现这个问题。我担心的是,它可能会有同样的问题。然而,我必须说,我有点担心它不会解决这个问题,所以我正在寻找解决这个问题的方法,我已经花了 3 天时间解决这个问题,因此回到了 AskUbuntu。

如果我没记错的话,我发现这里有 2 个问题,一个与磁盘有关,另一个与图形有关。如果能提供任何帮助,我将不胜感激。

PS. 我之前提到过双启动,Windows 10 运行完美。

仅供参考,安装 Windows 10 是必要之恶!

答案1

您使用的是哪个版本nVidia drivers?您是否访问过以下网站之一Launchpad PPAs

https://launchpad.net/~graphics-drivers/+archive/ubuntu/ppa

https://launchpad.net/~mamarley/+archive/ubuntu/staging

https://launchpad.net/~ricotz/+archive/ubuntu/red

通常,即使是这些 PPA 中发布的图形驱动程序也会缺少最新 Linux 内核所需的补丁……

我现在在运行内核 4.15.0 的 Xenial 16.04 上使用 nvidia-390 驱动程序版本 390.25,没有任何问题,只是因为我使用内核 4.15 和 4.16 所需的补丁重新编译了 nVidia 驱动程序。

这是我的 PPA 的链接,其中包含支持 Linux 内核 4.15 和 4.16 的 nvidia-390 版本 390.25,因为我确实为这些新的 Linux 内核应用了特定的补丁:

https://launchpad.net/~anton+/+archive/ubuntu/miscellaneous

[注意]:来自伪官方 PPA 专有 GPU 驱动程序,除了 Bionic 18.04 之外的版本仍然缺乏对 Linux 内核 4.15 的支持... 而且他们的 Debian 版本比我的高,这意味着如果你订阅两个 PPA,它们将作为更新安装,并终止系统的 nVidia 驱动程序。避免这种情况的一种方法是锁定这些软件包的更新:

这是一个用于阻止驱动程序更新的 bash 脚本nvidia-390

#!/bin/sh
#
# Add nvidia-390 package to update blacklist
# Run script as super user i.e. sudo ./block-upd-nvidia-390.sh
#

if [ $(id -u) != 0 ]; then
   echo "This script requires root permissions"
   sudo "$0"
   exit
fi
echo "nvidia-390 hold" | dpkg --set-selections
echo "nvidia-390-dev hold" | dpkg --set-selections
echo "libcuda1-390 hold" | dpkg --set-selections
echo "nvidia-opencl-icd-390 hold" | dpkg --set-selections

为了使其可执行:

$ chmod a+x block-upd-nvidia-390

然后只需运行(它会询问您的密码,因为它需要 sudo 权限):

$ ./block-upd-nvidia-390

要解除更新阻止,请使用以下 bash 脚本:

#!/bin/sh
#
# Remove nvidia-390 package from update blacklist
# Run script as super user i.e. sudo ./block-upd-nvidia-390.sh
#

    if [ $(id -u) != 0 ]; then
       echo "This script requires root permissions"
       sudo "$0"
       exit
    fi
    echo "nvidia-390 install" | dpkg --set-selections
    echo "nvidia-390-dev install" | dpkg --set-selections
    echo "libcuda1-390 install" | dpkg --set-selections
    echo "nvidia-opencl-icd-390 install" | dpkg --set-selections

安装最新的内核可能会让您遇到这种怪癖......

几天前,内核 4.15 发布整整一个月后,Ubuntu Launchpad PPA 中仍然没有可用的 nVidia 显卡驱动程序......

好的。现在我将提供在 Ubuntu 中更新 nVidia 图形驱动程序的方法。

每个 Linux 内核都通过 dkms 安装 nVidia 图形驱动程序。安装 nVidia 驱动程序时,它将安装在当前使用的 Linux 内核和最新(更新)的内核中。目前,Ubuntu 使用的是 Linux 内核 4.15。如果您在系统中安装的最新 Linux 内核中安装 nVidia 图形驱动程序,则它们将仅安装在此 Linux 内核中。Ubuntu 17.10 默认使用 Linux 内核 4.13。

在 Ubuntu 系统上,你可以安装较新的 Linux 内核,例如去年 2 月发布的 4.15。只需查看Canonical Kernel Team 的 PPA。您可以在任何 Ubuntu 支持的版本中安装 hwe kernel(现在为 4.13),或者 hwe edge(现在为 4.15)。

例如,要安装 Linux 内核 4.15,请在终端中使用以下命令行:

$ sudo apt install linux-headers-4.15.0-13 \
linux-headers-4.15.0-13-generic \
linux-image-4.15.0-13-generic \
linux-image-extra-4.15.0-13-generic \
linux-signed-generic-hwe-16.04-edge \
linux-signed-image-4.15.0-13-generic \
linux-signed-image-generic-hwe-16.04-edge

如果您安装了新的 Linux 内核,则必须更新所有 dkms 模块驱动程序,以使系统正常工作。这些驱动程序可能是 nVidia 图形驱动程序和 Broadcom 网络适配器。

首先nvidia安装版本然后删除并清除现有nvidia驱动程序:

$ dpkg -l | grep nvidia

假设您已经安装了 nvidia-384:

$ sudo apt purge nvidia-384*

然后从您选择的 PPA 安装新的驱动程序:

$ sudo apt install nvidia-390

在安装软件包时(或安装新内核时),您将看到有关 dkms 安装的消息,例如:

nvidia_390:
Running module version sanity check.
 - Original module
   - No original module exists within this kernel
 - Installation
   - Installing to /lib/modules/4.13.0-22-generic/updates/dkms/

nvidia_390_modeset.ko:
Running module version sanity check.
 - Original module
   - No original module exists within this kernel
 - Installation
   - Installing to /lib/modules/4.13.0-22-generic/updates/dkms/

nvidia_390_drm.ko:
Running module version sanity check.
 - Original module
   - No original module exists within this kernel
 - Installation
   - Installing to /lib/modules/4.13.0-22-generic/updates/dkms/

nvidia_390_uvm.ko:
Running module version sanity check.
 - Original module
   - No original module exists within this kernel
 - Installation
   - Installing to /lib/modules/4.13.0-22-generic/updates/dkms/

depmod....

DKMS: install completed.
Building initial module for 4.13.0-23-generic
Done.

nvidia_390:
Running module version sanity check.
 - Original module
   - No original module exists within this kernel
 - Installation
   - Installing to /lib/modules/4.13.0-23-generic/updates/dkms/

nvidia_390_modeset.ko:
Running module version sanity check.
 - Original module
   - No original module exists within this kernel
 - Installation
   - Installing to /lib/modules/4.13.0-23-generic/updates/dkms/

nvidia_390_drm.ko:
Running module version sanity check.
 - Original module
   - No original module exists within this kernel
 - Installation
   - Installing to /lib/modules/4.13.0-23-generic/updates/dkms/

nvidia_390_uvm.ko:
Running module version sanity check.
 - Original module
   - No original module exists within this kernel
 - Installation
   - Installing to /lib/modules/4.13.0-23-generic/updates/dkms/

depmod....

DKMS: install completed.

或者,如果驱动程序不支持目标 Linux 内核(未应用针对该内核的特定补丁),您将看到类似以下错误:

run-parts: executing /etc/kernel/postinst.d/apt-auto-removal 4.13.0-23-generic /boot/vmlinuz-4.13.0-23-generic
run-parts: executing /etc/kernel/postinst.d/dkms 4.13.0-23-generic /boot/vmlinuz-4.13.0-23-generic
ERROR (dkms apport): kernel package linux-headers-4.13.0-23-generic is not supported
Error! Bad return status for module build on kernel: 4.13.0-23-generic (x86_64)
Consult /var/lib/dkms/nvidia-390/390.25/build/make.log for more information.

那么你安装成功了吗Artful 17.10

如果您认为这个答案回答了您的问题并且解决了您的问题请选择左侧的 V。

答案2

奇怪的是,我在 17.10 中遇到了相反的问题:nVidia 390.12 可以工作,但是英特尔图形微码未列在可供选择的附加驱动程序列表中,但已安装:

sudo dmesg | grep microcode 
[    0.000000] microcode: microcode updated early to revision 0x22, date = 2017-01-27
[    0.943427] microcode: sig=0x306c3, pf=0x20, revision=0x22
[    0.943551] microcode: Microcode Update Driver: v2.2.

所以我无法通过 nVidia-prime 切换到英特尔......关于 ukuu 内核,4.15.11 是最新版本,在我的笔记本电脑的 Blender 中可以找到所有 Cuda 循环计算设备(nVidia 和 cpu),而在较新的 4.15.12 到 4.16 版本中找不到它们,所以这些较新的内核可能有问题。

相关内容