所以,我一直在双重启动 Kubuntu 和 Windows 10。我主要尝试只使用 linux,但仍然偶尔登录 Windows 10 以使用我的付费 daw 或 davinci 解决方案等。但是!
上次我登录 Windows 10 然后重新启动计算机时,我收到一条错误消息,而不是 grub 引导加载程序(我没有更改 BIOS 设置中的任何内容)。我收到的错误是“无法创建 Moklist:卷已满,出现严重错误,import_mok_state():failed”。
我不仅无法登录笔记本电脑上安装的 Kubuntu,而且无法使用 Kubuntu Live USB 或 RedHat Live USB 登录。我在我妻子的笔记本电脑上尝试了 Kubuntu Live USB,它启动得很好。
现在,我可以启动 Slax linux 的 Live USB 了。而且,我可以更改 BIOS 以启动到 Windows 10 分区,但是......不幸的是,仅此而已。
所以...希望有人能够帮助这个有点Linux 的新手。
PS - 我什至用几天前制作的图像恢复了所有内容,但这也不起作用。
开始更新 1...................................................... …………
我可以使用 Slax 查看 efi 文件夹。
efi/ubuntu 文件是:
efi/boot 文件是:
efi/microsoft 有两个文件夹:
启动文件夹
恢复文件夹
我的笔记本电脑与我的笔记本电脑完全相同,因此即使我没有更改任何 BIOS 设置,我们还是将我的与她的进行了比较(她只使用 kubuntu 并且工作正常),它们是相同的。好吧,我的电脑有一个我不久前升级的 NVME 驱动器。
我在nvme下做了系统自检,通过了。
更新结束 1................................................. ……开始更新2……………… ......................
目前在我妻子的 kubuntu 上。在尝试了通过网络找到的所有方法后,我决定使用 Slax Linux 删除两个硬盘上的分区,包括创建新的 GPT 分区表。我目前正在 nvme 硬盘上全新安装 Windows 10,并且正在经历漫长的 Windows 更新过程。
一旦完成,我将尝试制作一个新的 USB Live 并看看效果如何。
这真的让我很感动。一切都很好。在这一切开始之前,我上次登录 Windows 10 时它有一个更新。它只是说更新已准备好安装 - 我安装了它 - 非常短的更新。上次的 Windows 10 更新是否会导致此问题???
更新结束 2................................................. ……开始更新 3……………… ......................
好吧,即使按照 UPATE 2 中所述进行操作后,我仍然无法使用 SLAX linux 之外的任何 Linux。
希望有人知道我需要做什么来解决这个问题。
更新结束 3................................................. ……开始更新 4……………… ......................
这是我的简历的几张照片。也许他们可能会帮助某人朝着正确的方向前进:https ://flic.kr/s/aHBqjzKinq
另外,我删除了所有密钥,现在我可以启动 Mint Linux live usb,但仍然无法启动 Kubuntu live usb(具有相同的 MOK 问题)。
更新结束 4................................................. ......开始更新 5 ...................................... …………!!!我已经成功了!
而且,我使用 Kubuntu 进行此编辑:)
解决问题。
那么,我们首先回顾一下...
我的双启动 Windows 10 和 Kubuntu 设置工作得很好。
我主要登录 Windows 10 来使用我付费购买的付费音乐 DAW(数字音频工作站)以及使用 Davinci Resolve(我最喜欢的视频编辑器)。
上次我启动 Windows 10 时,在这一切发生之前,有一个更新(即 Windows 10 更新)- 它只是说更新已准备就绪。于是我就安装了,而且安装得很快。当我完成 Windows 10 的操作后,我重新启动以返回 Kubuntu,但是......其中没有启动。我不断收到一个非常接近的错误:
Could not create MokList: Volume Full
Something serious has gone wrong.
import_mok_state() failed.
Run Code Online (Sandbox Code Playgroud)
我不仅无法通过硬盘启动到 Kubuntu,而且还无法在 Kubuntu、RedHat、EndeavorOS、POP OS、Xubuntu、Mint Linux 等的实时 USB 上启动。我确实发现 SLAX 可以启动...
删除安全启动下的所有密钥后,我能够在 Mint Linux Live USB 上启动。因此,我尝试安装它并得到了与我遇到的相同的错误,我认为这很奇怪。
因此,经过几天的寻找,我终于找到了适合我的解决方案,并认为我应该在这里分享。
解决方案是 efibootmgr 并删除旧的/未使用的引导条目。我无法解释,也不知道我的 Kubuntu 在一次非常小的 Windows 10 更新后如何从正常工作变成无法工作(也许这只是巧合),但这就是发生的事情,或者至少看起来确实如此据我所知,发生了。无论如何...
这是为我拯救了这一天的三个终端线:
// get efibootmgr
sudo apt-get install efibootmgr
// run efibootmgr
sudo efibootmgr
// remove unused boot entries
sudo efibootmgr -b 0005 -B
Take note that 0005 could be 0004, 0006, etc
Run Code Online (Sandbox Code Playgroud)
而且,这里是视频的链接和一篇为我提供上述信息的文章:
视频“使用 Efibootmgr 修复 EFI 启动问题”
文章“如何删除 Linux 中旧的 EFI 启动项”
当我观看视频并看到未使用的条目时,我想到了错误的“完整”部分,这导致我找到了这篇文章。
所以,是的,希望这对某人有帮助。这对我来说确实是一个学习曲线......
不确定这是否是我应该说的话,但是,你知道,随着时间的推移,我真的开始越来越不喜欢微软。如果不是因为我付费购买了 DAW 和 Davinci Resolve,我可能会完全放弃 Microsoft(我正在努力 - 哈哈)...
更新结束 5................................................................. …………
首先,一些背景信息:您报告了一条错误消息:
Couldn't Create Moklist: Volume Full , Something serious has gone wrong, import_mok_state():failed
Run Code Online (Sandbox Code Playgroud)
这是对机器所有者密钥 (MOK) 列表的引用,这些密钥是与 Shim 关联的加密密钥。安全启动要求启动加载程序使用密钥进行签名,以验证二进制文件的真实性。一些公钥存储在计算机的固件或 NVRAM 中;但保证以这种方式存储的唯一密钥属于微软,微软对其签名内容有规定。长话短说,大多数 Linux 发行版都使用名为 Shim 的程序(shimx64.efi通常为 ),该程序由 Microsoft 签名,并为发布该版本 Shim 的 Linux 发行版添加了一个新密钥。Shim 还可以读取用户可以存储在 MOK 列表中的新密钥。大部分数据(包括 MOK 列表)都存储在 NVRAM 中。
您报告的错误消息声称“卷已满”,但这是一个措辞混乱的短语,因为几乎可以肯定有问题的卷不是磁盘分区,而是 NVRAM 存储,其大小非常有限。
安全启动机制的一部分涉及操作系统供应商定期更新另一个基于 NVRAM 的安全启动密钥池,称为dbx,它是已失效的密钥或二进制哈希的列表 - 它们已知错误或已知的恶意软件,并且所以不应该被加载。您的 Windows 更新很可能包含一个dbx更新,这可能会将您的 NVRAM 存储推至极限。您的一个屏幕截图显示了一个dbx包含 77 个条目的列表(“禁止签名”)。可能还有其他东西占用 NVRAM 存储空间。EFI 会定期在 NVRAM 存储上执行“垃圾收集”,以尝试清理旧数据,但这是偶尔进行的,并且根本不保证有帮助。
与任何已满或几乎已满的资源一样,基于 EFI 的计算机上的完整 NVRAM 可能会产生奇怪的结果。我无法准确解释为什么某些 Linux 发行版可以正常启动,但其他发行版却不能,但我猜测这是由已满或几乎已满的 NVRAM 引起的。有很多方法可以检验这个假设,但我知道的主要方法是适度参与,并且可能不值得付出努力。
Linux 中显示的引导条目efibootmgr也存储在 NVRAM 中,因此删除旧的/未使用的条目可能会清理出足够的空间来开始工作。但是,如果您只删除了几个条目,那么您可能已经非常接近边缘,并且将来可能会遇到问题。
降低将来遇到问题的风险的一种方法是禁用安全启动。就其本身而言,这不会消除dbx或以其他方式减少 NVRAM 上的负载,但如果工具无法读取或修改 MOK 列表,它至少应该使其变得不重要,因为 MOK 仅由 Shim(和相关工具)使用。不过,禁用安全启动会降低系统的整体安全性——如果安装了预启动恶意软件,它将能够毫无问题地执行。
您还可以删除它dbx本身,或者用您创建的密钥覆盖所有密钥,但这会进入相当棘手的领域 - 并且删除它dbx也会降低系统的安全性(尽管不会像完全禁用安全启动那样严重)。
因此,经过几天的寻找,我终于找到了适合我的解决方案,并认为我应该在这里分享。
解决方案是 efibootmgr 并删除旧的/未使用的引导条目。我无法解释,也不知道我的 Kubuntu 在一次非常小的 Windows 10 更新后如何从正常工作变成无法工作(也许这只是巧合),但这就是发生的事情,或者至少看起来确实如此据我所知,发生了。无论如何...
这是为我拯救了这一天的三个终端线:
// 获取 efibootmgr sudo apt-get install efibootmgr
// 运行 efibootmgr sudo efibootmgr
// 删除未使用的引导条目 sudo efibootmgr -b 0005 -B 请注意,0005 可能是 0004、0006 等
而且,这里是视频的链接和一篇为我提供上述信息的文章:
视频“使用 Efibootmgr 修复 EFI 启动问题”
https://www.youtube.com/watch?v=MN-Q5h2Iv8A
Run Code Online (Sandbox Code Playgroud)
文章“如何删除 Linux 中旧的 EFI 启动项”
https://digitalrobin.net/2020/07/11/how-to-remove-old-efi-boot-entries-in-linux/
Run Code Online (Sandbox Code Playgroud)
当我观看视频并看到未使用的条目时,我想到了错误的“完整”部分,这导致我找到了这篇文章。
所以,是的,希望这对某人有帮助。这对我来说确实是一个学习曲线......
| 归档时间: |
|
| 查看次数: |
5963 次 |
| 最近记录: |