Partition eines Festplattenimage mounten: Unterschied zwischen den Versionen

Aus Linupedia.org
Wechseln zu: Navigation, Suche
K (Script zur Ermittlung der Mountoptionen)
K (Script zur Ermittlung der Mountoptionen)
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 part start end blocks id rest  
+
  LANG=C fdisk -lu $IMAGE  2>&1 | tr -d '*' | grep "$IMAGE[a-z0-9]" | while read part start end blocks id rest  
 
  do  
 
  do  
 
         echo  
 
         echo  

Version vom 3. April 2008, 13:39 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