请注意:我阅读了这里所有关于使用 GRUB2 从分区启动 ISO 的帖子,并基于此尝试了以下操作,但不起作用:
我有这些分区,并且我想从中启动 ISO——/dev/sda5
应该是(hda0,5)
GRUB 术语。
root@myhost:/home/vyom# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 30G 0 disk
`-sda1 8:1 0 243M 0 part [SWAP]
`-sda2 8:2 0 11.2G 0 part /
`-sda3 8:3 0 1K 0 part
`-sda5 8:5 0 9.3G 0 part /mypart5 <<<
`-sda6 8:6 0 9.3G 0 part /mypart6
root@myhost:/home/vyom# blkid
/dev/sda1: UUID="79813f4a-85da-4c81-a044-097922b30648" TYPE="swap"
/dev/sda2: UUID="68923f34-385e-4740-b8af-4502aa3dd847" TYPE="ext4"
/dev/sda5: UUID="ef7ca072-bfc9-457b-8a9e-b923fa0d3fe7" TYPE="ext4" <<<
/dev/sda6: UUID="d8bd9333-dc41-47b3-8a42-f6c308a6f047" TYPE="ext4"
我尝试使用 UUID,--fs-uuid
但fromiso=
没有效果:
menuentry 'UbuntuBionicVSCustom4' --class ubuntu --class gnu-linux --class gnu --class os {
set isofile="/mypart5/ubuntu-18.04-3f8806d-test2.iso"
insmod ext2
insmod loopback
insmod iso9660
loopback loop (hd0,5)$isofile
search --no-floppy --fs-uuid --set=root ef7ca072-bfc9-457b-8a9e-b923fa0d3fe7
linux (loop)/install/vmlinuz boot=install fromiso=/dev/sda5/$isofile noprompt noeject
initrd (loop)/install/initrd.gz
}
我尝试了--file
以下选项search
- 但也没有用:
menuentry 'UbuntuBionicVSCustom3' --class ubuntu --class gnu-linux --class gnu --class os {
set isofile="/mypart5/versa-flexvnf-3f8806d-21.2.1-B-S.iso"
insmod ext2
insmod part_msdos
insmod lvm
insmod loopback
insmod iso9660
search --file --no-floppy --set=root "${isofile}"
loopback loop "(${root})${isofile}"
linux (loop)/install/vmlinuz boot=install findiso="${isofile}" noprompt noeject
initrd (loop)/install/initrd.gz
}
ISO 文件实际上位于:/mypart5/ubuntu-18.04-3f8806d-test2.iso
那么我应该这样做:
set isofile="/mypart5/ubuntu-18.04-3f8806d-test2.iso"
要不就:
set isofile="ubuntu-18.04-3f8806d-test2.iso"
因此,接下来我可以这样做:
loopback loop (hd0,5)$isofile
另外,我对内核命令行选项感到困惑,我应该使用:
fromiso=/dev/sda5/$isofile
或者
findiso="${isofile}"
或者
iso-scan/filename=${isofile}
或者
isoloop=/${isofile}
我无法让 GRUB 真正从安装在 上的分区 /dev/sda5 中选择文件/mypart5
。我得到"error: no such device"
或unknown filesystem
。请帮助我解决我在这里遗漏了什么!
答案1
尝试这个:
menuentry 'UbuntuBionicVSCustom3' {
set root='hd0,5'
set isofile=/ubuntu-18.04-3f8806d-test2.iso
loopback loop $isofile
linux (loop)/install/vmlinuz boot=install iso-scan/filename="${isofile}" noprompt noeject
initrd (loop)/install/initrd.gz
}