我的笔记本电脑型号是 HP ENVY 4-1220tx Ultrabook。我安装了 Ubuntu 16.10 并启用了 SecureBoot。
昨天我从 Ubuntu 软件安装了一个操作系统更新。今天,当我尝试在 SecureBoot 下将计算机启动到 Ubuntu 时,它无法验证 EFI 文件,因此无法启动。
现在我只能通过关闭安全启动才能启动。
我查看了档案/var/log/apt/history.log
,发现了相关记录:
Start-Date: 2016-11-04 22:28:23
Commandline: aptdaemon role='role-upgrade-system' sender=':1.3522'
Upgrade: grub-common:amd64 (2.02~beta2-36ubuntu11, 2.02~beta2-36ubuntu11.1), grub2-common:amd64 (2.02~beta2-36ubuntu11, 2.02~beta2-36ubuntu11.1), grub-efi-amd64-bin:amd64 (2.02~beta2-36ubuntu11, 2.02~beta2-36ubuntu11.1), grub-efi-amd64:amd64 (2.02~beta2-36ubuntu11, 2.02~beta2-36ubuntu11.1), grub-efi-amd64-signed:amd64 (1.74+2.02~beta2-36ubuntu11, 1.74.1+2.02~beta2-36ubuntu11.1), shim:amd64 (0.9+1465500757.14a5905.is.0.8-0ubuntu3, 0.9+1474479173.6c180c6-0ubuntu1)
Remove: shim-signed:amd64 (1.21.3+0.9+1465500757.14a5905.is.0.8-0ubuntu3)
End-Date: 2016-11-04 22:30:18
我也尝试重新安装该软件包shim-signed
但遇到以下错误:
$ sudo apt install shim shim-signed
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
grub-common grub-efi-amd64-bin grub2-common os-prober
Suggested packages:
multiboot-doc grub-emu xorriso desktop-base
The following NEW packages will be installed:
grub-common grub-efi-amd64-bin grub2-common os-prober shim shim-signed
0 upgraded, 6 newly installed, 0 to remove and 0 not upgraded.
Need to get 3,704 kB of archives.
After this operation, 20.3 MB of additional disk space will be used.
Do you want to continue? [Y/n] Y
Get:1 http://us.archive.ubuntu.com/ubuntu yakkety/main amd64 grub-common amd64 2.02~beta2-36ubuntu11 [1,751 kB]
Get:2 http://us.archive.ubuntu.com/ubuntu yakkety/main amd64 grub2-common amd64 2.02~beta2-36ubuntu11 [526 kB]
Get:3 http://us.archive.ubuntu.com/ubuntu yakkety/main amd64 os-prober amd64 1.70ubuntu3 [18.8 kB]
Get:4 http://us.archive.ubuntu.com/ubuntu yakkety/main amd64 shim amd64 0.9+1465500757.14a5905.is.0.8-0ubuntu3 [442 kB]
Get:5 http://us.archive.ubuntu.com/ubuntu yakkety/main amd64 grub-efi-amd64-bin amd64 2.02~beta2-36ubuntu11 [652 kB]
Get:6 http://us.archive.ubuntu.com/ubuntu yakkety/main amd64 shim-signed amd64 1.21.3+0.9+1465500757.14a5905.is.0.8-0ubuntu3 [315 kB]
Fetched 3,704 kB in 1s (2,134 kB/s)
Preconfiguring packages ...
Selecting previously unselected package grub-common.
(Reading database ... 299379 files and directories currently installed.)
Preparing to unpack .../0-grub-common_2.02~beta2-36ubuntu11_amd64.deb ...
Unpacking grub-common (2.02~beta2-36ubuntu11) ...
Selecting previously unselected package grub2-common.
Preparing to unpack .../1-grub2-common_2.02~beta2-36ubuntu11_amd64.deb ...
Unpacking grub2-common (2.02~beta2-36ubuntu11) ...
Selecting previously unselected package os-prober.
Preparing to unpack .../2-os-prober_1.70ubuntu3_amd64.deb ...
Unpacking os-prober (1.70ubuntu3) ...
Selecting previously unselected package shim.
Preparing to unpack .../3-shim_0.9+1465500757.14a5905.is.0.8-0ubuntu3_amd64.deb ...
Unpacking shim (0.9+1465500757.14a5905.is.0.8-0ubuntu3) ...
Selecting previously unselected package grub-efi-amd64-bin.
Preparing to unpack .../4-grub-efi-amd64-bin_2.02~beta2-36ubuntu11_amd64.deb ...
Unpacking grub-efi-amd64-bin (2.02~beta2-36ubuntu11) ...
Selecting previously unselected package shim-signed.
Preparing to unpack .../5-shim-signed_1.21.3+0.9+1465500757.14a5905.is.0.8-0ubuntu3_amd64.deb ...
Unpacking shim-signed (1.21.3+0.9+1465500757.14a5905.is.0.8-0ubuntu3) ...
Processing triggers for ureadahead (0.100.0-19) ...
ureadahead will be reprofiled on next reboot
Processing triggers for install-info (6.1.0.dfsg.1-8) ...
Setting up shim (0.9+1465500757.14a5905.is.0.8-0ubuntu3) ...
Setting up os-prober (1.70ubuntu3) ...
Setting up grub-common (2.02~beta2-36ubuntu11) ...
update-rc.d: warning: start and stop actions are no longer supported; falling back to defaults
Processing triggers for systemd (231-9ubuntu1) ...
Processing triggers for man-db (2.7.5-1) ...
Setting up grub-efi-amd64-bin (2.02~beta2-36ubuntu11) ...
Setting up grub2-common (2.02~beta2-36ubuntu11) ...
Setting up shim-signed (1.21.3+0.9+1465500757.14a5905.is.0.8-0ubuntu3) ...
Installing for x86_64-efi platform.
Installation finished. No error reported.
No DKMS packages installed: not changing Secure Boot validation state.
我该如何解决这个问题?
我应该如何处理 DKMS 部分?
答案1
哪个文件无法验证???shimx64.efi
其他grubx64.efi
的?如果是前者,我建议你找到并安装一个较早的 Shim 二进制文件。(有几十个这样的文件。)但请注意,只有UbuntuShim 将启动Ubuntu 的GRUB,至少除非你将 Ubuntu 的密钥添加到 MOK 列表中。(参见这里获得一串密钥,包括 Canonical 的密钥。)如果 GRUB 无法启动,您可以尝试使用较早的 GRUB;或者可能是 Shim 中存在错误。
请注意,某些 EFI 对密钥可能很挑剔。我见过一些 EFI 在启用安全启动时拒绝启动某些签名的二进制文件,即使使用相同密钥签名的其他二进制文件可以正常启动。这可能是您遇到的问题的根本原因,也是我建议您退回到已知可以正常工作的二进制文件的原因。
如果问题出在 GRUB 上,你可以尝试使用我的重新索引而不是 GRUB,但这在涉及安全启动时会增加复杂性——请参阅 rEFInd 文档的安全启动页面。(简而言之,您必须在 MOK 列表中添加至少一个密钥。如果问题是我之前提到的“挑剔的 EFI”问题,您可能会发现一些 rEFInd 二进制文件可以工作,而其他则不能。我分发的 Debian 软件包中提供的版本(在rEFInd 的 Sourceforge 文件部分) 是最不可能引发问题的一种。
如果你想走一条艰难的路,并且全部的控制计算机的安全启动子系统,请参阅我的这个页面。该页面介绍了如何用您自己的密钥替换计算机的所有安全启动密钥,使您无需使用 Shim 即可启动;但是,根据您安装的密钥和使用的程序,您可能需要自己对部分或全部 EFI 二进制文件进行签名。这需要大量工作,可能不值得仅仅为了绕过您遇到的问题而这样做,但如果您想完全控制系统上的安全启动,这可能是值得考虑的。
话虽如此,我见过太多安全启动问题,我越来越认为最好禁用它,至少在纯 Linux 系统上禁用它。(安装 Windows 后,恶意软件感染的几率会大大增加,因为恶意软件作者倾向于针对流行的操作系统,对于台式机和笔记本电脑来说,这意味着 Windows。)禁用安全启动确实会让你的系统容易受到某些类型的攻击,但安全启动麻烦的数量已经足够多,以至于使用安全启动所花费的时间可能比安全启动可以绕过的问题所花费的时间还要多——也就是说,尽管恶意软件可能会消耗很多您的时间,当您将其乘以恶意软件导致问题的可能性(如果您关闭安全启动),我怀疑结果将远远少于您解决安全启动问题所花的时间。不过,这只是猜测。如果您确实禁用了安全启动,那么保留适当的备份就变得更加重要,因为与感染相关的大部分时间可能涉及恢复丢失的文件。