Partition eines Festplattenimage mounten: Unterschied zwischen den Versionen

Aus Linupedia.org
Wechseln zu: Navigation, Suche
K
(Quellen und weiterführende Links)
 
(6 dazwischenliegende Versionen von 3 Benutzern werden nicht angezeigt)
Zeile 3: Zeile 3:
 
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 [http://linux.die.net/man/8/losetup Loop-Device] und speziellen Optionen von [http://linux.die.net/man/8/mount 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 [http://linux.die.net/man/8/fdisk fdisk] aus einem Image ermitteln kann.
 
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 [http://linux.die.net/man/8/losetup Loop-Device] und speziellen Optionen von [http://linux.die.net/man/8/mount 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 [http://linux.die.net/man/8/fdisk fdisk] aus einem Image ermitteln kann.
 
<pre>
 
<pre>
Linux:/data1/tmp #fdisk -l platte.iso
+
Linux:/data1/tmp #fdisk -l platte.image
 
You must set cylinders.
 
You must set cylinders.
 
You can do this from the extra functions menu.
 
You can do this from the extra functions menu.
  
Disk platte.iso: 0 MB, 0 bytes
+
Disk platte.image: 0 MB, 0 bytes
 
255 heads, 63 sectors/track, 0 cylinders
 
255 heads, 63 sectors/track, 0 cylinders
 
Units = cylinders of 16065 * 512 = 8225280 bytes
 
Units = cylinders of 16065 * 512 = 8225280 bytes
  
     Device Boot      Start        End      Blocks  Id  System
+
     Device   Boot      Start        End      Blocks  Id  System
platte.iso1   *          1          4      32098+  6  FAT16
+
platte.image1   *          1          4      32098+  6  FAT16
platte.iso2               5        125      971932+  5  Extended
+
platte.image2               5        125      971932+  5  Extended
platte.iso5               5          50      369463+  83  Linux
+
platte.image5               5          50      369463+  83  Linux
platte.iso6             51        125      602406  83  Linux
+
platte.image6             51        125      602406  83  Linux
 
You must set cylinders.
 
You must set cylinders.
 
You can do this from the extra functions menu.
 
You can do this from the extra functions menu.
Zeile 27: Zeile 27:
  
 
<pre>
 
<pre>
 +
#!/bin/bash
 
#----------------------------------------------------------------------
 
#----------------------------------------------------------------------
 
# Author: haveaniceday
 
# Author: haveaniceday
 
# Version: 1, Last updated: 12/2007
 
# Version: 1, Last updated: 12/2007
 
#----------------------------------------------------------------------
 
#----------------------------------------------------------------------
#!/bin/bash
 
 
   
 
   
 
  # fdisk finden  
 
  # fdisk finden  
Zeile 48: Zeile 48:
 
   
 
   
 
  # tr -d '*' => bootflag entfernen  
 
  # tr -d '*' => bootflag entfernen  
  LANG=C fdisk -lu $IMAGE  2>&1 | tr -d '*' | grep "$IMAGE[0-9]" | while read par
+
  LANG=C fdisk -lu $IMAGE  2>&1 | tr -d '*' | grep "$IMAGE[a-z0-9]" | while read part start end blocks id rest  
t start end blocks id rest  
 
 
  do  
 
  do  
 
         echo  
 
         echo  
Zeile 72: Zeile 71:
  
 
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.<br>
 
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.<br>
(''In wenigen Einzelfällen kann es eventuell notwendig werden die Mountoptionen entsprechend dem Filesystemtype und dessen Eigenschaften anzupassen.'')
+
(''In wenigen Einzelfällen kann es eventuell notwendig werden die Mountoptionen entsprechend dem Filesystemtype und dessen Eigenschaften anzupassen.'') Der mount-Befehl muss als root eingegeben
 +
werden. Andere Benutzer haben keine Erlaubnis für so einen mount.
  
  
Beispiel einer Konsolausgabe Imagedatei ist '''platte.iso''' im aktuellen Verzeichnis:
+
Beispiel einer Konsolausgabe Imagedatei ist '''platte.image''' im aktuellen Verzeichnis:
 
<pre>
 
<pre>
Linux:/data1/tmp # ./help-mount-image.sh platte.iso
+
Linux:/data1/tmp # ./help-mount-image.sh platte.image
  
  platte.iso1 63 64259 32098+ 6 FAT16
+
  platte.image1 63 64259 32098+ 6 FAT16
mount -o loop,ro,offset=32256 platte.iso /mnt
+
mount -o loop,ro,offset=32256 platte.image /mnt
  
  platte.iso2 64260 2008124 971932+ 5 Extended
+
  platte.image2 64260 2008124 971932+ 5 Extended
 
Ignoriere extended partition
 
Ignoriere extended partition
  
  platte.iso5 64323 803249 369463+ 83 Linux
+
  platte.image5 64323 803249 369463+ 83 Linux
mount -o loop,ro,offset=32933376 platte.iso /mnt
+
mount -o loop,ro,offset=32933376 platte.image /mnt
  
  platte.iso6 803313 2008124 602406 83 Linux
+
  platte.image6 803313 2008124 602406 83 Linux
mount -o loop,ro,offset=411296256 platte.iso /mnt
+
mount -o loop,ro,offset=411296256 platte.image /mnt
  
  
Linux:/data1/tmp # mount -o loop,ro,offset=32933376 platte.iso /mnt
+
Linux:/data1/tmp # mount -o loop,ro,offset=32933376 platte.image /mnt
 
Linux:/data1/tmp # mount | grep /mnt
 
Linux:/data1/tmp # mount | grep /mnt
/data1/tmp/platte.iso on /mnt type ext3 (ro,loop=/dev/loop0,offset=32933376)
+
/data1/tmp/platte.image on /mnt type ext3 (ro,loop=/dev/loop0,offset=32933376)
 
</pre>
 
</pre>
 
  
 
== Quellen und weiterführende Links ==
 
== Quellen und weiterführende Links ==
  
 
* [http://www.linux-club.de/viewtopic.php?t=79797 Orginalbeitrag im Forum]  
 
* [http://www.linux-club.de/viewtopic.php?t=79797 Orginalbeitrag im Forum]  
 
+
*[[ISO-Images per Loopdevice mounten]]
 
+
* [[Partitionierte Datenträgerimages mounten]] (sollte vielleicht hiermit zusammengeführt werden)
 
----
 
----
 
<!-- 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:Partitionen]]
 
[[Category:Scripte]]
 
[[Category:Scripte]]

Aktuelle Version vom 24. Februar 2015, 19:54 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.image 
You must set cylinders.
You can do this from the extra functions menu.

Disk platte.image: 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.image1   *           1           4       32098+   6  FAT16
platte.image2               5         125      971932+   5  Extended
platte.image5               5          50      369463+  83  Linux
platte.image6              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.

#!/bin/bash 
#----------------------------------------------------------------------
# Author: haveaniceday
# Version: 1, Last updated: 12/2007
#----------------------------------------------------------------------
 
 # 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[a-z0-9]" | while read part 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.) Der mount-Befehl muss als root eingegeben werden. Andere Benutzer haben keine Erlaubnis für so einen mount.


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

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

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

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

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

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


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

Quellen und weiterführende Links


zurück zu Partition