¿Cómo crear una imagen de disco de una máquina Linux con varias particiones?

¿Cómo crear una imagen de disco de una máquina Linux con varias particiones?

Estoy intentando crear archivos de imagen de disco en todas las unidades de una máquina Linux remota que aloja nuestra unidad compartida usando dd. Cuando lo ejecuto df -h --totalmuestra varias particiones. Tengo un par de preguntas:

  1. ¿Están los archivos azules debajo de particiones adicionales?
  2. ¿Qué significa la sintaxis [archivo] -> [archivo]?
  3. ¿Es posible crear una única imagen de disco para todas las particiones usando dd? ¿Si es así, cómo?

ingrese la descripción de la imagen aquí

Aquí están los detalles sobre los archivos dm-[]:

ingrese la descripción de la imagen aquí

Contexto: estoy intentando convertir esta máquina CentOS en una máquina virtual Hyper-V. He convertido con éxito una máquina Linux de partición única al convertir el archivo .img creado con el ddcomando a .vmdk (usando VBoxManage.exe) y luego a .vhd (usando VBoxManage.exe nuevamente). Arrancó en Hyper-V sin problemas. También se agradecería cualquier idea sobre cómo convertir máquinas Linux P2V a Hyper-V.

Respuesta1

Actualmente estoy usando esto para una imagen de tarjeta SD de Linux de 3 particiones. Supongo que puedes traducirlo a tu propia situación:

export VERSION=3.4.113
export ARMBIAN_BUILD=~/Armbian/build-$VERSION

dd if=/dev/zero of=sd.img bs=1M count=256

# Do the bootloader thing. Put the file from position 8192 bytes into the image
echo Copying bootloader
sudo dd if=ext/u-boot.bin of=sd.img bs=1k seek=8 conv=notrunc

(
echo n
echo p
echo 1
echo
echo +50M
echo n
echo p
echo 2
echo
echo +150M
echo n
echo p
echo
echo
echo
echo t
echo 1
echo b
echo t
echo 3
echo b
echo a
echo 1
echo w
) | fdisk sd.img > /dev/null

sleep 1

export start0=`echo p | sudo fdisk sd.img | grep sd.img1 | awk ' { print $3 } '`
export end0=`echo p | sudo fdisk sd.img | grep sd.img1 | awk ' { print $4 } '`
export start1=`echo p | sudo fdisk sd.img | grep sd.img2 | awk ' { print $2 } '`
export end1=`echo p | sudo fdisk sd.img | grep sd.img2 | awk ' { print $3 } '`
export start2=`echo p | sudo fdisk sd.img | grep sd.img3 | awk ' { print $2 } '`
export end2=`echo p | sudo fdisk sd.img | grep sd.img3 | awk ' { print $3 } '`

mkdir -p mnt
mkdir -p mnt/boot
mkdir -p mnt/rootfs
mkdir -p mnt/media

echo Creating boot partition from $start0 to $end0
export sectors0=`expr $end0 - $start0`
export size0=`expr $sectors0 \* 512`
export offset0=`expr $start0 \* 512`
sudo losetup -d /dev/loop0 > /dev/null 2>&1
sudo losetup /dev/loop0 sd.img -o $offset0 --sizelimit $size0
sudo mkfs.vfat /dev/loop0
sudo mount /dev/loop0 mnt/boot

echo Creating rootfs partition from $start0 to $end0
export sectors1=`expr $end1 - $start1`
export size1=`expr $sectors1 \* 512`
export offset1=`expr $start1 \* 512`
sudo losetup -d /dev/loop1 > /dev/null 2>&1
sudo losetup /dev/loop1 sd.img -o $offset1 --sizelimit $size1
sudo mkfs.ext2 /dev/loop1
sudo mount /dev/loop1 mnt/rootfs

echo Creating media partition from $start0 to $end0
sudo losetup -d /dev/loop2 > /dev/null 2>&1
export sectors2=`expr $end2 - $start2`
export size2=`expr $sectors2 \* 512`
export offset2=`expr $start2 \* 512`
sudo losetup /dev/loop2 sd.img -o $offset2 --sizelimit $size2
sudo mkfs.vfat /dev/loop2
sudo mount /dev/loop2 mnt/media

información relacionada