我正在尝试将 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 splash
和toram
参数。
将“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