J'ai créé une image de ma carte SD Raspberry Pi en utilisant dd
:
sudo dd if=/dev/sdf of=/home/myusername/raspberry-backup-2014-04-10.img
La carte SD comprend deux partitions (une vfat, une ext4) qui sont automatiquement montées lorsque je branche la carte.
Ma question: comment puis-je monter ces partitions à partir du fichier .img?
Plus de détails:
$ fdisk -l raspberry-backup-2014-04-10.img
Disk raspberry-backup-2014-04-10.img: 3974 MB, 3974103040 bytes
255 heads, 63 sectors/track, 483 cylinders, total 7761920 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
Disk identifier: 0x000981cb
Device Boot Start End Blocks Id System
raspberry-backup-2014-04-10.img1 8192 122879 57344 c W95 FAT32 (LBA)
raspberry-backup-2014-04-10.img2 122880 7761919 3819520 83 Linux
wrong fs type, bad option, bad superblock on /dev/loop0, missing codepage or helper program, or other error
pose un problèmesudo fdisk -l /dev/loop0
affirme: Disk / dev / loop0 ne contient pas de table de partition valide.Réponses:
Pour éviter d'avoir à créer des images distinctes pour chaque partition ou à installer un utilitaire comme
kpartx
, vous pouvez monter chaque partition individuellement en spécifiant unoffset
dans lamount
commande.Examinez d'abord les partitions du fichier image et déterminez le décalage en utilisant
fdisk
:Prenez le
Start
secteur de la partition que vous voulez et multipliez cette valeur par laUnits
taille. Donc, si vous voulez la deuxième partition, vous obtiendrez540672 * 512 = 276824064
.Créez maintenant un dossier et montez la partition:
Une fois que vous avez fini de faire ce que vous voulez avec les données de partition:
la source
Après quelques tests supplémentaires, j'ai trouvé la solution moi-même:
kpartx
Cette commande a créé
/dev/mapper/loop0p1
et/dev/mapper/loop0p2
. Ensuite, ces partitions peuvent être montées directement:la source
si votre objectif est d'explorer ou de modifier le contenu d'une partition (système de fichiers), cette ligne de commande montera le système de fichiers du vidage de la carte sd my_sdcard_dump.img dans le répertoire mount_dir .
la source
Traiter une image d'un disque entier avec plusieurs partitions est assez délicat . Linux n'a pas été conçu pour lire une table de partition à partir d'un fichier normal, même lorsqu'il est attaché à un périphérique de bouclage, vous devez donc identifier soigneusement les décalages des partitions et les transmettre à la
mount
commande.Le moyen préférable serait de créer des images distinctes de chaque partition:
Maintenant, vous pouvez facilement traiter ces fichiers comme s'ils étaient des partitions individuelles sur un disque, en les montant comme vous le feriez normalement avec une vraie partition de disque, en les mappant sur un périphérique en boucle . Un périphérique en boucle, ou périphérique en boucle, est un périphérique virtuel qui fournit une couche de traduction pour Linux pour traiter un fichier comme un périphérique bloc (comme un disque ou une partition).
Les périphériques de boucle sont généralement
/dev/loop0
traversés/dev/loop8
. Identifiez un périphérique de boucle inutilisé avec lalosetup
commande:Cette réponse indique un périphérique de boucle non affecté. Nous pouvons maintenant affecter le périphérique de boucle à l'un de nos fichiers image:
L'absence de sortie de cette commande indique le succès. Maintenant,
/dev/loop0
pour la plupart des usages, il est fonctionnellement équivalent à/dev/sdf1
votre carte SD, et vous pouvez la monter comme vous le feriez normalement:Répétez le processus en utilisant un autre périphérique de boucle pour monter l'autre partition. Lorsque vous avez terminé, démontez les systèmes de fichiers et désaffectez les périphériques de boucle:
la source