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。
如何使loopback
grub 命令正常工作?(例如,在执行之前我是否需要加载特定模块或输入其他命令loopback
?)
(此外,如果您在 19.10 上也遇到此问题,请添加评论;我想确定这是否特定于我的安装,或者这是否是一个更大的问题?)
(请注意,这个问题与关于从磁盘上的 ISO 启动的另一个问题我已经发布过了,但我相信它们有足够的不同,值得单独发布一篇文章)。
答案1
禁用可信平台管理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 启动一样进行启动。