Partitionen aus Image ins Loop mounten

Problem: Es liegt ein unkomprimiertes Image eines Dateisystems vor, aus dem Daten geholt werden sollen. Das Image enthält mehrere Partitionen.

Lösung (alles als root oder jeweils mit sudo):
1) Partitionsgrenzen ermitteln:
sfdisk -d /PFAD/IMAGEDATEI
=> Output z.B. Raspbian Original-Image:
# partition table of /tmp/2015-02-16-raspbian-wheezy.img
unit: sectors

/tmp/2015-02-16-raspbian-wheezy.img1 : start= 8192, size= 114688, Id= c
/tmp/2015-02-16-raspbian-wheezy.img2 : start= 122880, size= 6277120, Id=83
/tmp/2015-02-16-raspbian-wheezy.img3 : start= 0, size= 0, Id= 0
/tmp/2015-02-16-raspbian-wheezy.img4 : start= 0, size= 0, Id= 0

2) Der mount-Befehl ins Loop kennt ein Offset und eine Größenangabe, allerdings in Byte und nicht in Sektoren. Also müssen die Werte von start und size jeweils mit 512 multipliziert werden und dann in den mount-Befehl geschrieben werden.

3) Hier der mount-Befehl ins Loop am Beispiel der 2. Partition von oben:
mount -o loop,offset=62914560,sizelimit=3213885440 /tmp/2015-02-16-raspbian-wheezy.img /mnt
In anderen Fällen halt offset, sizelimit /PFAD/IMAGEDATEI und /MOUNTPOINT anpassen

Warum das Ganze beim Raspbian-Image? Ganz einfach: wenn es eine weitere Partition auf der SD-Karte gibt, z.B. Homes, wäre die nach dem dd-Befehl futsch. So mounte ich die Image-Partitionen ins Loop, mache von dort tar-Dateien mit Option p für die Rechte, und entpacke die tar-Datei dann in die Partition auf der SD-Karte. Homes o.ä. bleibt erhalten, und vergrößern muss man die Partition auch nicht mehr.

Quelle: https://mathias-kettner.de/lw_loop_device_partitionieren.html