2012年8月15日星期三

掛載硬盤/光碟影像檔

再在Linux要掛載iso檔非常簡單,直接$ sudo mount /path/to/disk.iso /media/cdrom
以前要加-o loop的現在不用了
掛載硬盤影像檔也很容易,如果是單個分區的話也是直接mount
$ sudo mount /path/to/sda1.img /media/sda1
如果是整個硬盤的影像檔入面有分區的話就麻煩一點
首先要找出目標分區的偏移量(offset)
這裏需要用到parted這隻程式,安裝gparted的話就會有
$ sudo parted /path/to/sda.img
(parted) unit B                                                           
(parted) print                                                            
型號: (file)
磁碟 /path/to/sda.img:750156374016B
磁區大小 (邏輯/物理):512B/512B
分割區:msdos
Disk Flags: 

編號  起始點         結束點         大小           類型     檔案系統  旗標
1    1048576B       16107175935B   16106127360B   primary  ntfs      diag
2    16107175936B   16212033535B   104857600B     primary  ntfs      啟動
3    16212033536B   125468409855B  109256376320B  primary  ntfs
4    125468409856B  750155464703B  624687054848B  primary  ntfs
要使用的單位是Byte,這裏使用編號4這個分區。
它的起始點是125468409856B

$ sudo mount -o loop,ro,offset=125468409856 /path/to/sda.img /media/sda3/
掛載成功!(這裏ro是read only)

也可以用dd把目標分區提取出來成為影像檔
skip=125468409856/512=245055488 count=624687054848/4=156171763712
(為甚麼除4暫時不清濋,應該是512才對。未試驗囧)
$ sudo dd if=/path/to/sda.img of=/path/to/sda3.img bs=512 skip=245055488 count=156171763712

如果用VirtualBox也許可以的~
首先把硬盤影像檔和一個loop device連接
$ sudo losetup /dev/loop7 /path/to/sda.img
然後建立一個vmdk檔案指向這個loop device
$ VBoxManage internalcommands createrawvmdk -filename /path/to/sda.vmdk -rawdisk /dev/loop7
最後在VBox裏加入這個vmdk到虛擬機裏然後開機便可:)


SEO1: mount hard disk image included partitions
SEO2: use disk image via loop device in Virtualbox
SEO3: use physical device in Virtualbox vmdk

Via 1
Via 2
發佈留言

熱門文章