ディスクイメージを簡単にマウント
目次
目的
ディスクイメージのファイルがある。このファイルをマウントして中身を確認・変更したい。
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
**しておきます。