J'ai une image de l'intégralité du disque créée à l'aide de dd . La structure du disque suit:
kent@cow:~$ Sudo fdisk -l
Disk /dev/sda: 750.1 GB, 750156374016 bytes
255 heads, 63 sectors/track, 91201 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x000b8508
Device Boot Start End Blocks Id System
/dev/sda1 * 5 90872 729929303+ 83 Linux
/dev/sda2 90873 91201 2642692+ 5 Extended
/dev/sda5 90873 91201 2642661 82 Linux swap / Solaris
L'image a été créée en utilisant:
dd if=/dev/sda of=image750.img
Comment pourrais-je, si cela est possible, monter/dev/sda1 à partir de l'image pour pouvoir en lire le contenu?
Ce n'est pas une option pour cloner à nouveau le disque dur, je sais comment le faire si je n'avais cloné que la partition unique. J'espère que c'est toujours possible avec l'image actuelle.
De nos jours, il existe un meilleur moyen, plus besoin d'utiliser des compensations ou kpartx:
losetup --partscan --find --show disk.img
mount /dev/loop0p1 /mnt
pour libérer loop0, utilisez après umount:
losetup -d /dev/loop0
J'ai rencontré ce problème aujourd'hui et je voulais mettre à jour les réponses comme un rappel pour moi-même. Au lieu de calculer vous-même le décalage, vous pouvez utiliser un outil qui vous fournit des périphériques montables à partir d'une image dd: kpartx
http://robert.penz.name/73/kpartx-a-tool-for-mounting-partitions-within-an-image-file/
http://linux.die.net/man/8/kpartx
Dans le cas donné, il faudrait quelque chose comme
Sudo kpartx -a image750.img
Sudo mount /dev/mapper/loop1p1 /mount/point -o loop,ro
où loop1p1 représente la première partition, loop1p2 la seconde, etc.
Vous avez la première partie: fdisk -l pour trouver le décalage de départ. Prenez ce nombre, multipliez-le par 512, et vous obtiendrez l'option offset à monter. Donc, pour sda1 dans votre cas, 5 * 512 = 2560. Exécutez ensuite le montage:
mount -o loop,offset=2560 -t auto /path/to/image.dd /mount/point
Le montage en boucle n'est qu'une partie de la réponse.
Consultez http://wiki.edseek.com/guide:mount_loopback#accessing_specific_partitions_in_the_image pour obtenir de l'aide sur la spécification de la partition. Je pense la boucle mount -o, offset = 32256 /path/to/image750.img/mnt fonctionnera pour vous. mais vous devriez vraiment lire le tutoriel mentionné.
losetup -P
automation
Méthode mentionnée par https://superuser.com/a/684707/128124 (ajouté dans util-linux v2.21, ajouté Ubuntu 16.04), ici sont des fonctions pour l'automatiser plus loin. Usage:
$ los my.img
/dev/loop0
/mnt/loop0p1
/mnt/loop0p2
$ ls /mnt/loop0p1
/whatever
/files
/youhave
/there
$ Sudo losetup -l
NAME SIZELIMIT OFFSET AUTOCLEAR RO BACK-FILE DIO
/dev/loop1 0 0 0 0 /full/path/to/my.img
$ # Cleanup.
$ losd 0
$ ls /mnt/loop0p1
$ ls /dev | grep loop0
loop0
La source:
los() (
img="$1"
dev="$(Sudo losetup --show -f -P "$img")"
echo "$dev"
for part in "$dev"?*; do
if [ "$part" = "${dev}p*" ]; then
part="${dev}"
fi
dst="/mnt/$(basename "$part")"
echo "$dst"
Sudo mkdir -p "$dst"
Sudo mount "$part" "$dst"
done
)
losd() (
dev="/dev/loop$1"
for part in "$dev"?*; do
if [ "$part" = "${dev}p*" ]; then
part="${dev}"
fi
dst="/mnt/$(basename "$part")"
Sudo umount "$dst"
done
Sudo losetup -d "$dev"
)
module de boucle max_part config
Méthode décente avant util-linux v2.21.
loop
est un module de noyau, intégré au noyau dans Ubuntu 14.04.
Si vous le configurez correctement, Linux divise automatiquement les périphériques pour vous.
cat /sys/module/loop/parameters/max_part
dit combien de partitions loop
périphériques peuvent générer.
Il s'agit de 0
par défaut sur Ubuntu 14.04, raison pour laquelle aucune division automatique n'a lieu.
Pour le changer, on peut soit ajouter:
options loop max_part=31
dans un fichier dans /etc/modprobe
, ou:
GRUB_CMDLINE_LINUX="loop.max_part=31"
à /etc/default/grub
et ensuite Sudo update-grub
.
La manière de définir un paramètre de module est également abordée à l'adresse suivante: https://askubuntu.com/questions/51226/how-to-add-kernel-module-parameters
Après un redémarrage, quand vous faites:
Sudo losetup -f --show my.img
il monte l'image sur un périphérique /dev/loopX
et monte automatiquement les partitions sur des périphériques /dev/loopXpY
.
C'est donc la méthode la plus pratique si vous souhaitez redémarrer.
Voir aussi
Je crois que le montage en boucle est la réponse -
Sudo mkdir /path/to/dir/
mount -o loop example.img /path/to/dir/
Ce qui précède devrait le monter sous ce répertoire.
Cela devrait le démonter:
umount /path/to/dir
Si vous avez un système de fichiers en mode utilisateur tel que Fuse, dans les environnements de bureau, comme Gnome et un outil installé tel que gnome-disk-image-mounter, installez-le sans même root par clic droit et ouvrez avec.