Strom sparender Computereinsatz hilft nicht zuletzt auch Kosten zu senken. ADMIN 02/2011 geht der Frage nach, was Administratoren tun können, damit ihre ... (mehr)

Loopback

Mit Image-Dateien zu arbeiten, funktioniert viel besser, wenn Sie Linux dazu bringen, sie wie richtige Block-Geräte zu behandeln, einschließlich der I/O-Aufrufe, die die Geometrie und Partitionen ermitteln. Dafür bietet sich der Einsatz eines sogenannten Loopback-Device an, das der Linux-Kernel zur Verfügung stellt. Es bildet eine Datei auf ein oder mehrere Block-Geräte »/dev/loop*« ab. Im System tauchen so weitere Festplatten und Partitionen auf, sobald die Image-Datei mit »losetup« aktiviert ist. So bindet

losetup /dev/loop0 sda.img

die Datei »sda.img« über die Gerätedatei »/dev/loop0« ein, wenn diese noch zur Verfügung steht. Anschließend lässt sich dieses neue Gerät genauso mit »testdisk« oder »fdisk« bearbeiten wie eine echte Festplatte.

Um auf Partitionen zuzugreifen, die sich in einem Image befinden oder auf einem Blockgerät ohne Partitionseintrag, geben Sie hinter dem Offset-Parameter den Wert in Bytes an:

losetup /dev/loop0 sda.img -o 
<!-- START: including template: design/standard/templates/content/datatype/view/ezxmltags/emphasize.tpl (design:content/datatype/view/ezxmltags/emphasize.tpl) -->
Offset
<!-- STOP: including template: design/standard/templates/content/datatype/view/ezxmltags/emphasize.tpl (design:content/datatype/view/ezxmltags/emphasize.tpl) -->

Die mit »sfdisk -uS« oder »fdisk -lu« erhaltenen Werte müssen Sie dazu mit 512 multiplizieren.

In Listing 6 beginnt die erste Partition beim Sektor 8192, »losetup« weist sie also mit dem folgenden Befehl richtig zu:

Listing 6

Partitionstabelle eines Image

 

losetup /dev/loop0 sda.img -o $((512 * 8192))

Hierbei multipliziert das Shell-Konstrukt »$(())« die beiden Werte. Jetzt sollte es möglich sein, die Partition zu mounten. Das Dateisystem weiß selbst, wo es beginnt und endet, also macht es nichts aus, dass die per »losetup« gemappte Partition den Rest der Festplatte umfasst. Um das Tool selbst das verwendete Dateisystem erkennen zu lassen, rufen Sie

mount /dev/loop0 /mnt

auf. Alternativ geben Sie den Dateisystemtyp hinter »-t« an:

mount -t 
<!-- START: including template: design/standard/templates/content/datatype/view/ezxmltags/emphasize.tpl (design:content/datatype/view/ezxmltags/emphasize.tpl) -->
Dateisystem
<!-- STOP: including template: design/standard/templates/content/datatype/view/ezxmltags/emphasize.tpl (design:content/datatype/view/ezxmltags/emphasize.tpl) -->
 /dev/loop0 /mnt

Weil der Mount-Befehl über Loopback-Geräte Bescheid weiß, können Sie beide Schritte auch in einem erledigen, indem Sie »mount« gleich die richtigen Parameter mitgeben:

mount -o loop,offset=$((512 * 8192)) sda.img /mnt

Wenn Mount selbst kein freies Loop-Device findet, geben Sie mit »loop=/dev/loop1« eines an. Jetzt können Sie von der gemounteten Partionen nach Belieben Dateien kopieren und auch ändern – wenn Sie sie nicht mit »-r« nur-lesbar gemountet haben.

Kompression und Kryptographie

Dieser Ansatz funktioniert auch mit komprimierten Image-Dateien wie bei Knoppix, wenn Sie die entsprechenden Gerätedateien »/dev/cloop*« verwenden. Je nach verwendeter Version von »losetup« und »mount« ist es dabei obligatorisch, die Datei read-only zu mounten.

»losetup« unterstützt auch die Cryptoloop-Erweiterung des Kernels mit den folgenden Optionen:

  • »-e Verschlüsselungstyp «
  • »-k Schlüssellänge «
  • »-N« : verwende Passphrase anstatt eines Hash-Algorithmus als Schlüssel

Ein Beispiel eines Aufrufs mit AES-Verschlüsselung und 256 Bits langem Key:

losetup -e aes -k 256 -N /dev/loop0 partition.img

Wenn Ihre Distribution eine spezielle Version von »losetup« aus dem Loop-AES-Paket einsetzt, besitzt der Befehl andere Optionen:

  • »-e Verschlüsselungstyp «
  • »-H Hash-Algorithmus « .

Der Hash-Algorithmus wird dazu verwendet, die Schlüssel unkenntlich zu machen. Das obige Beispiel sieht damit so aus:

losetup -e AES256 -H unhashed2 /dev/loop0 partition.img

Mounten lässt sich eine solche Partition wie oben beschrieben, nur die Daten werden verschlüsselt gespeichert. Wenn »losetup« merkwürdige Fehlermeldungen ausgibt, müssen Sie möglicherweise erst die entsprechenden Verschlüsselungsmodule in den Kernel laden wie im folgenden Listing:

for m in loop cryptoloop aes_generic aes_i586 cbc; do
 [ -d /sys/module/"$m" ] || modprobe "$m"
done

Vergessen Sie nicht, nach dem Unmounten die Datei wieder vom Loopback-Device zu trennen. Sonst bleibt es für andere Anwendungen blockiert. Wenn sie Unmount mit der Option »-d« aufrufen, geschieht dies automatisch. Haben Sie es vergessen, können Sie es mit »losetup -d /dev/loop0« nachholen.

Ähnliche Artikel

comments powered by Disqus
Einmal pro Woche aktuelle News, kostenlose Artikel und nützliche ADMIN-Tipps.
Ich habe die Datenschutzerklärung gelesen und bin einverstanden.

Konfigurationsmanagement

Ich konfiguriere meine Server

  • von Hand
  • mit eigenen Skripts
  • mit Puppet
  • mit Ansible
  • mit Saltstack
  • mit Chef
  • mit CFengine
  • mit dem Nix-System
  • mit Containern
  • mit anderer Konfigurationsmanagement-Software

Ausgabe /2023