Ubuntu(乌班图):在启用安全引导(SecureBoot)的情况下,“以非安全模式引导”。

我刚刚安装了Ubuntu 15.10,之前试用了一段时间的16.04 LTS。在使用16.04时,我尝试安装Nvidia驱动程序,结果被告知需要禁用SecureBoot。于是我提供了密码,在下次重启时有些软件要求输入密码。然而,我的BIOS设置仍显示SecureBoot已启用,如果我尝试从未签名的设备启动,它仍会拒绝启动。
然而,当我重新安装Ubuntu 15.10(完全删除与16.04相关的所有内容,包括EFI分区中的grub)后,每次启动时都会出现“以不安全模式启动”的消息。
我已经检查了一切,无论是Windows还是BIOS设置都报告SecureBoot已启用。

我曾遇到过类似的问题,是关于一台HP EliteDesk 705的。但我还没有完全调查清楚。请问您使用的是哪个品牌和型号的电脑?EFI是什么品牌的?(输入dmesg | grep -i efi应该会输出EFI信息。其中的第一行应该能够识别出EFI的制造商,例如efi: EFI v2.31 by American Megatrends。) - Rod Smith
这是一台MSI GS60笔记本电脑,EFI也是由美国Megatrends公司提供的。我发现即使启用了安全启动,这种情况仍然很奇怪。 - vagaerg
这个回答解决了你的问题吗?"在启用安全启动时出现“以不安全模式启动” - Hrishikesh Kadam
3个回答

如果你想摆脱关于不安全启动的消息,你需要启用安全启动。 要做到这一点,你需要在MOK模块(机器所有者密钥)中打开验证。
sudo mokutil --enable-validation

您将被要求输入两次临时密码,然后在重新启动后有可能更改验证状态。

如果启用了验证,则不会再出现关于不安全引导的消息。 但请记住,您将无法运行任何未签名的驱动程序:nVidia驱动程序和VirtualBox将无法工作。

要禁用验证,请键入:

sudo mokutil --disable-validation

然后重新启动。

如果您禁用验证并在BIOS中打开了安全启动,仍然无法启动未签名的任何内容。 即使您的Ubuntu已禁用验证,但由于shim-signed软件包的存在,BIOS(UEFI)仍将其视为已签名。在Ubuntu启动时,Shim软件包会检查MOK状态,如果禁用了验证,则显示“以不安全模式启动”的消息。


1@Peter 我现在可以在UEFI中启用验证禁用和安全启动的情况下运行NVIDIA专有驱动程序了。 - sanwablo
Virtualbox 在这里运行,激活验证功能。 - poch
只要你自己签名并将签名密钥注册为MOK,就可以使用启用了验证功能的专有或自编译内核模块。 请参阅https://askubuntu.com/a/797442/12049。 - ssice

您可以通过以下方式检查安全启动的状态:
$ mokutil --sb-state

对于你来说,输出可能是 -
SecureBoot enabled
SecureBoot validation is disabled in shim

您需要使用以下命令重新启用安全启动验证,这将最终不显示“以不安全模式启动”的文本。
$ sudo mokutil --enable-validation

在这里,命令会要求您输入一个密码。 这个密码不是您的登录密码,而只是一个临时密码。您需要设置一个密码,在接下来的步骤中会要求输入该密码。
现在,重新启动并按照执行MOK管理蓝屏上显示的指示进行操作。
选择更改安全启动状态
来源 -
https://wiki.debian.org/SecureBoot
https://wiki.ubuntu.com/UEFI/SecureBoot

上面的第一个答案声称:“如果你想摆脱关于不安全引导的消息,你需要启用安全引导。”这个说法是错误的。以下是原因(并且解释可能对那些想要摆脱这个消息的人有所帮助)。
看到“以不安全模式引导”这个消息,并不意味着在BIOS(也就是“UEFI”)中禁用了安全引导。因为我曾经在BIOS级别禁用了安全引导时看到过这个消息;导致这个消息显示出来(或者至少足够显示出来)的原因是以下情况。我执行了命令sudo mokutil --disable-validation,然后重新启动并通过mokutil(或者应该说是“EFI”?)的一系列复杂操作。我之前进行了这个禁用操作是为了尝试修复与安全引导相关的另一个问题。
命令sudo mokutil --enable-validation足以摆脱“以不安全模式启动”的提示信息。因此,我回到了之前快乐的状态,其中安全启动被禁用,而且(尚未)看不到该提示信息。或者更确切地说,当我再次通过该命令重新启动进入“mokutil”界面时,特别是告诉该界面禁用安全启动时,就得到了这个结果 - 或者说保持其禁用。后一个问题 - 也就是说,必须告诉由mokutil命令生成的界面禁用已经禁用的内容 - 只是冰山一角。这座冰山是毫无必要的不清晰性,而令人震惊的是,mokutil生成的用户界面还增加了已经危险的所谓安全启动的海洋。 (实际上,我可能对相关界面有误解。如果是这样,那只能证实我的观点。)