ディスクイメージを簡単にマウント

目次

目的

ディスクイメージのファイルがある。このファイルをマウントして中身を確認・変更したい。

loop デバイスを使って mount できることは知っているけど、offset を調べるとか面倒くさい。

方法

kpartxコマンドを使用すると、面倒な offset の値をfdiskコマンドなどで調べる必要がなくなる。

kpartx のインストール

kpartx は、Ubuntu ではパッケージになっているのでaptコマンドを使ってインストールします。

$ sudo apt install kpartd

ディスクイメージをマウント

まずディスクイメージの各パーティションをkpartxコマンドを使って loop デバイスに割り当てます。ここでは読み込み専用にしたいので-rオプションを加えています。

$ sudo kpartx -avr disk.img
add map loop0p1 (252:6): 0 8396800 linear 7:0 2048
add map loop0p2 (252:7): 0 2 linear 7:0 8400894
add map loop0p5 (252:8): 0 8382464 linear 7:0 8400896

次に割り当てた loop デバイスを通して、目的のパーティションをマウントします。

$ sudo mount /dev/mapper/loop0p1 /mnt
mount: /dev/mapper/loop0p1 is write-protected, mounting read-only

$ ls /mnt/
bin   home	      lib64	  opt	sbin  tmp      vmlinuz.old
boot  initrd.img      lost+found  proc	snap  usr
dev   initrd.img.old  media	  root	srv   var
etc   lib	      mnt	  run	sys   vmlinuz

アンマウント

使い終わったらアンマウントしておきます。

$ sudo umount /mnt

$ sudo kpartx -d disk.img
loop deleted : /dev/loop0

意外と忘れやすいのが、loop デバイスの後片付けです。アンマウントしたら、**忘れずにkpartx -d**しておきます。