Inicializando um arquivo de imagem EXT4 do GRUB2

Inicializando um arquivo de imagem EXT4 do GRUB2

Minha amiga precisava de um HDD rápido, então dei a ela meu pequeno SDD de 64 GB. Este SSD teve meu Linux instalado nele. Usei o dd para fazer uma imagem da partição (boot, root e home em uma partição).

Esta partição agora está em uma unidade formatada EXT4 tradicional de 500 GB.

Existe alguma maneira de fazer o GRUB inicializar usando este arquivo .img que tenho? Não estou recuperando meu SSD e não posso me dar ao trabalho de configurar minha instalação do Linux do zero. Encontrei suporte a loopback no GRUB para imagens ISO. Isso também suporta EXT4? Não consigo encontrar nada específico e não quero jogar nada no lixo.

Saúde.

Responder1

mesmo que o arquivo contenha a tabela de partição, o grub2 pode inicializar a partir de onde (hd0,1) é o local do arquivo e (loop,1) é a partição dentro do arquivo. entretanto, isso inicializará apenas 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 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 codificar, basta usar os vars da entrada 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

informação relacionada