mesmo se o arquivo contiver a tabela de partições grub2 pode, entretanto, inicializar a partir de, onde (hd0,1) é a localização do arquivo e (loop, 1) é a partição dentro do arquivo. no entanto, isso só inicializará o initramfs, o arquivo não está realmente montado.
/etc/grub.d/40_custom
menuentry "My bootable disk image" {
set isofile="hdd_ext4.img"
loopback loop (hd0,1)/${isofile}
linux (loop,1)/boot/vmlinuz-3.16.0-4-amd64 root=/dev/sda1 loop=/${isofile} ro
initrd (loop,1)/boot/initrd.img-3.16.0-4-amd64
}
escreva seu próprio script de montagem, chmod a + x e copie para a pasta local-premount. use o initramfs-tools para criar seu próprio "initrd.img-3.16.0-4-amd64" e copie-o dentro do arquivo de imagem. não há necessidade de código rígido apenas use as vars da entrada do grub $ {ROOT} e $ {loop} dentro do script.
/ etc / initramfs-tools / scripts / local-premount
#!/bin/sh
modprobe loop
modprobe ext4
# mount /dev/sda1 (file location)
mkdir /host
mount -n -t ext4 -o rw,data=ordered ${ROOT} /host
# kpartx add partition devmappings for hdd_ext4.img
loop_pt=$(kpartx -av /host${loop} 2>&1 | grep loop | cut -f3 -d" ")
# mount hdd_ext4.img (image file)
mount -n -t ext4 -o loop,rw,data=ordered /dev/mapper/${loop_pt} ${rootmnt}
Nota: isso só funcionará se o kpartx estiver instalado no initramfs