LoginSignup
3
1

More than 3 years have passed since last update.

複数パーティションを含むイメージデータをマウント

Last updated at Posted at 2020-09-22

複数パーティションを含むイメージデータをマウント

複数パーティションを含むイメージデータをマウントして中身を確認するサンプル

ここではパーティション が 2 つを含むイメージデータの二つ目のパーティションをマウントして中身を確認する例を示します。


#!/bin/sh -e

# イメージファイルのファイル名
FILENAME=$1

# マウントポイント
MOUNT_POINT=$2

# 引数で指定したイメージをループバックデバイスに関連づける。ループバックデバイス名は変数 LOOPBACK_DEVICE に割り当てる。
LOOPBACK_DEVICE=$(sudo losetup -P --show -f ${FILENAME})

# ループバックデバイス一覧を表示する
losetup -l

# 複数パーティションを含むイメージデータをマウントするときの肝
# 複数パーティションを含むイメージデータをループバックデバイスにマウントすると
# パーティション1 は /dev/loopXXXp1
# パーティション2 は /dev/loopXXXp2
# というように p数字 という suffix がついたデバイスが作られる。
LOOPBACK_DEVICE_P2=${LOOPBACK_DEVICE}p2

# 割り当てたイメージファイルの各パーティションに対応するループバックデバイス名一覧を表示する。
sudo ls -l ${LOOPBACK_DEVICE}*

# 割り当てたループバックデバイスをマウントする
sudo mount ${LOOPBACK_DEVICE_P2} ${MOUNT_POINT}

# マウントしたファイルシステムの中身を確認する
# 必要に応じて書き換えることが可能
sudo ls -l ${MOUNT_POINT}

# マウント解除する。
sudo umount ${MOUNT_POINT}

# ループバックデバイスを解放する。
sudo losetup -d ${LOOPBACK_DEVICE}

解説

losetup によるイメージファイルと loopback デバイスとの関連付け

losetup -f コマンドで指定したイメージファイルをループバックデバイスに関連付けます。

  • -P でパーティションテーブルをスキャンします。
  • --show で関連付けたループバックデバイスを表示します。

以下のコマンドを実行すると、イメージファイルパスのイメージをループバックデバイスに関連付けてそのデバイス名を表示します。

sudo losetup -P --show -f イメージファイルパス

例えば /dev/loop10 に関連付けたとすると、このイメージのパーティション1 は /dev/loop10p1 に関連付けられてパーティション2 は /dev/loop10p2 に関連付けられます。

最初のスクリプトでは ${LOOPBACK_DEVICE}p2 とすることで /dev/loop10p2 でパーティション2 を参照します。

ループバックデバイスの列挙

以下のコマンドを実行することですべてのループバックデバイスの情報を列挙して表示します。

losetup -l

ループバックデバイスに関連付けたイメージファイルをマウントする。

sudo mount ${LOOPBACK_DEVICE_P2} ${MOUNT_POINT}

${MOUNT_POINT} は引数で与えられたマウントポイントを指定します。ここでは /mnt/test とします。

上記のコマンドは以下のようなコマンドになります。

sudo mount /dev/loop10p2 /mnt/test

これにより、イメージファイルとして指定したイメージのパーティション2を /mnt/test で参照できるようになります。

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1