labaz 发表于 2016-4-14 08:55

Apple Disk Image (dmg) 分析/掛載/製作

測試環境: Linux Mint 18 (Ubuntu xenial) / LMDE (Debian sid)

Apple Disk Image 分析

Mac OS X 底下的映像檔其中幾個製作出的種類:

唯讀
$ file app-ro.dmg
app-ro.dmg: data

壓縮
$ file app-comp.dmg
app-comp.dmg: zlib compressed data

可讀寫
$ file app-rw.dmg
app-rw.dmg: DOS/MBR boot sector; partition 1 : ID=0xee, start-CHS (0x3ff,254,63), end-CHS (0x3ff,254,63), startsector 1, 77633 sectors, extended partition table (last)

DVD/CD母片
$ file app-dvd.cdr
app-dvd.cdr: DOS/MBR boot sector; partition 1 : ID=0xee, start-CHS (0x3ff,254,63), end-CHS (0x3ff,254,63), startsector 1, 77633 sectors, extended partition table (last)

混合式映像檔(HFS+/ISO/UDF)
$ file app-mix.dmg
app-mix.dmg: ISO 9660 CD-ROM filesystem data 'APP'


網路下載應用程式分析測試
$ file TorBrowser-5.5.4-osx64_en-US.dmg
TorBrowser-5.5.4-osx64_en-US.dmg: bzip2 compressed data, block size = 900k

$ file Perian_1.2.3.dmg
Perian_1.2.3.dmg: zlib compressed data

dmg2img 轉換後...

$ file TorBrowser-5.5.4-osx64_en-US-img.dmg
TorBrowser-5.5.4-osx64_en-US-img.dmg: ISO 9660 CD-ROM filesystem data 'Tor Browser'

$ file Perian_1.2.3-img.dmg
Perian_1.2.3-img.dmg: Macintosh HFS Extended version 4 data last mounted by: '10.0', created: Sat Jul 23 22:53:07 2011, last modified: Sat Jul 23 21:59:42 2011, last checked: Sat Jul 23 21:53:07 2011, block size: 4096, number of blocks: 3676, free blocks: 2577


掛載方式:
ISO 9660 CD-ROM filesystem data 格式掛載方式與iso相同.
zlib compressed data 或 bzip2 compressed data 須使用dmg2img轉換後才有辦法掛載.
Macintosh HFS Extended version 4 掛載方式使用 mount -t hfsplus

其他暫時未找到掛載方法.但都可以使用 7z 來解壓縮映像檔內容.

Linux 上 dmg 一點用處都沒有, 但如果電腦裡有OSX與Linux雙系統那就非常實用了.
Linux 可當備用的救援系統.當然重點不是在dmg的修改, 而是HFS+的讀寫功能.

=======================
dmg/cdr 映像檔解壓縮
=======================
安裝7-zip
雖然壓縮dmg的格式很多但7-zip比較通用.
$ sudo apt-get install p7zip-full

解壓縮dmg/cdr內容
$ 7z x file.dmg

$ 7z x file.cdr

=======================
dmg映像檔製作
=======================
Linux下製作的未壓縮 dmg 在 OS X 底下也能正常使用.

1.安裝 hfsutils
$ sudo apt-get install hfsutils

2.建立一個大小固定的空白映像檔
範例:40MB=1MBX40
$ sudo dd if=/dev/zero of=~/test.dmg bs=1M count=40

3.格式化映像檔
hfsplus格式支援
$ sudo apt-get install hfsplus
hfs格式
$ sudo hformat -l label ~/test.dmg
hfs+格式
$ sudo mkfs.hfsplus -v label ~/test.dmg

4.掛載映像檔
掛載路徑建議在 /run/media/$USER/ 因為重開機掛載目錄就淨空了.
$ sudo mkdir /run/media/$USER/test/
$ sudo mount -o loop -t hfsplus image.dmg /run/media/$USER/test/

5.複製檔案到掛載映像檔路徑

6.卸載映像檔
可直接在檔案管理員卸載
或輸入指令
$ sudo umount /run/media/$USER/test/

=======================
dmg 掛載
=======================
有壓縮的dmg映像檔例如:
$ file ***.dmg
***.dmg: zlib compressed data
這個必須使用 dmg2img 轉換後才有辦法掛載

$ sudo apt-get install dmg2img

$ dmg2img file.dmg file.img

以讀寫方式掛載(預設讀寫)
# mount -o loop -t hfsplus file.img /run/media/$USER/file/

# mount -wo loop -t hfsplus file.img /run/media/$USER/file/

以唯讀的方式掛載
# mount -ro loop -t hfsplus file.img /run/media/$USER/file/

=======================
「CD」或「分割區」映像檔製作
=======================
將整個HFS+磁區製作成dmg
$ sudo dd if="/dev/sda3" of=image.dmg

$ sudo dd if="/dev/loop1" of=image.dmg

====================
hfs+分割區讀寫
====================
$ sudo apt-get install hfsprogs

掛載未掛載分割區
$ sudo mount -t hfsplus -o force,rw /dev/sdXY /run/media/$USER/mntpoint

重新掛載
$ sudo mount -t hfsplus -o remount,force,rw /dev/sdax

$ sudo mount -t hfsplus -o remount,force,rw /run/media/$USER/mntpoint

如果該裝置卸載錯誤或損壞,執行 fsck.hfsplus:
$ sudo fsck.hfsplus -f /dev/sdax

非ROOT使用者HFS+讀寫
$ sudo usermod --uid 501 username
$ sudo chown -R 501:username /home/username

至於 ios ipsw 內 dmg 檔案, 因為該dmg有加密.
目前只有Windows有工具可以解密,具體掛載與修改方式暫時未知.
須等到 My Apple 能越獄時,才有辦法實際測試並做整理. {:5_264:}

以上google大神資料整理與測試 {:5_262:}



平安宝贝 发表于 2016-5-2 14:52

ubuntu16.04

maoyang 发表于 2016-5-20 08:53

我想知道的是,这对同时装有OSX和Linux的PC或Mac而言有什么用处,我没有想通

labaz 发表于 2016-5-20 20:05

maoyang 发表于 2016-5-20 08:53 https://www.pcbeta.com/static/image/common/back.gif
我想知道的是,这对同时装有OSX和Linux的PC或Mac而言有什么用处,我没有想通

你不知道有 iPhone這種手機吧 {:5_262:}

maoyang 发表于 2016-6-9 02:32

labaz 发表于 2016-5-20 20:05 https://www.pcbeta.com/static/image/common/back.gif
你不知道有 iPhone這種手機吧

有关系吗?请明示,我电脑很渣,反应不过来{:9_368:}
页: [1]
查看完整版本: Apple Disk Image (dmg) 分析/掛載/製作