首先:我并不想禁用安全启动,因为我有第二个硬盘,里面安装了 Windows 10。这两个操作系统位于两个独立的驱动器上,运行时彼此隔离。Windows 启动管理器和 GRUB 位于各自的驱动器上,彼此完全不了解。
相关系统配置为:
- 操作系统:Ubuntu 17.04 - 内核:4.10.0-32-generic
- 主板:华擎Taichi X99
- 显卡:GTX 1080
因此,我一直在尝试使用 mokutil 来注册我自己的证书,以便我可以使用它来加载签名的 Nvidia 驱动程序,但是在使整个过程正常运行时遇到了麻烦。
因此我采取的步骤如下:
- 在 Ubuntu 中启用安全启动支持。
- 使用 openssl 创建 x509 证书。
- 运行
mokutil --enable-validation
并输入密码。 - 用于
mokutil --import
将新创建的证书添加到安全启动密钥列表中。 - 使用 efi 目录下的签名脚本,使用我创建的私钥和证书对内核模块进行签名。
- 已重新启动系统。
- 使用以下方式选择启动项
shimx64.efi
- 按下 键进入 mok 管理
- 卡在这个屏幕上:
答案1
答案2
向那些试图从屏幕截图中盲目地执行此操作但"Invalid character"
在黑屏上收到错误的人提供一条消息。
我在 Ubuntu 22.04 上遇到了同样的问题。我遇到了同样的问题,屏幕冻结并且不显示菜单。我决定盲目尝试。我找到了另一个版本的 UEFI,可以从链接中的屏幕截图中看到 -https://wiki.ubuntu.com/UEFI/SecureBoot/DKMS。关键是它有一个不同的菜单算法。它不要求输入密码,而是要求输入密码中字母的位置(屏幕上出现“无效字符”错误的原因)。所以我的步骤是:
- 设置包含相同字符的密码
mokutil --enable-validation
,例如“aaaaaaaa” - 重启
- 在“按任意按钮”屏幕上,只需按任意按钮
- 按下向下的箭头,然后输入。
- 按“a”然后输入。重复三次。在这个屏幕上,他希望你猜三次密码中某个位置的字母。所以我们重复“a”和“Enter”三次。
- 按向下箭头,然后输入
- 按回车键。您应该会看到 PC 重新启动。
经过这些步骤之后,一切都对我有用。
答案3
另一种选择是在安全启动模式下安装驱动程序(通过 Ubuntu/Drivers)后直接将平台密钥从 /var/lib/shim-signed/mok/MOK.der 复制到 USB 记忆棒。或者,在从命令行安装驱动程序(通过下载的 .run 文件)时,传递选项“--module-signing-public-key”以获取平台密钥并将其复制到 USB。
sudo sh ./XXXXXX.run -s --module-signing-secret-key=PATH_TO_PRIVATE_KEY --module-signing-public-key=PATH_TO_PUBLIC_KEY
然后重新启动,进入 BIOS,进入安全启动管理并将 USB 记忆棒中的密钥文件添加为“允许的签名”。
答案4
我在 Ubuntu 20.04 上使用集成显卡的 Asrock B450M-HDV 主板上遇到了同样的问题。
我可以使用上面提供的图片盲目注册密钥,但将 BIOS(实际上是 UEFI 固件)升级到 v4.40 解决了这个问题,现在我可以看到菜单了!
也许它给某人一个暗示......