Ubuntu 22.04 Live USB 出现故障,报告“内存不足”,没有任何详细信息,即使在其他机器上工作也是如此

Ubuntu 22.04 Live USB 出现故障,报告“内存不足”,没有任何详细信息,即使在其他机器上工作也是如此

机器:戴尔XPS 13 9380

启动使用 Rufus 创建的 USB 后: 标准文本显示:

Try or install Ubuntu
Ubuntu (safe graphics)
OEM install (for manufacturers)
Boot from next volume
UEFI Firmware Settings

我选择尝试或安装 Ubuntu。然后屏幕变黑,显示以下文字:

error: out of memory.

Press any key to continue...

没有其他错误信息或详细信息。几秒钟后,或者按下某个键后,它会进入制造商徽标启动画面并冻结,直到我手动关闭电源并重新启动。

我找不到任何其他有此错误且没有其他更详细的错误输出的错误,但“内存不足”错误相当普遍,所以我可能错过了一些东西。

答案1

我在启动 HP Elitebook 840 G8 时遇到了这个问题,Ubuntu 无法从 USB 启动。然后我检查了另一台相同型号的笔记本电脑上的 BIOS 设置,发现出现错误的笔记本电脑上的“视频内存”大小设置为 512 MB,而另一台笔记本电脑上的“视频内存”大小为 64 MB。

我将“视频内存”大小更改为 64 MB,错误不再出现,Ubuntu 可以正常启动。我测试了“视频内存”大小的不同值,发现新款 HP 笔记本电脑允许的最大值为 256 MB。联想笔记本电脑可以将“视频内存”大小设置为 512 MB,不会出现任何问题。

答案2

我的华硕笔记本电脑也遇到了同样的问题。

error: out of memory.

Press any key to continue...

随后(禁用启动画面时可见)

. . .
VFS: Cannot open root device "(null)" or unknown-block(0,0): error -6
Please append a correct "root=" boot option: here are the available partitions:
Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)
CPU: 3 PID: 1 Comm: swapper/0 Not tainted 5.15.0-25-generic #25-Ubuntu
Hardware name: ASUSTeK COMPUTER INC. UX550VD/UX5S0VD, BIOS UX550VD.307 04/19/2019
Call Trace:
. . .
Kernel Offset: Ox7a00000 from Oxffffffff81000000 (relocation range: Oxffffffff80000000-Oxffffffffbfffffff)
---[ end Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0) ]---

这是 GRUB 问题(Ubuntu 错误1842320)。

鲁弗斯ISO 模式应该可以工作。它将安装一个可以工作的 GRUB。

如果没有,并且您的机器上已经安装了 GRUB - 启动到您现有的 GRUB(在 HDD 上,而不是 USB 上),按c进入命令提示符并“手动”从 USB 启动:

  1. 找到 UBUNTU 分区

    grub> ls
    (proc) (hd0) (hd0,gpt1) (hd1) . . .
    grub> ls (hd0,gpt1)
            Partition hd0,gpt1: Filesystem type ... - Label 'UBUNTU 22_0' ...
    grub> ls (hd0,gpt1)/
    boot/ boot.catalog casper/ dists/ efi/ install/ md5sum.txt pool/ ubuntu ...
    
  2. 设置rootfs、kernel、initrd并启动内核

    grub> set root=(hd0,gpt1)
    grub> linux /casper/vmlinuz
    grub> initrd /casper/initrd
    grub> boot
    

答案3

我有一台 2019 年末的 Alienware Area 51(DELL)。我也遇到了同样的问题。对我来说,这是一个 BIOS 设置问题。在先进的选项卡中有一个“Intel Software Guard Extensions”(又称“SGX”)的设置,它被设置为“已启用”。当我将其更改为“软件控制”时,一切都按预期运行。

BIOS 截图

答案4

我在使用 Dell Precision 5510 时也遇到了同样的问题。至少在我的例子中,initrd 太大,grub 无法处理。截断值约为 100M。

为了减小尺寸,您可以做以下事情:

  1. /casper/initrd从 USB 介质复制到正在运行的 Ubuntu 机器并将其命名为initrd.1
  2. 解压第一层:mkdir unpack.1 && cpio -D unpack.1 -idv < initrd.1
  3. 记下块数。我的情况是 62。
  4. 删除第一层:dd if=initrd.1 of=initrd.2 skip=62
  5. 解开initrd的第二层:mkdir unpack.2 && cpio -D unpack.2 -idv < initrd.2
  6. 记下块数。在我的例子中是 9004。
  7. 删除第二层:dd if=initrd.2 of=initrd.3 skip=9004
  8. 解压最后一层:mkdir unpack.3 && zstdcat initrd.3 | cpio -D unpack.3 -idv
  9. 删除不需要的模块和固件以unpack.3减小尺寸。我删除了unpack.3/usr/lib/firmware/amdgpu
  10. 重新打包第 3 层:cd unpack.3 && find -print0 | cpio --create --null --format=newc --verbose | zstd > ../initrd.3.new && cd ..
  11. 复制原始的 initramfs 并将 initrd.3.new 写入原始偏移量(在我的情况下为 62 + 9004 = 9066):cp initrd.1{,.new} && dd if=initrd.3.new of=initrd.1.new seek=9066
  12. 使用 fdisk 在您的 USB 驱动器上创建第 4 个分区并将其格式化为 ext4。
  13. 放在initrd.1.new那个分区上。
  14. 从 USB 驱动器启动
  15. 在 Grub 中选择第一个选项并按“e”编辑菜单项
  16. 将该行更改initrd /casper/initrdinitrd (hd0,gpt4)/initrd.1.new(您的系统上的分区标识符可能不同。请先ls (hd0,gpt4)/在 Grub 控制台中使用检查)
  17. 按 F10 启动。

安装完成后,您应该挂载已安装的系统,进入 chroot 并进行设置MODULES=dep/etc/initramfs-tools/initramfs.conf然后运行update-initramfs -u以确保安装的 initrd 保持较小,并且 Grub 能够启动。

相关内容