Ubuntu 22.04 第二台显示器未检测到

Ubuntu 22.04 第二台显示器未检测到

我正在使用 Ubuntu 22.04,到目前为止还没有遇到任何问题。这是我以前遇到的问题,当我在“附加驱动程序”部分中激活 510 驱动程序时,我的第二台显示器变得可见,我继续以这种方式使用它。然而,几天前,当我安装 Ubuntu 的所有新更新时,显示器再次变得不可见,我注意到在“附加驱动程序”部分中选择了 525 驱动程序。510 驱动程序不见了。过去两天我一直在尝试解决这个问题,但没有成功,所以我想征求你的建议。我在等你的回复。(我尝试了照片中的每一个驱动选项。

在此处输入图片描述

答案1

好吧,我在添加评论时就应该意识到这一点。我之前没有看到它影响 NVIDIA 驱动程序,但我看到它影响其他驱动程序(VMware Workstation)。

至少对我来说,这个问题是由安全启动引起的。安全启动确保驱动程序来自可信来源。通常,所述驱动程序的供应商会对驱动程序进行签名,以确保人们知道它来自供应商,并且信任密钥在本地存储中。浏览器对 HTTPS 连接使用相同的东西。但是,我的 bios 似乎没有 NVIDIA 驱动程序签名二进制文件的密钥。

因此有 2 个选项:

  1. 禁用安全启动。每个 BIOS 都不同,但基本步骤如下:
  • 启动装置
  • 按相应的键进入 BIOS 设置。这通常是 F2、Del、F12 或类似的键。
  • BIOS 中可能有一个安全部分
  • 找到安全启动选项并将其关闭
  • 保存并退出 BIOS 设置
  1. 签署二进制文件
  • 生成私钥和证书
sudo openssl req new -x509 -newkey rsa:2048 -keyout /etc/ssl/private/MOK.priv -outform DER -out /etc/ssl/certs/MOK.der -nodes -days 36500 -subj "/CN=SecureBIOS/"
  • 使用 mokutil 将证书导入 BIOS
sudo mokutil --import /etc/ssl/certs/MOK.der
  • 对驱动程序进行签名
sudo /usr/src/linux-headers-`uname -r`/scripts/sign-file sha256 /etc/ssl/private/MOK.priv /etc/ssl/certs/MOK.der $(modinfo -n nvidia-drm)
sudo /usr/src/linux-headers-`uname -r`/scripts/sign-file sha256 /etc/ssl/private/MOK.priv /etc/ssl/certs/MOK.der $(modinfo -n nvidia)
sudo /usr/src/linux-headers-`uname -r`/scripts/sign-file sha256 /etc/ssl/private/MOK.priv /etc/ssl/certs/MOK.der $(modinfo -n nvidia-modeset)
sudo /usr/src/linux-headers-`uname -r`/scripts/sign-file sha256 /etc/ssl/private/MOK.priv /etc/ssl/certs/MOK.der $(modinfo -n nvidia-peermem)
sudo /usr/src/linux-headers-`uname -r`/scripts/sign-file sha256 /etc/ssl/private/MOK.priv /etc/ssl/certs/MOK.der $(modinfo -n nvidia-uvm)
  • 重启

有趣的是,我的驱动程序似乎已经由我笔记本电脑上的密钥签名,因为执行操作modinfo nvidia会显示签名,并且其主题是我的笔记本电脑。因此,内核升级过程中有一些东西会自动对驱动程序进行签名,但是似乎有些东西丢失了,密钥存储中没有安装密钥,因此它不再受信任。我相信更熟悉内核安装的人会知道应该处理这个问题的安装后脚本,以及密钥的存储位置。

编辑:这可能相关:https://bugs.launchpad.net/ubuntu/+source/linux-restricted-modules/+bug/2027914

相关内容