Les fichiers img
sont des images disques que l’on peut monter sur un système Linux pour les lire, mais il est également possible de modifier le contenu.
sudo mkdir -vp "/media/${USER}/LOOP_SD"
sudo mount -t auto -o loop /CHEMIN/SD.img "/media/${USER}/LOOP_SD"
Effectuer vos modifications et pensez à démonter ce média :
sudo umount "/media/${USER}/LOOP_SD"
Cependant, il y a un cas plus délicat, il s’agit des fichiers img
contenant plusieurs partitions.
La première étape consiste à comprendre la géométrie de ce “disque virtuel“ à l’aide de la commande fdisk
:
fdisk -lu /CHEMIN/SD.img
Ce qui vous donnera quelque chose comme :
Disk /CHEMIN/SD.img: 22,73 GiB, 24389877760 bytes, 47636480 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x156cf9e5
Device Boot Start End Sectors Size Id Type
/CHEMIN/SD.img1 8192 532479 524288 256M c W95 FAT32 (LBA)
/CHEMIN/SD.img2 532480 47636479 47104000 22,5G 83 Linux
Les valeurs importantes ici sont :
- La taille des secteurs : 512 octets
- La position de démarrage de la partition : 8192 pour la première partition et 532480 pour la seconde.
Ensuite pour monter la partition vous devrez calculer la position en octets du début de la partition en multipliant le numéro de secteur du début de la partition par la taille des secteurs.
Ce qui se fait comme suit :
sudo mount -t auto -o loop,offset=$((START_SECTOR*SECTOR_SIZE)) FICHIER_IMAGE DOSSIER_DE_MONTAGE
Et concrètement vous devrez écrire quelque chose comme cela :
sudo mkdir -vp "/media/${USER}/LOOP_SD"
sudo mount -t auto -o loop,offset=$((532480*512)) /CHEMIN/SD.img "/media/${USER}/LOOP_SD"
Vous pouvez aller faire vos modifications dans arborescence : /media/${USER}/LOOP_SD
et vous devrez ensuite démonter la partition à l’aide de :
sudo umount "/media/${USER}/LOOP_SD"
Références
ᦿ