Les images de système de fichiers normales peuvent être facilement montées:
mount system.img /mnt
Examiné et modifié. Mais lorsque j'essaie avec une image système Raspberry Pi (par exemple, Raspbian), je reçois:
mount: unknown filesystem type '(null)'
Et peu importe ce que j'essaye -t
, ça ne marchera pas. Comment puis-je monter cette image?
Réponses:
La réponse à cette question fait partie de la réponse à d'autres questions, mais elle mérite ici un traitement canonique, de sorte qu'elle n'a pas à être répétée.
Vous ne pouvez pas monter l'image dans son ensemble car elle contient en fait deux partitions et un secteur de démarrage. Toutefois, vous pouvez monter les partitions individuelles dans l'image si vous connaissez leur décalage dans le fichier. Pour les trouver, examinez l'image en tant que périphérique bloc avec
fdisk -l whatever.img
. La sortie devrait inclure un tableau comme celui-ci:Ce sont les deux partitions. Le premier est intitulé "FAT32" et le second "Linux". Au-dessus de ce tableau, vous trouverez d'autres informations sur le périphérique dans son ensemble, notamment:
Nous pouvons trouver le décalage en octets en multipliant cette taille d'unité par le
Start
bloc de la partition:Ceux-ci peuvent être utilisés avec l'
offset
option de lamount
commande. Nous avons également un indice sur le type de chaque partitionfdisk
. Donc, en supposant que nous ayons des répertoires/mnt/img/one
et/mnt/img/two
disponibles en tant que points de montage:Si vous obtenez une erreur "chevauchement de boucle", votre version de
mount
vous oblige à spécifier la taille ainsi que le décalage de la première partition. Démontez-le et utilisez le nombre de blocs (57344) * 512 (= 29360128):La seconde partition n'a pas besoin de taille car il n'y a rien après l'image.
Vous pouvez maintenant accéder aux deux partitions. Si vous ne souhaitez rien y changer, utilisez également le
-r
commutateur (lecture seule). Si vous changez quoi que ce soit, ces modifications seront incluses dans le.img
fichier.Notez que la première partition est probablement montée
/boot
dans la seconde partition lorsque le système est en cours d'exécution.la source
kpartx -a whatever.img
crée les nœuds (boucles) appropriés, que vous pouvez ensuite monter à volonté. Exécuterkpartx -d whatever.img
pour supprimer les nœuds de boucle (non montés).sizelimit
option. Pour plus d'informations: unix.stackexchange.com/a/342466/9689 . (La réponse ci-dessus peut être mise à jour pour fournir un exemple d'utilisation de cette option)$((8192*512))
.losetup
fournit une partition explorant à travers-P
. Cela facilite le montage de partitions d'une image disque complète telle que l'image de la carte SD Raspbian:la source
Au début, j’utilisais awk / grep pour analyser fdisk et extraire les décalages, mais j’ai trouvé que cela pouvait être un peu compliqué, floconneux et difficile à comprendre plus tard. La méthode la plus simple que j'ai trouvée:
Cela crée un répertoire temporaire pour vous, affecte automatiquement le périphérique de boucle suivant, le configure pour vous en tant
p1
quep2
périphériques de partition et vous permet de monter les bases de démarrage et racine.Vous pouvez également placer la partie nettoyage dans un piège de sortie. Ainsi, en cas d'échec, vous n'aurez plus de fichiers / montages pendants:
la source
Dans le cas où fdisk -l apparaît avec des secteurs au lieu de blocs sur Arch linux ... Un autre moyen de déterminer le nombre de blocs en cas "d'erreur de boucle de recouvrement" consiste à soustraire le décalage en octets de la première partition de la deuxième partition. et diviser par deux. Par exemple (62914560-4194304) / 2 = 29360128
la source