将我的 PC 从 wily 升级到 xenial(均为 Kubuntu 风格)后,我有一个奇怪的行为。在升级之前和之后,我的 BIOS 中有两个“ubuntu”引导选项。在这里,您可以看到 xenial 下每个条目背后的值:
stephane@nausicaa:~$ sudo efibootmgr -v
BootCurrent: 0002
Timeout: 0 seconds
BootOrder: 0002,0000
Boot0000 ubuntu HD(1,GPT,xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx,0x800,0x64000)/File(\EFI\ubuntu\shimx64.efi)
Boot0002* ubuntu HD(1,GPT,xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx,0x800,0x64000)/File(EFI\Ubuntu\grubx64.efi)
狡猾地我一直在使用 shimx64(第一个条目)和 NVIDIA 专有驱动程序,没有问题。由于升级到 xenial shimx64(第一个条目)不会加载 NVIDIA 专有驱动程序。我必须改用 grubx64(第二个条目)。
当我使用 grubx64 时,我在内核日志中找到以下“nvidia”或“NVRM”条目:
nvidia: module license 'NVIDIA' taints kernel.
nvidia: module verification failed: signature and/or required key missing - tainting kernel
[drm] Initialized nvidia-drm 0.0.0 20150116 for 0000:01:00.0 on minor 0
NVRM: loading NVIDIA UNIX x86_64 Kernel Module 340.96 Sun Nov 8 22:33:28 PST 2015
nvidia_uvm: Loaded the UVM driver, major device number 245
NVRM: Your system is not currently configured to drive a VGA console
NVRM: on the primary VGA device. The NVIDIA Linux graphics driver
NVRM: requires the use of a text-mode VGA console. Use of other console
NVRM: drivers including, but not limited to, vesafb, may result in
NVRM: corruption and stability problems, and is not supported.
当我使用 shimx64 时,内核日志中没有“nvidia”或“NVRM”条目,甚至没有错误消息。
我曾经认为 shimx64 只是 grubx64 的签名链加载器,但从内核日志的差异来看,显然不是那么简单。有人对那里发生的事情有解释吗?这可能与驱动程序的数字签名有关吗?
NVIDIA 不签署其专有的视频驱动程序。Linux 内核始终检查内核模块中的签名,即使禁用了安全启动。当我使用 grubx64 时,我可以看到以下消息:
这不是错误,因为安全启动已禁用;NVIDIA 专有的视频驱动程序仍然有效。有趣的是,当我使用 shimx64 时,不会出现此消息。内核跳过 NVIDIA 驱动程序而没有任何消息。由于此消息,我可以说安全启动已启用: