Ubuntu 20.04.5 live USB 闪存无法在 2011 Dell Optiplex 990 上启动(无法设置 MokListRT:资源不足)

Ubuntu 20.04.5 live USB 闪存无法在 2011 Dell Optiplex 990 上启动(无法设置 MokListRT:资源不足)

在 Dell Optiplex 990 上安装了 Ubuntu 18.04 桌面版。尝试通过网络将其升级到 20.04,但出现周期性错误并最终失败。可以显示 GUI 登录屏幕,但无法登录。按照以下步骤操作后, https://ostechnix.com/how-to-fix-broken-ubuntu-os-without-reinstalling-it/ (运行时出现错误)我可以登录,但视频分辨率被限制为 800x600,无法识别我的显示器,并且由于未满足依赖关系而更新失败。在本报告中,我跳过了这些错误的详细信息,因为我决定尝试从头开始重新安装。

因此,问题是我用启动盘创建器制作的每个 Ubuntu 20.04.5 live USB 闪存驱动器都无法启动。我在另一个 Ubuntu 20.04 系统、Ubuntu 18.04.5 系统和 Ubuntu 16.04 系统上制作了闪存驱动器(后两个系统是从我仍然拥有的旧可启动闪存驱动器启动的)。我收到错误“无法设置 MokListRT:资源不足”。
错误消息:无法设置 MokListRT:资源不足

研究了该问题,例如:
无法设置 MokListRT:资源不足:import_mok_state() Ubuntu 20.04 无法设置 MokListRT:无效参数 许多人在使用 Ubuntu 更新 Mac 或 Intel 笔记本电脑后也遇到了类似的错误,他们建议通过以下任一方式修复:

  1. 使用 grub 可执行文件的副本覆盖 shim 可执行文件(例如 cd /boot/efi/EFI/ubuntu,cp grubx64.efi shimx64.efi)。但问题是,经过搜索,shimx64.efi 并不存在于实时闪存中,除非在 shim...deb 包中,

或者

  1. 用 grubx64.efi 覆盖 mmx64.efi(在实时闪存上,它们都位于 /EFI/BOOT/ 中)。我尝试了后者,但结果发现,由于闪存驱动器具有 ISO9660 文件系统,因此它是只读的,无法以读写方式安装,所以我无法“cp grubx64.efi mmx64.efi”。

因此,问题再次出现,我用启动盘创建器制作的每个 Ubuntu 20.04.5 live USB 闪存驱动器都无法在我的 2011 Dell Optiplex 990 或 2011 Dell Latitude E6420 上启动。这两台电脑都具有最新的 BIOS,并且具有 GPT 磁盘,因此我以 UEFI 模式启动(因为,从大约 2 年前的升级困难中回想起,我认为如果我以 MBR 模式启动 live flash 但安装在 GPT 磁盘上,它就不起作用)。BIOS 中没有安全启动设置。仅供参考,我在启动盘上安装了 Ubuntu 和 Windows 10。仅供参考,我至少使用了 2 个不同的闪存驱动器,在运行启动盘创建器之前已将它们格式化为 GPT,但在启动盘创建器完成后,它们(在磁盘实用程序中)显示为 MBR 而不是 GPT。另请参阅本文 https://web.sas.upenn.edu/jasonrw/2016/04/07/uefi-and-a-dell-optiplex-990/ Dell 990s 支持 BIOS/MBR 或 UEFI,但不能同时支持两者(无 UEFI-CSM 兼容模式)。

答案1

我对此有几点想法......

首先,我建议不要在此时安装 Ubuntu 20.04。Ubuntu 22.04 是当前的 LTS 版本。Ubuntu 22.04 将比 20.04 获得更长的支持,并且 22.04 包含更多最新软件包。话虽如此,我怀疑使用 Ubuntu 22.04 是否能帮助您解决问题;这更像是一般建议。

其次,您看到的错误消息表明您的计算机的 NVRAM 存储可能已满或碎片化,以至于 Shim 无法创建新变量。您可以通过删除冗余或不需要的 EFI 启动变量来改善情况。最简单的方法可能是启动我的rEFInd 启动管理器;有一个可用的 USB 闪存驱动器映像,可以直接启动(该映像不使用 Shim,这也意味着您必须禁用安全启动才能启动它)。进入 rEFInd 后,第二行选项可以调整基于 NVRAM 的启动项。您应该能够使用它来删除不需要的启动项。但要小心;只删除您想要的选项肯定是不必要的或多余的!不过,最终,我怀疑问题出在安全启动 db 和 dbx 键和/或 Shim MOK 上。您的固件可能有一个选项可以将安全启动 db 和 dbx 键重置为默认值,但具体操作方法因计算机而异。我找不到为您的戴尔执行此操作的说明,但我找到了本文关于如何在 HP 电脑上执行此操作。也许这会有所帮助,或者至少会为您指明正确的方向。您的固件也可能包含一个将所有内容重置为出厂默认设置的选项,这可能(或可能不会)清除 NVRAM 中随时间获取的所有变量。但请注意,安全启动 db 和 dbx 键的存在是有原因的,删除它们可能会导致安全问题。但是,如果您无法启动计算机,那么这可能是一个更大的问题,因此您可能别无选择,只能接受增加的安全风险,要么使用更精简的 dbx,要么完全禁用安全启动。

关于在 live 映像中不存在的事实shimx64.efi,这是因为它的名称不同。可移动媒体(CD-R、USB 闪存驱动器等)使用后备文件名EFI\BOOT\bootx64.efi; 的文件名shimx64.efi被重命名为该文件名。在 Ubuntu 安装程序中,EFI\BOOT\bootx64.efi(Shim)随后grubx64.efi在同一目录中启动;因此,在禁用安全启动的情况下,您可以通过重命名grubx64.efi为 来直接启动 GRUB bootx64.efi。但请注意,如果此操作有效,安装程序会将 Shim 放在硬盘上(作为EFI\ubuntu\shimx64.efi),因此您需要创建非 Shim 启动路径(使用efibootmgr;请参阅这里了解详情)或重命名为该目录中grubx64.efishimx64.efi。 (如果可行,前者是更好的选择……)另一个复杂因素是,考虑到问题的性质,安装程序可能无法创建新的启动项,因此安装后重新启动可能会失败。这又回到了上述解决方案——清理(可能)过满的 NVRAM。

最后,正如@guiverc 所说,将计算机切换为以 BIOS/CSM/旧模式启动是一种选择。大多数基于 UEFI 的 PC(自 2011 年左右以来制造的)都是基于 UEFI 的,但其中大多数还包括兼容性支持模块 (CSM),这使它们能够启动旧版 BIOS 操作系统。因此,这三个术语BIOS中央管理委员会, 和遗产在此上下文中,它们或多或少可以互换。这三个都依赖于 CSM兼容层UEFI 的,因此在启动 BIOS 模式操作系统时,计算机仍基于 UEFI;但任何给定的操作系统安装都将是其中之一。因此,您可以通过在 BIOS 模式下安装 Ubuntu 来解决这些问题。诀窍是强制计算机以 BIOS 模式而不是 EFI 模式启动。最容易实现的方法是删除 EFI 模式引导加载程序,它们是EFI引导介质目录中的文件。无论您使用什么工具来创建引导介质,都必须包含 BIOS 模式引导加载程序。还要注意,如果计算机要启动仅有的BIOS 模式操作系统,因为 GRUB 2 无法在启动模式之间切换。也就是说,BIOS 模式 GRUB 2 只能启动 BIOS 模式操作系统,而 EFI 模式 GRUB 2 只能启动 EFI 模式操作系统。因此,如果您想在 Ubuntu 旁边双启动现有的 EFI 模式 Windows,最好尽可能坚持使用 EFI 模式 Ubuntu 安装。如果您必须混合使用启动模式,那么我的rEFInd 启动管理器可以解决问题,但您需要scanfor在其refind.conf文件中的行上启用支持。在您的案例中使用 rEFInd 的缺点是您仍然需要为其创建 EFI 启动条目,而考虑到您的 NVRAM 过于拥挤,这可能是不可能的。此外,无论您如何操作,在 BIOS/CSM/传统模式下启动都意味着放弃安全启动的保护,因此从安全角度来看,这种方法并不比删除 dbx 更好。

所以总而言之,您的问题有很多可能的解决方案和解决方法,但最终,我怀疑您的最佳选择是清理我怀疑过度拥挤的 NVRAM。

答案2

1. 我已完成并修复了升级到 Ubuntu 20.04 桌面版的问题首先禁用 SAV Sophos Anti Virus

sudo /opt/sophos-av/bin/savdctl disable

显然杀毒软件会干扰一些,但不是大多数更新!(我觉得自己很蠢!)
然后我运行了命令https://ostechnix.com/how-to-fix-broken-ubuntu-os-without-reinstalling-it/ 即:

sudo rm /var/lib/apt/lists/lock
sudo rm /var/lib/dpkg/lock
sudo rm /var/lib/dpkg/lock-frontend
sudo rm /var/cache/apt/archives/lock

sudo dpkg --configure -a
sudo apt clean
sudo apt update --fix-missing
sudo apt install -f

sudo dpkg --configure -a 
sudo apt upgrade 
sudo apt dist-upgrade 
sudo reboot

2a. 关于启动盘创建器使 Ubuntu 20.04 桌面 USB 闪存驱动器无法在我的 Dell Optiplex 990 上启动的问题,该问题尚未解决。但是,作为一种解决方法,我发现 USB 闪存具有:

因此,我建议那些在旧硬件上遇到此错误的人安装 Ubuntu 18.04.6 或更早版本,然后通过网络升级。

2b. 为了尝试释放 NVRAM 中的空间,正如 Rod Smith 所建议的那样,我使用 rEFInd 启动管理器删除了不必要的启动项,但我的 Dell Optiplex 990 一直添加传统的启动项:

图 2. 初始启动条目并由 rEFInd 显示,包括不必要的 Legacy 条目(软盘驱动器甚至不存在!)

图 3. 删除 4 个 Legacy 启动项后

图 4. ...但重启后,我的戴尔 990 BIOS 不断将不必要的旧式启动项放回去。请注意左侧的较高数字 1A 1B 1C

然后,我按照以下说明清除 CMOS NVRAMhttps://www.dell.com/support/kbdoc/en-us/000124377/how-to-perform-a-bios-or-cmos-reset-and-clear-the-nvram-on-dell-systems 通过取出电池、将主板跳线移至 RTCRST(在 Dell Optiplex 990 迷你塔式机上,它隐藏在 SATA 连接器下),以及——在 BIOS 中拍摄我的 UEFI 启动条目后——使用 BIOS 加载默认值。但是,你猜对了,我的 Dell Optiplex 990 一直在添加旧版启动条目:
图 4. BIOS NVRAM 多次清除后的最终启动条目

因此我研究了更新依赖关系问题并发现禁用防病毒软件是必要的,以允许某些更新正常工作,如上所述。

相关内容