Grub 命令“loopback loop...”在 Ubuntu 19.10 上不起作用

Grub 命令“loopback loop...”在 Ubuntu 19.10 上不起作用

c在启动过程中,我通过按下Grub 菜单进入 grub2 命令行。

当我输入以下命令时......

loopback loop (hd0,gpt2)/ubuntu-19.10-desktop-amd64.iso

...grub 挂起,终端上不再有输出或活动,并且最终笔记本电脑风扇因笔记本电脑变热而旋转起来。

该路径(hd0,gpt2)/ubuntu-19.10-desktop-amd64.iso在我的系统上有效。

无论我使用哪个 ISO,我都会得到相同的结果,并且我已经验证了 ISO 的校验和。

我在 Ubuntu 19.10 中遇到了这个问题,之前的 Ubuntu 版本中没有这个问题。grub2-common我使用的版本是 2.04-1ubuntu12。

如何使loopbackgrub 命令正常工作?(例如,在执行之前我是否需要加载特定模块或输入其他命令loopback?)

(此外,如果您在 19.10 上也遇到此问题,请添加评论;我想确定这是否特定于我的安装,或者这是否是一个更大的问题?)

(请注意,这个问题与关于从磁盘上的 ISO 启动的另一个问题我已经发布过了,但我相信它们有足够的不同,值得单独发布一篇文章)。

答案1

有一个解决方法Ubuntu Bug#1851331...

禁用可信平台管理rmmod tpm通过在 grub 配置文件中添加第一个命令来添加模块。

例如,这是我的/etc/grub.d/40_custom文件...

#!/bin/sh
exec tail -n +3 $0
# This file provides an easy way to add custom menu entries.  Simply type the
# menu entries you want to add after this comment.  Be careful not to change
# the 'exec tail' line above.

menuentry "Install" {
    rmmod tpm
    set isofile="/ubuntu.iso"
    loopback loop (hd0,2)$isofile
    linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=$isofile noprompt noeject
    initrd (loop)/casper/initrd
}

请记住在进行更改后更新 grub。

sudo update-grub

答案2

Grub.cfg 用于循环安装 ISO

if loadfont /boot/grub/font.pf2 ; then
    set gfxmode=auto
    insmod efi_gop
    insmod efi_uga
    insmod gfxterm
    terminal_output gfxterm
fi

set menu_color_normal=white/black
set menu_color_highlight=black/light-gray

set timeout=5

menuentry "ubuntu-19.10-desktop-amd64.iso" {
    set root=(hd0,1)
    set isofile="/isos/ubuntu-19.10-desktop-amd64.iso"
        loopback loop $isofile
        linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=$isofile persistent persistent-path=/persist-1/ splash --
        initrd (loop)/casper/initrd
}
menuentry "lubuntu-16.04.3-desktop-amd64.iso" {
    set root=(hd0,1)
    set isofile="/isos/lubuntu-16.04.3-desktop-amd64.iso"
        loopback loop $isofile
        linux (loop)/casper/vmlinuz.efi boot=casper iso-scan/filename=$isofile persistent persistent-path=/persist-2/ splash --
        initrd (loop)/casper/initrd.lz
}

对我有用的 Grub.cfg 示例。

我刚刚编辑了从 ISO 复制的 grub.cfg。

持久性 USB 无法启动的原因有很多,包括:

  • MD5SUM 错误/ISO 文件损坏

  • grub 中的 ISO 路径不正确

  • 根分区不正确

  • Casper-rw 分区不是 ext 文件系统

  • grub 中的持久路径不正确(如果使用)

  • 重复使用以前版本的 Casper-rw 分区

  • Casper-rw 文件已满

  • 已修改或损坏的 ISO9660 分区

  • vmlinuz 和 initrd 的文件类型不正确(.efi 和 .lz)

  • Grub 菜单项不适合操作系统

  • ISO 文件未完全复制时 USB 被移除

  • BIOS 或 UEFI 启动分区或文件存在问题。

  • USB 未在 grub 中设置为第一个硬盘

  • 闪存驱动器损坏

  • USB 插座损坏

  • 内存不足

  • 不兼容的计算机 CPU

  • 计算机 GPU 不兼容

请让我知道我遗漏的任何原因。

答案3

我认为类似的问题:我使用实时 Ubuntu 作为“瑞士军刀”闪存驱动器和外部 SSD 的基础。一段时间以来,我已经能够循环和启动各种 Linux 和其他 ISO。

如果我使用 19.04 作为基本“安装”——实际上只是将文件复制到闪存中——我可以启动 ISO。如果我使用 19.10,我会遇到黑屏挂起。三指敬礼将重新启动测试笔记本电脑,但 ISO 的实际启动似乎没有继续。

我一直在做的事情的例子: http://www.beezmo.com/geezblog/?p=1955

如果 19.04 是基础,则示例节有效,但如果 19.10 是基础,则无效:

menuentry "Ubuntu 16.10 64-bit Desktop ISO" {
    set isofile="/bootable/iso/ubuntu-16.10-desktop-amd64.iso"
    loopback loop $isofile
    linux (loop)/casper/vmlinuz.efi boot=casper iso-scan/filename=$isofile noeject noprompt splash --
    initrd (loop)/casper/initrd.lz 
}

我会坚持使用 19.04,但从 17.x 开始,如果我启用持久性 snapd,就会烧毁我所有的 CPU 周期并且无法使用。19.10 似乎已经解决了这个问题。

[编辑添加] 我是新来的,还没找到编辑器的使用方法。抱歉格式不对 :(

[进一步编辑以添加] 我想这应该是一条评论,而不是“答案”。我最终会明白的……

答案4

我也无法回送 iso。
我挂载了 iso 并将所有文件和目录复制到 (hd0,gpt7)。
然后重新启动 PC 并在 grub 命令行中输入以下内容。set

root=(hd0,gpt7)
linux /kernel
initrd /initrd.img
boot

成功了!
尽管我无法回送 iso,但我可以像从 iso 启动一样进行启动。

相关内容