Grub2 | 无法找到 iso 文件

Grub2 | 无法找到 iso 文件

我正在尝试将 Ubuntu 20.04.4 ISO 添加到 Grub2,但它说找不到 ISO 文件。我目前正在运行 Debian 11 32 位 - 我的电脑有点奇怪,BIOS 是 32 位,但 CPU 支持 64 位操作系统(感谢 Baytrail CPU 让它变得复杂)。此外,我确实将 Debian 11 32 位附带的 GrubV1 更新为 GrubV2。

我目前已将文件保存到/home/username/Downloads/ubuntu_20.04.4(我简化了文件名 - 它是 64 位)。

这是我的/etc/grub.d/40_custom菜单项

menuentry 'Ubuntu Live Persistent'  {
   set isofile="/home/username/Downloads/ubuntu_20.04.4.iso"
   loopback loop (hd0,1)$isofile
   linux  (loop)/casper/vmlinuz boot=casper iso-scan/filename=$isofile persistent noprompt noeject
   initrd (loop)/casper/initrd.lz
}

我从一些 Ubuntu 论坛帖子中拼凑出关于制作实时持久菜单条目的内容。

我仔细检查了一下,发现我的 mmcblk1p1 驱动器被列为 hd0,1 - 而且我之前遇到的与不存在的 hdX,Y 相关的错误也不再存在。此外,我的 mmcblk1p1 是 gparted 中列出的第一个包含我的分区的分区/boot/efi/

我不确定还能做些什么才能让它使用 Grub2 启动。我只需要一些不支持 32 位的程序,所以我试图让它成为一个实时持久的操作系统,以便在我需要这些特定程序时使用。如果您知道哪里出了问题或需要更改什么,请告诉我。我已经这样做了几个星期,这让我发疯了。

如果你需要的话,这是我的电脑:Asus T200TA-C2-BL

如果我可以给您提供更多信息,请告诉我,我对 Linux 还不熟悉,我收集的信息对我来说仍然很新。

编辑:这是我在 GrubV2 中的错误

error: file '/home/username/Downloads/ubuntu_20.04.4.iso' not found 
error: no server is specified 
error: you need to load the kernel first

isofile编辑#2,我修复了某人指出的大写字母,但仍然没有修复它。

答案1

将 .iso 放在/(根)分区中。

将其添加到您的grub.cfg

menuentry "Ubuntu" {
insmod ext2
set isofile="/ubuntu-20.04.4.0_.iso"
loopback loop (hd0,7)$isofile
linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=$isofile noprompt noeject quiet splash toram
initrd (loop)/casper/initrd
}

以 root 身份执行此操作并保存文件。确保 .iso 的名称相同。请注意,我没有尝试添加该persistent部分。您可以尝试添加该参数。当然,您可以省略quiet splashtoram参数。

将“7”替换hd0,7为您的分区的编号。

答案2

当 iso 文件位于我的 $HOME 中时,我从来无法制作通过 debian 中的 grub 启动的 iso。

我将我的 iso 放在 /boot 下的文件夹中。请根据您的情况进行调整(如 isoname aso)。

# ubuntu-20.10 (gorilla) iso integrieren.

#!/bin/sh -e
export ISOFILE="/boot/ubuntu-gorilla/ubuntu-20.10-desktop-amd64.iso"
echo "Found ubuntu-20.10.iso" >&2

cat << EOF
menuentry "ubuntu-20.10" {
    load_video
    insmod loopback
    insmod iso9660
    insmod part_msdos
    insmod part_gpt
    insmod ext2
    insmod ntfs
    insmod btrfs
    search -n -f --set=root ${ISOFILE}
    loopback loop ${ISOFILE}
    echo 'Loading Linux linux ...'
    linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=${ISOFILE} noprompt noeject setxkbmap=de
    echo 'Loading initial ramdisk ...'
    initrd (loop)/casper/initrd
    }
EOF
exit 0

大猩猩 isoboot

相关内容