Wie kann ich mit Fuse Partitionen in einem vollständigen Disk-Image (also einem Image mit Partitionstabelle) mounten?

Wie kann ich mit Fuse Partitionen in einem vollständigen Disk-Image (also einem Image mit Partitionstabelle) mounten?

Es ist zwar etwas indirekt, aber es ist möglich, eine Partition mit einem Disk-Image zu mounten, indem der „Offset“-Parameter von mountoder verwendet wird.losetup

Ich möchte Fuse verwenden können, um dasselbe im Benutzerbereich zu tun.

Anwendungsfall

Mein Anwendungsfall ist das Erstellen von Disk-Images auf einem Autobuild-Server, wobei der Build-Job keine Root-Berechtigungen haben darf und der Server für bestimmte Build-Jobs keine benutzerdefinierte Einrichtung benötigen sollte.

Antwort1

Dies ist mit einer Sicherung möglich, wäre aber mit Spezialwerkzeugen wahrscheinlich sauberer.

Lösung

Mit apt-get-able-Tools ist folgender Kludge möglich:

mkdir mnt
xmount --in dd --out vdi disk.img mnt

mkdir mnt2
vdfuse -f mnt/disk.vdi 

mkdir mnt3
fuseext2 -o "rw" mnt2/Partition1 mnt3

Erläuterung

Die Grundidee besteht darin, dass mit Fuse ein vollständiges Disk-Image direkt an Ort und Stelle in Dateien aufgeteilt werden kann, die auf seine Partitionen verweisen. vdfuse tut dies, ist jedoch ein VirtualBox-Tool und erfordert zum Funktionieren eine VDI- oder VMDK-Datei. xmount verwendet Fuse, um ein rohes Disk-Image als VDI-Datei erscheinen zu lassen.

Sobald die Partitionsdatei schließlich über vdfuse verfügbar ist, kann sie über ein Ext2/3/4-Tool, fuseext2, gemountet werden.

Es ist hässlich, funktioniert aber vollständig im Benutzerbereich.

Aktualisieren

vdfuse sollte in der Lage sein, ein RAW-Image ohne die Hilfe von xmount zu mounten, aber es gibt einen Fehler, der die RAW-Option ignoriert.

Ich habe den Fehler aufgespürt und mit einem Patch hier behoben:

https://bugs.launchpad.net/ubuntu/+source/virtualbox-ose/+bug/1019075

Antwort2

Es gibtMengeDienstprogramm, das als Wrapper für das Standard-Mount-Programm fungiert und normalen Benutzern das Mounten von Wechseldatenträgern ohne entsprechenden /etc/fstab-Eintrag ermöglicht.

Um dem Benutzer die Verwendung zu gestatten, müssen Sie ihn lediglich zur plugdevGruppe hinzufügen.

Antwort3

  1. losetupdas Bild
  2. kpartx -avDas resultierende Loopback-Gerät
  3. Verwenden Sie die resultierenden Partitionen /dev/mapper/...wie eine physische Festplatte.

Sie können alle diese Aufgaben mithilfe einer ausführbaren Automount-Map ausführen.

A chdirkönnte alle oben genannten Aktionen auslösen. Oder verwenden Sie sudo für ein Setup-/Entfernungsskript. Oder ...

Antwort4

libguestfs verfügt jetzt über einen Befehl guestmount, der eine virtuelle Maschine startet, damit Sie beliebige Partitionen im Benutzerbereich mounten können.

verwandte Informationen