2014/12/10

mount partitions from disk dd image 掛載影像檔中的 硬碟分割區

假設,有一顆硬碟,利用 ddrescue 或 dd 做出一個 disk.dd
想要掛載它的話,可以利用 mount -o loop,offset=xxx  這樣的語法來掛載
比較麻煩的是要計算它的位移量,我在早前的文章有提到計算方法,
底下是利用 kpartx 來對應:
$ sudo kpartx -v -a disk.dd

add map loop0p1 (252:0): 0 204800 linear /dev/loop0 2048
add map loop0p2 (252:1): 0 180807680 linear /dev/loop0 206848
add map loop0p3 (252:2): 0 2 linear /dev/loop0 181016574
add map loop0p5 : 0 37748047 linear /dev/loop0 181016576
add map loop0p6 : 0 138412110 linear /dev/loop0 218767360
add map loop0p7 : 0 643033776 linear /dev/loop0 357181440

接下來就可以掛載它了,都不必計算
$ sudo mount /dev/mapper/loop0p5 /tmp/5 -o ro

後面的 -o ro 是掛載成唯讀的,視自己的需求決定要不要加

用完之後通常就要拔除或是 卸載,你會發現光 umount 還不夠,
必須再利用 kpartx 來解除影像檔的對應

$ sudo kpartx -v -d disk.dd

批次處理照片

有一批照片要旋轉90度,原名稱副檔名是大寫,處理後也想順便改成小寫,語法如下,必須安裝 imagemagick 套件:

for i in `ls *JPG`; do F=${i%%.JPG}; convert $F.JPG -rotate 90 $F-v1.jpg; done

其他如放大縮小也是可以查閱 convert 指令取得