Normale Dateisystem-Images können einfach eingehängt werden:
mount system.img /mnt
Untersucht und modifiziert. Aber wenn ich das mit einem Himbeer-Pi-System-Image (zB Himbeer) versuche, erhalte ich:
mount: unknown filesystem type '(null)'
Und egal mit was ich es versuche -t
, es wird nicht funktionieren. Wie kann ich dieses Image einbinden?
Antworten:
Diese Frage wird als Teil der Antwort auf andere Fragen beantwortet, verdient jedoch hier eine kanonische Behandlung, sodass sie nicht wiederholt werden muss.
Sie können das Image nicht als Ganzes bereitstellen, da es tatsächlich zwei Partitionen und einen Bootsektor enthält. Sie können jedoch die einzelnen Partitionen im Image mounten, wenn Sie den Versatz in der Datei kennen. Um sie zu finden, untersuchen Sie das Bild als Blockgerät mit
fdisk -l whatever.img
. Die Ausgabe sollte eine Tabelle wie die folgende enthalten:Dies sind die beiden Partitionen. Der erste ist mit "FAT32" und der andere mit "Linux" gekennzeichnet. Über dieser Tabelle befinden sich einige weitere Informationen zum gesamten Gerät, darunter:
Wir können den Versatz in Bytes finden, indem wir diese Einheitsgröße mit dem
Start
Block der Partition multiplizieren :Diese können mit der
offset
Option desmount
Befehls verwendet werden. Wir haben auch einen Hinweis auf den Typ jeder Partition vonfdisk
. Vorausgesetzt, wir haben Verzeichnisse/mnt/img/one
und/mnt/img/two
stehen als Mount-Punkte zur Verfügung:Wenn Sie hier eine Fehlermeldung "Überlappende Schleife" erhalten,
mount
müssen Sie in Ihrer Version von die Größe sowie den Versatz der ersten Partition angeben. Hängen Sie das aus und verwenden Sie die Anzahl der Blöcke (57344) * 512 (= 29360128):Die zweite Partition benötigt kein Größenlimit, da im Image nichts danach steht.
Sie können jetzt auf die beiden Partitionen zugreifen. Wenn Sie daran nichts ändern möchten, verwenden Sie auch den
-r
(schreibgeschützten) Schalter. Wenn Sie etwas ändern, werden diese Änderungen in die.img
Datei aufgenommen.Beachten Sie, dass die erste Partition wahrscheinlich
/boot
in der zweiten Partition gemountet ist, wenn das System ausgeführt wird.quelle
kpartx -a whatever.img
die entsprechenden (Schleifen-) Knoten, die Sie später nach Belieben einbinden können. Führen Siekpartx -d whatever.img
den Befehl aus, um die (nicht bereitgestellten) Schleifenknoten zu löschen.sizelimit
Option an, um "Überlappungsfehler" zu vermeiden . Für weitere Informationen: unix.stackexchange.com/a/342466/9689 . (Übrigens kann die obige Antwort aktualisiert werden, um ein Beispiel für die Verwendung dieser Option bereitzustellen.)$((8192*512))
.losetup
Ermöglicht das Durchsuchen von Partitionen-P
. Dadurch wird das Mounten von Partitionen eines vollständigen Festplatten-Images wie dem Raspbian SD-Karten-Image sehr einfach:quelle
Zuerst benutzte ich awk / grep, um fdisk zu analysieren und Offsets herauszuziehen, fand aber heraus, dass es ein bisschen kompliziert, flippig und später schwer zu verstehen sein könnte. Die einfachste Methode, die ich gefunden habe:
Dies erstellt ein temporäres Verzeichnis für Sie, weist automatisch das nächste Loop-Gerät zu und richtet es für Sie als
p1
undp2
Partitionierungsgeräte ein und hängt Boot und Root ein.Sie können den Bereinigungsteil auch in eine Exit-Falle stellen. Wenn also etwas fehlschlägt, werden keine Mounts / Dateien mehr hängen:
quelle
Falls fdisk -l unter Arch linux mit Sektoren anstelle von Blöcken angezeigt wird ... Eine andere Möglichkeit, die Anzahl der Blöcke im Falle eines "überlappenden Schleifenfehlers" zu ermitteln, besteht darin, den Versatz in Bytes der ersten Partition von der zweiten Partition zu subtrahieren und durch zwei teilen. Zum Beispiel (62914560-4194304) / 2 = 29360128
quelle