Création et restauration de disques virtuels à partir de cartes SD Raspberry Pi sur PC Linux
Mise à jour : Debian 11.1
Ce document décrit comment créer et restaurer, à l'aide de la commande dd, une image disque à partir d'une carte SD Raspberry Pi, sur un PC linux.
Sommaire
1 - Création d'une image disque
1.1 - Image de même taille que le disque
Relever la taille du disque source et l'arrondir à une valeur entière, ici 15GiB
$ sudo fdisk -l /dev/mmcblk0 |grep Disque Disque /dev/mmcblk0: 14,65 GiB, 15728640000 octets , 30720000 secteurs
La commande suivante crée une image BU.img de la carte SD /dev/mmcblk0, avec un suivi de l'avancement à l'aide de la command pv
$ sudo dd if=/dev/mmcblk0 bs=4M \ |pv -s 15G \ |dd of=BU.img conv=fsync iflag=fullblock
Options de la commande dd
bs=4M - Taille du bloc de lecture et écriture
conv=fsync - Écrire toutes les données, y compris les métadonnées, en sortie avant de terminer la commande
iflag=fullblock - Lire un bloc entier avant de le transmettre les blocs de données entiers
Options de la commande pv
-s SIZE taille des données à transmettre en puissance de 2**10, avec symbole d'unité K,M,G ..., SIZE doit-être une valeur entière
1.2 - Image de taille réduite à la taille utile
$ sudo parted /dev/mmcblk0 unit MiB print |tail -4 Number Start End Size Type File system Flags 1 4,00MiB 260MiB 256MiB primary fat32 lba 2 260MiB 14305MiB 14045MiB primary ext4
Lancer la création d'une image de taille 14306 MiB
$ sudo dd if=/dev/mmcblk0 bs=1MiB count=14306 of=BU.img status=progress conv=fsync iflag=fullblock oflag=direct
2 - Restauration d'une image disque
La restauration s'effectue sur un périphérique de stockage dédié, toutes les données présentes sur le périphérique seront écrasées
Le périphérique cible doit impérativement être de taille supérieure ou égale à l'image
$ sudo fdisk -l BU.img |grep Disque Disque BU.img : 14 GiB , 15032385536 octets, 29360128 secteurs
$ sudo fdisk -l /dev/mmcblk0 |grep Disque Disque /dev/mmcblk0 : 119,08 GiB , 127865454592 octets, 249737216 secteurs
Lancer la commande dd en inversant la source et la destination permet de restaurer le contenu de la carte SD. La taille de la carte SD réceptrice doit-être au moins égale à celle de l'image (et de la carte d'origine)
$ sudo dd if=BU.img bs=4MiB |pv -s 120G |dd of=/dev/mmcblk0 conv=fsync iflag=fullblock oflag=direct