Wie erstelle ich ein Disk-Image einer Linux-Maschine mit mehreren Partitionen?

Wie erstelle ich ein Disk-Image einer Linux-Maschine mit mehreren Partitionen?

Ich versuche, Disk-Image-Dateien für alle Laufwerke eines Remote-Linux-Rechners zu erstellen, der unser freigegebenes Laufwerk hostet dd. Beim Ausführen df -h --totalwerden mehrere Partitionen angezeigt. Ich habe ein paar Fragen:

  1. Befinden sich die blauen Dateien unter zusätzlichen Partitionen?
  2. Was bedeutet die Syntax [Datei] -> [Datei]?
  3. Ist es möglich, mit ein einzelnes Disk-Image für alle Partitionen zu erstellen dd? Und wenn ja, wie?

Bildbeschreibung hier eingeben

Hier sind die Details zu den dm-[]-Dateien:

Bildbeschreibung hier eingeben

Kontext: Ich versuche, diese CentOS-Maschine in eine Hyper-V-VM zu konvertieren. Ich habe eine Linux-Maschine mit einer einzigen Partition erfolgreich konvertiert, indem ich die mit dem ddBefehl erstellte IMG-Datei in eine VMDK-Datei (mit VBoxManage.exe) und dann in eine VHD-Datei (erneut mit VBoxManage.exe) konvertiert habe. Der Start in Hyper-V verlief problemlos. Ich wäre auch für alle Hinweise dankbar, wie man Linux-Maschinen per P2V in Hyper-V konvertiert.

Antwort1

Ich verwende dies derzeit für ein Linux-SD-Karten-Image mit 3 Partitionen. Ich denke, Sie können es auf Ihre eigene Situation übertragen:

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

verwandte Informationen