L'image de la certe peut ensuite etre archivé, et etre utiliser comme 'master'.
'Intelligemment' veut dire que l'on ne va pas dupliquer tout le support physique si ce n'est pas nécessaire.
Étape 1 : Évaluer la taille utile sur la carte micro SD
Depuis le RPi que le font dupliquer taper :# fdisk -l
Disk /dev/mmcblk0: 15.9 GB, 15931539456 bytes, 31116288 sectors
Device Boot Start End Blocks Id System
/dev/mmcblk0p1 2048 616447 307200 c W95 FAT32 (LBA)
/dev/mmcblk0p2 616448 1665023 524288 82 Linux swap
/dev/mmcblk0p3 1665024 5859327 2097152 83 Linux
On voit que le support physique (/dev/mmcblk0) fait 31116288 secteurs (donc ~ 14.8 Go) alors que la dernière partition (/dev/mmcblk0p3) s’arrête au secteur 5859327 (~ 2.8 Go). Il suffit donc de faire une image des 5859328 premiers secteurs. Un secteur faisant 512 octets cela fait 2929664 ko à sauvegarder. Soit encore 183104 x 16 k.
Étape 2 : Créer le fichier image
Depuis une autre machine ayant suffisamment d’espace disque, on peut aller pomper l’image d’un des raspberry du cluster en utilisant dd au travers de ssh :# ssh root@rbpi09 "dd if=/dev/mmcblk0 count=183104 bs=16k" > /tmp/rpi.img
183104+0 records in
183104+0 records out
2999975936 bytes copied, 328.288 s, 9.1 MB/s
Étape 3: Vérifier / retoucher l’image
La commande ‘file’ va indiquer si le fichier est reconnaissable# file rpi.img
rpi.img: x86 boot sector;
partition 1: ID=0xc, starthead 32, startsector 2048, 614400 sectors;
partition 2: ID=0x82, starthead 94, startsector 616448, 1048576 sectors;
partition 3: ID=0x83, starthead 163, startsector 1665024, 4194304 sectors, code offset 0xb8
Avec la commande fdisk -l rpi.img on retrouve les même info.
On peut monter les partitions fat32 et Linux, à condition de donner leur offset de début dans le fichier à l’octet prêt, c’est-à-dire offset = 512 * Secteur de démarrage.
Pour la partition FAT32 offset = 512 * 2048 = 10315776
Pour la partition Linux offset = 512 * 1665024 = 852492288
# mkdir /mount/img
# mount -o loop,offset=852492288 rpi314.img2 /mnt/img
On peut même aller modifier les fichiers dans /mnt/img (pour vider des log par exemple)
On termine par : umount /mnt/img
Si on veut manipuler les partitions (changement de taille, tester le file system) on ne peut pas le faire si le fichier image est montée avec 'mount'. Il faut à la place créer une interface loopback avec la commande 'losetup' :
# losetup -o offset -f --show rpi.img
remplacer offset par l'offset de début de la partition (comme avec mount)
Grace à l'option --show losetup affiche sur quelle interface la partition a été montée. (En général /dev/loop1)
On peut alors utiliser cette interface comme on le fait
# fsk /dev/loop1
e2fsck 1.42.9 (28-Dec-2013)
/dev/loop1: clean, 68537/131072 files, 341154/524288 blocks
Terminer avec ' losetup -D' pour détacher toutes les interfaces loopback.
Le fichier image peut être compressé pour être archivé, ou être utilisé pour créer d'autre cartes micro SD.