我怎样才能找到Grub用于引导的驱动器名称?

第一次在这里提问(非常喜欢这个论坛,经常使用)。 请原谅我对正在发生的事情解释得不好。
我正在尝试从硬盘引导Ubuntu ISO。我遇到了一些问题,无法找到驱动器名称(例如/dev/nvme0n1)用于grub(例如hd0,5)。我有1个NVMe和2个内部驱动器以及2个外部驱动器。 我还在我的NVMe上双启动了Windows和Mint。
所以我的问题是: 如何找到grub用于引导的驱动器名称?我查看了/boot/grub/grub.cfg中的配置文件,并找到了我的引导项,但似乎找不到它们使用的驱动器名称或分区名称。
我正在编辑/etc/grub.d中的文件40_custom,并添加以下内容:
# Ubuntu
menuentry 'Ubuntu ISO' {
set isofile='/home/user/Downloads/ubuntu-19.iso'
loopback loop (hd0,5)$isofile
linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=${isofile} quiet splash
initrd (loop)/casper/initrd.lz
}

我不确定在驱动器名称(hd0,5)的位置上放什么,以便将grub指向我/home/user/Downloads文件夹中的ISO文件?
提前感谢!这个社区真是太棒了!

2我经常需要进行实验。如果我插入了一个闪存驱动器,它会改变驱动器顺序。您可以在grub中使用c命令行查看驱动器,然后在各个分区中搜索您知道的文件:ls以查看驱动器和分区,然后ls(hd0,5)/或您想要的任何内容。由于内核尚未加载,因此/home/$USER尚不存在,不确定路径是否正确。我通常有很多ISO,所以使用单独的分区。您还可以将ISO放在/boot中,因为这是grub中挂载的路径。https://help.ubuntu.com/community/Grub2/ISOBoot - oldfred
1我只能在.iso文件与/不在同一物理设备上时才能使其正常工作。 - Organic Marble
1个回答

我发现最简单的方法是直接启动到GRUB,使用F2进入终端,然后按下Tab让自动补全告诉我需要知道的内容。请注意,你需要按下e进入编辑模式才能使F2起作用。

示例:

grub> ls
(hd0,msdos1) (hd0,msdos2)
grub> ls (hd0,msdos2)/home/
user1/ user2/

为了完整起见,我将包括一条目前在我的机器上正常工作的条目:
menuentry "Recovery"{
        set isofile='/iso/linuxmint-19.3-cinnamon-64bit.iso'
        loopback loop (hd0,msdos6)${isofile}
        linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=${isofile} quiet splash
        initrd (loop)/casper/initrd.lz
}