如何使用 grub 和 Ubuntu 22.04 从 Iso 文件启动?

如何使用 grub 和 Ubuntu 22.04 从 Iso 文件启动?

我知道我的问题有很多评论。但我读了很多帖子,却没有一个能真正澄清我的问题。但也可能是我没有正确理解这个主题。

我的系统上有 4 个 SSD

/dev/nvme0n1
    ...
    /dev/nvme0n1p5 reserved for ISO Files (UUID = 2E644A863FF78FC1)
    ...
    /dev/nvme0n1p8 Ubuntu 22.04 (UUID = 84a89553-b126-40fd-9eed-36cca355fce8)

/dev/sda » data disk
/dev/sdb » data disk
/dev/sdc » data disk

在 Grub 中我有这个代码来加载我的 iso 文件

insmod ntfs
GRUB_DEVICE_UUID=2E644A863FF78FC1
set isofile="clonezilla-live-2022-06-20-jammy-x64.iso"
loopback loop $isofile
linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=$isofile noeject noprompt splash --
initrd (loop)/casper/initrd.lz

在启动时选择 ISO 文件后,我收到错误

Invalid file name clonezilla-live-2022-06-20-jammy-x64.iso
No Server specific
You need to load the kernel first

我做错了什么 ?

答案1

这是您需要的 grub.cfg 部分的副本:

### BEGIN /etc/grub.d/40_custom ###
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 "Peppermint-10" {
set isofile="/Peppermint-10-20191210-amd64.iso"
loopback loop (/dev/nvme0np7)$isofile
linux (loop)/casper/vmlinux boot=casper iso-scan/filename=/Peppermint-10-20191210-amd64.iso noprompt noeject quit splash
initrd (loop)/casper/initrd.lz
}
### END /etc/grub.d/40_custom ###



将 menuentry 替换为您的。
将 partitionnumber 替换为您的。
将 .iso 的名称替换为您的 .iso 的确切名称。
该文件必须放在分区的根目录中(例如 nvme0np3/blah blah.iso)。

答案2

不幸的是,并非所有技巧都能立即奏效。Casper 仅当此文件夹及其文件也位于 ISO 上时才有效。作为初学者,您很快就会忽视这一点。LIVE 和 EFI 也是如此。

为了获得正确的 hd 和 gpt 设置,重新启动系统更有意义。在 Grub 中打开输入提示并运行简单的“ls”。

我还没有管理过 Windows 本身,但我认为这也不可能。因为 Windows 安装程序即使在重新启动后也需要访问文件。在这种情况下,grub 不会预安装 ISO,Windows 安装程序将失去继续安装的能力。

例如,启动 Kubuntu 22 ISO。但是,我能够成功使用此过程:

set iso="/kubuntu-22.04-desktop-amd64.iso"
insmod ext2
insmod loopback
insmod iso9660
loopback loop (hd3,gpt5)$iso
linux (loop)/casper/vmlinuz  file=(loop)/preseed/kubuntu.seed noprompt boot=casper persistent iso-scan/filename=$iso quiet splash --
initrd (loop)/casper/initrd

GParted 和 Clonezilla 可以使用以下命令启动:

set iso="/gparted-live-1.4.0-5-amd64.iso"
loopback loop (hd3,gpt5)$iso
linuxefi (loop)/live/vmlinuz boot=live components config findiso=$iso ip=frommedia toram=filesystem.squashfs union=overlay
initrdefi (loop)/live/initrd.img

启动任何 ISO 的另一种方法是将 Ventoy 安装在硬盘上。虽然它最初是为移动数据载体设计的,但它也可以集成到本地 HDD/SSD 驱动器中。

相关内容