安装了 Ubuntu 22.04 后经常出现死机和崩溃的情况(使用 NVIDIA 显卡时)

安装了 Ubuntu 22.04 后经常出现死机和崩溃的情况(使用 NVIDIA 显卡时)

几个月来,我一直在使用一台旧的 Windows 台式机(华硕主板、i5 CPU、120 GB SSD,大约 8 年)来运行我的 Home Assistant 服务器,没有任何问题。我决定切换到 Ubuntu,这样我就可以运行 Ad Guard DHCP 服务器。

我首先在 Windows 上安装了 Ubuntu 22.04。使用 Ubuntu 最多 5 分钟后,我就会不断遇到冻结问题。这种情况经常发生在我打开文件夹时,有时甚至在我未触摸鼠标时也会发生。屏幕会一直亮着,有时会显示扭曲的错误消息或根本没有错误消息。如果有错误消息,它会显示“抱歉,Ubuntu 遇到内部错误。如果您发现进一步的问题,请尝试重新启动计算机。”屏幕会完全停止变化,所有输入都没有响应。

我得出结论,这一定是我的 Windows 双启动设置的问题,特别是因为我只为 Ubuntu 分配了 25GB。所以我重新安装了 Ubuntu(相同版本),但这次我删除了 Windows 分区。我仍然遇到同样的冻结问题。

我尝试运行 sudo apt update 和 sudo apt upgrade。/var/crash 完全是空的。我尝试运行 memtest86(经过多次尝试后未发现任何错误)。我使用 Gnome 磁盘实用程序 SMART 自检来检查我的 SSD 的健康状况。结果是 SSD 没问题。我现在想知道这可能是主板的问题吗?

对我来说奇怪的是 Windows 运行正常,但 Ubuntu 运行不到 5 分钟就会崩溃。任何建议都将不胜感激。谢谢。

答案1

事实证明,问题出在我 NVIDIA 显卡的开源 GPU 驱动程序上。切换到专有驱动程序后,问题就解决了。

答案2

在 Ubuntu 22.04 上对我有用的解决方案:

在登录屏幕右下角按下小齿轮图标,然后选择 Xorg 上的 Ubuntu 而不是仅仅 Ubuntu(我认为默认使用 Wayland 窗口管理器)。

有用链接: https://itsfoss.com/switch-xorg-wayland/

我之所以想到这个解决方案是因为我确实使用了辅助 SSD 来存储游戏,但即使在卸载它之后,冻结仍然会发生,所以我排除了 SSD 是问题根源。后来在网上看到很多用户抱怨 Wayland 问题,我决定试试 xorg,到目前为止一切顺利 :) 另外我想说的是,我的 Ubuntu 系统现在响应速度更快了。

它困扰了我很长一段时间,我决定在这里发布它,希望它也能帮助其他人。

答案3

  • 2023 年 1 月 25 日更新:Ubuntu 在运行自动更新时不断撤消我的手动驱动程序安装(请参阅下面选项 2 末尾的注释),所以我的最终配置是这样的:选择 Ubuntu 提供的最新版本的非开放内核 NVIDIA 驱动程序版本,它可以正常工作,使外接显示器工作,并且仍然允许您使用功能键调整笔记本电脑屏幕亮度。对我来说,这就是版本nvidia-driver-515(专有)。您可以在下图中看到我的“软件和更新”GUI“使用来自 nvidia-driver-515 (专有) 的 NVIDIA 驱动程序元包”在此处输入图片描述

  • 2022 年 12 月 22 日更新:我发现下面的选项 2 是最好的(我认为……到目前为止)。

  • 提醒自己:下次先尝试未来的事情,而不是做以下所有事情:

    也可以看看:

    1. 你能逆转‘ubuntu-drivers autoinstall’吗?
    2. https://www.linuxcapable.com/install-nvidia-drivers-on-ubuntu-linux/- 这看起来真的很有用!
    3. HDMI 端口无法识别(NVidia Geforce RTX 3060、Xubuntu 22.04、戴尔笔记本电脑)
    # Do NOT run this now if you've already got your drivers working!
    # This is just a note to myself to try this *first* next time is all,
    # and then only try the manual steps below if this doesn't work.
    # - Supposedly this will fix the NVIDIA issue I first experienced on 
    # Ubuntu 22.04 where my external monitor would not work when I 
    # plugged it in.
    sudo ubuntu-drivers autoinstall
    reboot
    

如何安装正确的 NVIDIA 显卡驱动程序以防止死机

我是尝试遵循 OP 接受的答案,但不知道该用哪个“专有”来修复它。我有8专有驱动程序选项可供选择。从“软件和更新”-->“附加驱动程序”选项卡中,下面是我现在正在使用的驱动程序(下面列表中底部的“X.Org X 服务器”--有很多冻结的情况):

在此处输入图片描述

我打算选择列表中的顶部选项来查看是否有效,然后再按照列表向下移动。

我还可以直接访问 NVIDIA 的网站,看看他们是否有我可以直接从他们那里下载的驱动程序。

我的计算机文学说我的显卡是“NVIDIA RTX A2000 4GB GDDR6”。这似乎与lspci显示的内容一致,这很好。注意lspci说我有NVIDIA Corporation GA107GLM [RTX A2000 Mobile] (rev a1)

$ lspci | grep -i nvidia
01:00.0 VGA compatible controller: NVIDIA Corporation GA107GLM [RTX A2000 Mobile] (rev a1)
01:00.1 Audio device: NVIDIA Corporation Device 2291 (rev a1)

首先(需要与 NVIDIA 提供的专有图形驱动程序兼容,可能无论您在下面选择哪个选项):在 BIOS/UEFI 中启用“独立显卡”

按照我的回答中的说明进行操作:在 BIOS/UEFI 中启用“独立显卡”。我在此处和下文中引用的 NVIDIA 文档也指出,需要禁用“混合”/“集成”显卡,这意味着您必须选择“独立显卡”选项。

可能需要将设置从“混合”图形更改为“独立”图形,因为您的计算机制造商可能在出厂时就设置了“混合图形”选项,因为混合图形更节能。

选项 1:使用上图列表中的第一个驱动程序

在开始此选项之前,请首先在 BIOS/UEFI 中启用“独立显卡”,如上所述,以便遵循 NVIDIA 的指导并与其驱动程序兼容。

因此,在“软件和更新”-->“附加驱动程序”列表中选择第一个驱动程序后,顶部的小广告现在显示为:

该设备正在使用推荐的驱动程序。

...这很好,而不是:

该设备正在使用备用驱动程序。

以下是新的选择和文本:

在此处输入图片描述

因此,“推荐的驱动程序”似乎是个不错的选择。:)现在我们来看看这个驱动程序的效果如何。

4 小时后更新:不行!糟糕的选择!2 个重要提示:

  1. 插入外接显示器并在您更改更新图形驱动程序时随时进行测试!有些驱动程序根本不支持或无法与外部驱动程序配合使用!但是,如果您不测试的话,您一开始不会注意到。
  2. 更改图形驱动程序后立即重新启动,即使没有提示!重新启动可确保您实际上正在测试新安装的驱动程序而不是之前运行的驱动程序。

因此,在我更改为上述驱动程序后,它似乎工作正常约 15 分钟(因为它实际上仍在运行以前的驱动程序),然后它随机将此图像仅吐到我的主显示器上,然后冻结(注意:抱歉图像质量太差;我正在上传高质量的图像,但几天后这个网站仍在对其进行可怕的压缩):

在此处输入图片描述

当我重新启动时,在启动屏幕出现之前,它还打印了这些错误消息。“ACPI BIOS 错误”已经存在,但最后几行,从显示“[nvidia_drm]”的行开始,都是新的!:

在此处输入图片描述

而且,这个新驱动程序根本无法与外接显示器配合使用!外接显示器一片空白。

因此,我恢复了之前使用的“X.Org X 服务器”驱动程序(有时会冻结),并且重启后,它又恢复了,我的外接显示器又能正常工作了。现在让我们继续选项 2。

(推荐)选项 2:直接从 NVIDIA 下载并安装驱动程序

在开始此选项之前,请首先在 BIOS/UEFI 中启用“独立显卡”,如上所述,以便遵循 NVIDIA 的指导并与其驱动程序兼容。

(以下是NVIDIA“高级驱动程序搜索”页面,以防您需要快速尝试安装多个驱动程序以查看哪一个不会破坏您的屏幕亮度功能键。)

如果上述选项仍然有很多冻结或不起作用(例如:使用外接显示器,正如我在这里看到的),那么您应该直接从制造商处下载驱动程序,网址为:https://www.nvidia.com/Download/index.aspx?lang=en-us#

lspci请记住,您可以从via的输出中找到您的 NVIDIA 显卡版本lspci | grep -i nvidia,正如我上面所示。

为了找到此卡的驱动程序,我转到上面的链接并选择了这些选项。我突出显示了“产品”行,其中显示“NVIDIA RTX A000 笔记本电脑 GPU”,这似乎是我的卡:

在此处输入图片描述

一旦我点击“搜索”按钮,它就会带我进入此页面:https://www.nvidia.com/Download/driverResults.aspx/196723/en-us/

在此处输入图片描述

以下是此驱动程序的信息。请注意它有多新(从 2022 年 11 月 28 日起,今天是 2022 年 12 月 20 日):

Linux X64 (AMD64/EM64T) 显示驱动程序

版本:525.60.11
发布日期:2022.11.28
操作系统:Linux 64 位
语言:英语(美国)
文件大小:394.72 MB

首先,我检查我的卡是否受支持。在“支持的产品”选项卡下,我在浏览器中使用Ctrl+进行搜索,发现它在列表中。FNVIDIA RTX A2000 Laptop GPU

“附加信息”包含来自 NVIDIA 的宝贵信息和安装帮助:

请注意,许多 Linux 发行版都以发行版的原生包管理格式提供自己的 NVIDIA Linux 图形驱动程序包。这可能与发行版框架的其余部分更好地交互,您可能希望使用此包而不是 NVIDIA 的官方包。

另请注意,SuSE 用户应阅读 SuSE NVIDIA 安装程序如何在下载驱动程序之前。

安装说明:下载驱动程序后,转到包含驱动程序包的目录,以 root 身份运行安装驱动程序,sh ./NVIDIA-Linux-x86_64-525.60.11.run

安装的最后几个步骤之一将要求更新 X 配置文件。您可以接受该要求,手动编辑 X 配置文件以便使用 NVIDIA X 驱动程序,或者运行nvidia-xconfig

请注意,受支持的 GPU 产品列表用于指示特定驱动程序版本支持哪些 GPU。某些采用受支持的 GPU 的设计可能与 NVIDIA Linux 驱动程序不兼容:特别是,如果无法禁用硬件中的集成显卡,则带有可切换(混合)或 Optimus 显卡的笔记本电脑和一体式台式机设计将无法工作。硬件设计因制造商而异,因此请咨询系统制造商以确定特定系统是否兼容。

查看自述以获得更详细的说明。

欲了解更多信息,请访问我们的论坛,https://forums.developer.nvidia.com/c/gpu-unix-graphics/linux/148

如果需要的话,请参阅上面的自述文件或论坛。

然后,我在“发布亮点”选项卡中搜索“bug”一词,看看这个新驱动程序是否有任何相关的错误修复。果然,确实有!以下是其中一些看起来特别重要的错误:

  • 修复了导致 Dynamic Boost 无法在某些基于 AmpereGPU 的笔记本电脑上运行的错误。

  • 修复了在 GNOME 中移动窗口时导致卡顿的错误。

  • 修复了在启用了 NVreg_PreserveVideoMemoryAllocations 的情况下运行 GNOME 3 作为 Wayland 合成器的系统上导致挂起失败的错误。

  • 修复了 Vulkan 驱动程序中的一个错误,该错误可能导致几何和曲面细分控制着色器损坏。

ETC。

无论如何,这个制造商提供的驱动程序看起来正确且有用,所以让我们尝试一下!

点击“下载”-->“同意并下载”。文件非常大,有 414 MB。

安装驱动程序:

如需任何 NVIDIA 安装帮助,请参考此处的自述文件:http://us.download.nvidia.com/XFree86/Linux-x86_64/525.60.11/README/installdriver.html

  1. 首先,我们必须禁用 Nouveau 开源逆向工程 GPU 驱动程序才能继续。如果您需要背景信息,请在此处阅读更多相关信息。或者稍后进行其他调试:http://us.download.nvidia.com/XFree86/Linux-x86_64/525.60.11/README/commonproblems.html#nouveau

    要禁用 Nouveau NVIDIA 驱动程序,请按照以下说明操作:https://linuxconfig.org/how-to-disable-blacklist-nouveau-nvidia-driver-on-ubuntu-22-04-jammy-jellyfish-linux

    # create the file to disable Nouveau
    sudo bash -c "echo blacklist nouveau > /etc/modprobe.d/blacklist-nvidia-nouveau.conf"
    sudo bash -c "echo options nouveau modeset=0 >> /etc/modprobe.d/blacklist-nvidia-nouveau.conf"
    
    # Verify its contents
    cat /etc/modprobe.d/blacklist-nvidia-nouveau.conf
    # It should now contain this:
    #       blacklist nouveau
    #       options nouveau modeset=0
    
    # Update the kernel initramfs file system. 
    # Don't quote me on this, but I *think* this is a RAM-loaded file system
    # which helps the system boot.
    sudo update-initramfs -u
    
    # reboot
    reboot
    
  2. 如果需要,启用 grub 启动菜单,作为让你使用以下命令启动命令行的工具出去首先加载图形驱动程序。

    看:如何在启动时进入 GRUB 菜单?。 简而言之:

    # edit the grub file
    sudo gedit /etc/default/grub
    

    通过在该行开头GRUB_TIMEOUT_STYLE=hidden添加 来注释掉。然后更改为,使其延迟 5 秒,然后自动加载操作系统。然后:#GRUB_TIMEOUT=0GRUB_TIMEOUT=5

    # apply the grub changes
    sudo update-grub
    
    # reboot to the grub menu
    reboot
    
  3. 现在你可以不是以图形方式登录,因为我们即将更新图形驱动程序。因此,在此处显示的 Grub 屏幕上,选择“Ubuntu 的高级选项”:

    在此处输入图片描述

    接下来,选择“恢复模式”选项,如下所示:

    在此处输入图片描述

    它将开始在屏幕上打印一堆启动文本,如果您的分区是 LUKS 加密的,它会要求您输入密码:

    开始:安装根文件系统...开始:运行/scripts/local-top...请解锁磁盘 nvme0n1p5_crypt:_

    如果适用,请输入您的加密密码。

    在“恢复菜单”屏幕上,选择“root”选项以“降至 root shell 提示”:

    在此处输入图片描述

    它会说:

    按 Enter 进行维护
    (或按 Control-D 继续):_

    按 以 root身份Enter进入命令提示符。现在您将看到如下提示符:

    root@my_computer_name:~#

    你已经准备好了!只需记住,cd进入目录时,~不是带您进入用户主目录,因为您是以root而非您的用户身份登录的。进入用户主目录的方式如下:

    cd /home/username
    
  4. (我认为是可选的,但我还是这么做了)安装一些 32 位兼容库:

    sudo apt update 
    sudo apt install pkg-config
    # Install cmd source: https://zoomadmin.com/HowToInstall/UbuntuPackage/libglvnd-dev
    sudo apt install libglvnd-dev
    
  5. 启动安装程序。

    # cd to where you saved it; ex:
    cd /home/my_username/Downloads/Install_Files/NVIDIA
    # start the installer
    sudo sh ./NVIDIA-Linux-x86_64-525.60.11.run
    

    它将提取文件并运行安装程序。

    出现提示时,使用箭头键选择并按 ,选择“继续安装” Enter

    然后它会显示“正在构建内核模块”,并有一个绿色条,进度为 100%。

    如果您选择安装上面的 32 位兼容库(我这样做了),那么当它显示以下内容时:

    安装 NVIDIA 的 32 位兼容库?

    选择“是”。

    当它说:

    您是否要运行该nvidia-xconfig实用程序来自动更新您的 X 配置文件,以便在重新启动 X 时使用 NVIDIA X 驱动程序?”

    使用箭头键移动白色选择框,然后选择“是”。

    当安装完成时,选择“确定”。

  6. 太棒了。这太痛苦了。我很高兴一切都结束了 :)。现在重启。

    reboot
    
  7. 登录并使用您的设置测试外接显示器。测试您的屏幕亮度功能键。它们能用吗?如果能,太好了!您大功告成了!如果没有,请按照我的说明操作:安装 NVIDIA 驱动程序后亮度不起作用。您必须反复下载并安装下一个最旧的 NVIDIA 驱动程序,直到找到一个具有功能性亮度按钮的驱动程序。就我而言,撰写本文时的最新驱动程序 525.60.11 没有不是可以工作,但 5.15.86.01做过

    1. 重新安装显卡驱动程序实际上非常快,现在您知道如何操作了,只需不到 5 分钟即可完成。只需通过 Grub 启动菜单重新启动到根终端并安装下一个 NVIDIA 驱动程序,就像您刚才所做的那样。
  8. 不要让 UBUNTU 将来意外自动更新您的 NVIDIA 图形驱动程序:将来,在运行 Ubuntu 的自动更新时,请仔细阅读并取消选中任何安装或更新 NVIDIA 图形驱动程序的选项。显然我没有注意,我不小心允许它自动安装一些 Ubuntu 提供的 NVIDIA 图形驱动程序,破坏了我使用外接显示器和再次控制屏幕亮度的能力,所以我不得不在几分钟前(2023 年 1 月 8 日)再次手动重新安装版本 5.15.86.01。直到我重新启动后,我的外接显示器不工作,我的屏幕亮度为 100%(太亮),我无法使用Fn+BrightnessDown按钮降低它,我才注意到变化。这很烦人。所以,小心点。如果有人知道如何在手动安装 NVIDIA 后阻止 Ubuntu 的自动更新尝试自动升级图形驱动程序,请告诉我。

    2023 年 1 月 18 日更新:它又来了。 :( 我刚刚重新启动,我的驱动程序神秘地改变了。由于我手动安装了运行良好的 5.15.86.01 驱动程序,这次我选择了 Ubuntu 提供的 5.15 选项,然后重新启动,它似乎也运行良好,包括允许我使用笔记本电脑的功能键调整屏幕亮度。这是我刚刚选择的选项:

    在此处输入图片描述

    我手动安装的驱动程序不断被 Ubuntu 更改,这真是太烦人了,所以我将尝试进一步调查以阻止这种情况。同时,Ubuntu 提供的 5.15 版本(与我手动安装的版本相同)运行良好。

    以下是我对此的后续问题:Ubuntu 每隔几周重启一次,就会撤销我手动安装的 NVIDIA 显卡驱动程序

最后一条建议是,为了让运行体验更加顺畅,特别是在 Chrome 中输入内容时,使用 X11 窗口服务器而不是 Wayland!

令人惊讶的是,X11 的速度更快,体验更好,尤其是在 Chrome 中。

Wayland 似乎漏洞较多、故障较多且速度较慢。我在 Chrome 中输入时尤其能感觉到这一点,例如现在在 Ask Ubuntu 中编辑此答案时。X11 运行得更顺畅,而 Wayland 则很不稳定,感觉有点反应迟钝,同样,即使在输入此答案时也是如此。

要使用 X11,当您重新启动并进入登录屏幕时(假设您的计算机不会自动为您登录),在您输入或选择您的用户名后,登录屏幕的右下角会出现一个小齿轮图标。单击它并选择“Ubuntu”选项,而不是 Ubuntu 22.04 默认的“Ubuntu with Wayalnd”选项。“Ubuntu”选项运行传统的 X11 窗口管理器服务器,而“带有 Wayland 的 Ubuntu”选项运行较新的(并且根据我的经验,故障较多)Wayland 窗口管理器服务器。

提醒自己:未来要考虑的其他事情

  1. sudo ubuntu-drivers autoinstall另请参阅有关此答案最顶部的我的新笔记。
  2. 使用哪个显示管理器(dm)?
    1. 谷歌搜索“lightdm vs gdm3”
    2. https://www.linuxfordevices.com/tutorials/linux/gdm3-vs-lightd
    3. gdm3 比 lightdm 更受欢迎吗?

答案4

这有助于解决我的问题。ubuntu 20.04 运行良好,将其更新到 ubuntu 22.04 后,每天会出现 2 或 3 次冻结,但日志中没有错误。造成这种情况的原因可能有很多...这只是我的问题解决方案。

当时发生的事情是我的 nvme 驱动器关闭了。您可以非常轻松地测试一下您是否遇到了和我一样的问题。当它冻结时,按 alt + print screen,按住这些键并输入 reiusb,当您按 b 时,它会重新启动,您应该会看到您的 pc 徽标,如果它只是停留在 pc 徽标上并最终将您带到 bios,并且您的存储驱动器不见了,您必须关闭电源才能重新启动,那么您就遇到了我的问题。将其添加到 /etc/default/grub GRUB_CMDLINE_LINUX_DEFAULT="nvme_core.default_ps_max_latency_us=0" sudo update-grub reboot 解决了我的问题

相关内容