Partition eines Festplattenimage mounten: Unterschied zwischen den Versionen

Aus Linupedia.org
Wechseln zu: Navigation, Suche
(Übertrag aus Forum)
 
K
Zeile 104: Zeile 104:
  
 
----
 
----
<!-- Mit freundlicher Genehmigung von [[Benutzer:haveaniceday|haveaniceday]] ->
+
<!-- Mit freundlicher Genehmigung von [[Benutzer:haveaniceday|haveaniceday]] -->
 
[[Partition|zurück zu Partition]]
 
[[Partition|zurück zu Partition]]
 
[[Category:Konsole]]
 
[[Category:Konsole]]
 
[[Category:Partition]]
 
[[Category:Partition]]
 
[[Category:Scripte]]
 
[[Category:Scripte]]

Version vom 6. Dezember 2007, 03:32 Uhr

Partition eines Festplattenimage mounten

Wer sich von Festplatten oder partitionierten Wechseltatenträgern Image erstellt, kann eventuell einmal in die Verlegenheit kommen, dass er einige Daten eines der Filesysteme dieses Image benötigt. Nun müsste man ja das Image erst wieder komplett zurück auf eine Platte schreiben, und dann erst könnte man die entsprechende Partition mounten. Wenn es sich nicht um ein komprimiertes Image handelt, ist es aber auch möglich über ein Loop-Device und speziellen Optionen von mount einzelne Partitionen innerhalb eines Image selbst zu mounten. (Ein komprimiertes Image müsste dazu erst wieder dekomprimiert werden.) Man benötigt dazu einen so genannten Offset-Wert als Mountoption. Dieser Wert gibt an, ab welcher Position im Image sich der Beginn dieser Partition befindet. Ermitteln kann man diesen Offset mit Hilfe der Partitionstabelle die man mit fdisk aus einem Image ermitteln kann.

Linux:/data1/tmp #fdisk -l platte.iso 
You must set cylinders.
You can do this from the extra functions menu.

Disk platte.iso: 0 MB, 0 bytes
255 heads, 63 sectors/track, 0 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

     Device Boot      Start         End      Blocks   Id  System
platte.iso1   *           1           4       32098+   6  FAT16
platte.iso2               5         125      971932+   5  Extended
platte.iso5               5          50      369463+  83  Linux
platte.iso6              51         125      602406   83  Linux
You must set cylinders.
You can do this from the extra functions menu.


Script zur Ermittlung der Mountoptionen

Im folgenden wird ein Script help-mount-image.sh vorgestellt, dass den Offset für den Mountbefehl ermittelt und auch gleich die richtigen Mountbefehle für alle belegten Partitionen (1 bis 9 soweit vorhanden) des jeweiligen Images ausgibt.

#----------------------------------------------------------------------
# Author: haveaniceday
# Version: 1, Last updated: 12/2007
#----------------------------------------------------------------------
#!/bin/bash 
 
 # fdisk finden 
 PATH="/sbin:$PATH" 
 if [ $# -lt 1 ] 
 then 
         echo "usage: ${0##*/} <image>" 
         exit 1 
 fi 
 
 IMAGE=$1 
 if [ ! -f $IMAGE ] 
 then 
         echo "Warnung, $IMAGE ist kein File" 
 fi 
 
 # tr -d '*' => bootflag entfernen 
 LANG=C fdisk -lu $IMAGE  2>&1 | tr -d '*' | grep "$IMAGE[0-9]" | while read par
t start end blocks id rest 
 do 
         echo 
         echo "$read $part $start $end $blocks $id $rest" 
         case $id in 
         5|f|85) echo "Ignoriere extended partition" 
            continue 
            ;; 
         82) echo "Ignoriere Swap" 
            continue 
            ;; 
         *) 
           ;; 
         esac 
 
         let offset=$start*512 
         echo mount -o loop,ro,offset=$offset $IMAGE /mnt 
 done 
 exit 0 


Die Benutzung ist simpel, einfach das Script mit dem Image als Option aufrufen, die entsprechende Partition aussuchen und mit dem vom Script ausgegebenen Mountbefehl nach /mnt mounten.
(In wenigen Einzelfällen kann es eventuell notwendig werden die Mountoptionen entsprechend dem Filesystemtype und dessen Eigenschaften anzupassen.)


Beispiel einer Konsolausgabe Imagedatei ist platte.iso im aktuellen Verzeichnis:

Linux:/data1/tmp # ./help-mount-image.sh platte.iso 

 platte.iso1 63 64259 32098+ 6 FAT16
mount -o loop,ro,offset=32256 platte.iso /mnt

 platte.iso2 64260 2008124 971932+ 5 Extended
Ignoriere extended partition

 platte.iso5 64323 803249 369463+ 83 Linux
mount -o loop,ro,offset=32933376 platte.iso /mnt

 platte.iso6 803313 2008124 602406 83 Linux
mount -o loop,ro,offset=411296256 platte.iso /mnt


Linux:/data1/tmp # mount -o loop,ro,offset=32933376 platte.iso /mnt
Linux:/data1/tmp # mount | grep /mnt
/data1/tmp/platte.iso on /mnt type ext3 (ro,loop=/dev/loop0,offset=32933376)


Quellen und weiterführende Links



zurück zu Partition