コマンドラインからディスクイメージをマウントする方法は?

コマンドラインからディスクイメージをマウントする方法は?

/devにそのデバイスファイルを含むドライブをマウントする方法を知っていますが、物理デバイスを表すのではなく/devに似たデバイス(ISOファイルやフロッピーイメージなど)。 Mac OS Xでは、Finderでディスクイメージアイコンをダブルクリックすると、ドライブが自動的にマウントされるようにこれを実行できることがわかりますが、端末でもこれを実行できることを願っています。これを行う普遍的なUnixメソッドがあるのか​​、それともプラットフォーム固有のものかはわかりません。

答え1

MBRパーティションテーブルがあるハードドライブイメージの場合は、イメージをfdiskしてマウントする必要があるパーティションのオフセットを見つけます。

fdisk -lu /path/disk.img

その後、オフセットでインストールします。

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

オフセット値はバイト単位ですが、ブロック数が表示されるため、fdisk出力の「Begin」または「Start」列(またはブロックサイズに関係なく)の値を掛けて、インストールするオフセットを取得する必要があります。fdisk512

答え2

ほとんどの最新のGNUシステムでは、このmountコマンドは以下を処理できます。

mount -o loop file.iso /mnt/dir

umount削除するには、次のコマンドを使用します。

umount /mnt/dir

オペレーティングシステムにこのオプションがない場合は、新しく作成できます。循環装置:

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)

削除するには、次のものを使用できます-d

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

ファイルにHDイメージなどのパーティションがある場合は、オペレーティング-Pシステムに応じてこのパラメータを使用でき、ファイルコンテンツ内でパーティションをマッピングします。

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

答え3

losetup -Pマルチパーティションイメージの自動化

コマンドラインからディスクイメージをマウントする方法は? UnixとLinuxのスタック交換前述のように、losetup -P追加の自動化のためのいくつかの便利なBash機能があります。使用法:

$ 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

源泉:

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"
)

答え4

努力する:

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

後で追加できますloop

  • -t msdosフロッピーディスクの場合
  • -t iso9660CD-ROMイメージの場合

Linuxは通常、ファイル形式を推測しようとします。

関連情報