it-swarm.com.de

Wie kann ich ein Disk-Image über die Befehlszeile bereitstellen?

Ich weiß, wie ein Laufwerk mit einer entsprechenden Gerätedatei in/dev gemountet wird, aber ich weiß nicht, wie ich dies für ein Disk-Image tun soll, das kein physisches Gerät darstellt und kein analoges in/dev hat (z. B. ein ISO-Datei oder ein Diskettenbild). Ich weiß, dass ich dies unter Mac OS X tun kann, indem ich im Finder auf das Symbol des Disk-Images doppelklicke, wodurch das Laufwerk automatisch gemountet wird. Ich möchte dies jedoch über das Terminal tun können. Ich bin mir nicht sicher, ob es eine allgemeine Unix-Methode gibt oder ob dies plattformspezifisch ist.

43
user628544

Wenn es sich um ein Festplatten-Image mit einer MBR-Partitionstabelle handelt, würde ich das Image fdisk, um den Offset für die Partition zu ermitteln, die ich bereitstellen muss.

fdisk -lu /path/disk.img

Dann würde ich es über den Offset montieren.

mount -o loop,offset=xxxx /path/disk.img /mnt/disk.img.partition

Der Versatzwert wird in Bytes angegeben, während fdisk eine Blockanzahl anzeigt. Daher sollten Sie den Wert aus der Spalte "Begin" oder "Start" der Ausgabe von fdisk mit 512 (oder was auch immer die Blockgröße ist), um den Versatz zu erhalten, bei dem montiert werden soll.

48
jc__

Auf den meisten modernen GNU) Systemen kann der Befehl mount Folgendes verarbeiten:

mount -o loop file.iso /mnt/dir

zum Aufheben der Bereitstellung können Sie einfach den Befehl umount verwenden

umount /mnt/dir

Wenn Ihr Betriebssystem diese Option nicht hat, können Sie ein Schleifengerät erstellen:

losetup -f # this will print the first available loop device ex:/dev/loop0
losetup /dev/loop0 /path/file.iso #associate loop0 with the specified file
mount /dev/loop0 /mnt/dir #It may be necessary specify the type (-t iso9660)

zum Umstecken können Sie -d verwenden:

umount /mnt/dir
losetup -d /dev/loop0

Wenn die Datei Partitionen hat, z. B. ein HD-Image, können Sie den Parameter -P Verwenden (abhängig von Ihrem Betriebssystem). Dadurch werden die Partitionen im Dateiinhalt zugeordnet:

losetup -P /dev/loop0 /path/file.iso # will create /dev/loop0 
ls /dev/loop0p* #the partitions in the format /dev/loop0pX
39
a0f3dd13

losetup -P Automatisierung für Images mit mehreren Partitionen

Wie wird ein Disk-Image über die Befehlszeile bereitgestellt? | Unix & Linux Stack Exchange erwähnt losetup -P, und hier sind einige praktische Bash-Funktionen, um die Dinge weiter zu automatisieren. Verwendungszweck:

$ los my.img
/dev/loop0
/mnt/loop0p1
/mnt/loop0p2

$ ls /mnt/loop0p1
/whatever
/files
/youhave
/there

$ Sudo losetup -l
NAME       SIZELIMIT OFFSET AUTOCLEAR RO BACK-FILE                                                                                      DIO
/dev/loop1         0      0         0  0 /full/path/to/my.img

$ # Cleanup.
$ losd 0
$ ls /mnt/loop0p1
$ ls /dev | grep loop0
loop0

Quelle:

los() (
  img="$1"
  dev="$(Sudo losetup --show -f -P "$img")"
  echo "$dev"
  for part in "$dev"?*; do
    if [ "$part" = "${dev}p*" ]; then
      part="${dev}"
    fi
    dst="/mnt/$(basename "$part")"
    echo "$dst"
    Sudo mkdir -p "$dst"
    Sudo mount "$part" "$dst"
  done
)
losd() (
  dev="/dev/loop$1"
  for part in "$dev"?*; do
    if [ "$part" = "${dev}p*" ]; then
      part="${dev}"
    fi
    dst="/mnt/$(basename "$part")"
    Sudo umount "$dst"
  done
  Sudo losetup -d "$dev"
)

Versuchen:

mount -o loop /path/to/file.iso /mnt

Sie können nach loop hinzufügen:

  • -t msdos für Diskette
  • -t iso9660 für CD-ROM-Image

Linux versucht normalerweise, den Dateityp zu erraten.

6
Archemar