如何打开.dmg文件?


Answers:


53

安装dmg2img安装dmg2img

接下来,阅读包装信息页面手册页面,以查看它是否对您有用。

该应用程序似乎将.dmg转换为可以使用以下mount命令安装的文件:

dmg2img file.dmg imagefile.img

从您的Wikipedia文章中,似乎可以使用下一个命令:

sudo mount -o loop -t hfsplus imagefile.img /mnt

这样,该文件imagefile.img是的结果dmg2iso,其内容将在提供/mnt。如果未检测到hfsplus类型,则可能需要为其加载内核模块:

sudo modprobe hfsplus

完成后,您可以通过运行以下命令来卸载它:

sudo umount /mnt

如果dmg文件中包含10.6+压缩文件,则此方法将不起作用。
HDave

5
我得到这个错误-mount: wrong fs type, bad option, bad superblock on /dev/loop0
tuxdna

1
@tuxdna您真的有HFS图像吗?检查的输出file file.dmg。您也可以尝试7z l file.dmg列出内容。
Lekensteyn 2014年

我正在使用dmg2img v1.6.2。我在dmg2img上mysql-5.5.28-osx10.6-x86_64.dmg创建了mysql-5.5.28-osx10.6-x86_64.img,但没有挂载。
tuxdna 2014年

@Lekensteyn谢谢!现在可以了。在下面检查我的答案。
tuxdna 2014年

45

要提取它,使用7zip更容易。只需做:

7z x file.dmg

7
谢谢,7z做了这份工作,而dmg2img抱怨dmg图像损坏。
rinni 2014年

3
请注意,7z仅适用于未加密的dmg图像
-vog

这就创建了一个名为0.unknown partition我的文件。
亚伦弗兰克

31

这对我有用:

  • 提取使用 7z x
  • 找到hfs分区文件
  • 挂载到目录

提取使用 7z x

root # aptitude install p7zip-full
root # 7z x ../mysql-5.5.28-osx10.6-x86_64.dmg 

7-Zip [64] 9.20  Copyright (c) 1999-2010 Igor Pavlov  2010-11-18
p7zip Version 9.20 (locale=en_IN,Utf16=on,HugeFiles=on,4 CPUs)

Processing archive: ../mysql-5.5.28-osx10.6-x86_64.dmg

Extracting  0.MBR
Extracting  1.Primary GPT Header
Extracting  2.Primary GPT Table
Extracting  3.free
Extracting  4.hfs
Extracting  5.free
Extracting  6.Backup GPT Table
Extracting  7.Backup GPT Header

Everything is Ok

Files: 8
Size:       125475840
Compressed: 117543935
root # ls
0.MBR  1.Primary GPT Header  2.Primary GPT Table  3.free  4.hfs  5.free  6.Backup GPT Table  7.Backup GPT Header

找到hfs分区(这里是4.hfs文件):

root # ls -l
total 122548
-rw-r--r-- 1 root root       512 Feb  5 16:06 0.MBR
-rw-r--r-- 1 root root       512 Feb  5 16:06 1.Primary GPT Header
-rw-r--r-- 1 root root     16384 Feb  5 16:06 2.Primary GPT Table
-rw-r--r-- 1 root root      3072 Feb  5 16:06 3.free
-rw-r--r-- 1 root root 125435904 Feb  5 16:06 4.hfs
-rw-r--r-- 1 root root      2560 Feb  5 16:06 5.free
-rw-r--r-- 1 root root     16384 Feb  5 16:06 6.Backup GPT Table
-rw-r--r-- 1 root root       512 Feb  5 16:06 7.Backup GPT Header

将其安装到文件夹:

root # mkdir t
root # mount -oloop 4.hfs t
root # cd t/
root # ls
mysql-5.5.28-osx10.6-x86_64.pkg  MySQL.prefPane  MySQLStartupItem.pkg  ReadMe.txt

您可以指定要提取的单个文件:7z x ../mysql-5.5.28-osx10.6-x86_64.dmg 4.hfs
Lekensteyn 2014年

8

如果您成功遵循了Lekensteyn的指示,那么binfalse将为您提供更多功能。如果你得到

$ lsmod | grep hfs
hfs                    54782  0 
hfsplus                84912  0
$ sudo mount -o loop,ro -t hfsplus imagefile.img /mnt
mount: wrong fs type, bad option, bad superblock on /dev/loop0,

目前,Ubuntu仅随附dmg2img版本1.6.2和版本1.6.4有时有所不同。您也可以从dmg中提取特定的分区,其中只有一些是hfs +

$ dmg2img -l file.dmg
partition 0: Protective Master Boot Record (MBR : 0)
partition 1: GPT Header (Primary GPT Header : 1)
partition 2: GPT Partition Data (Primary GPT Table : 2)
partition 3:  (Apple_Free : 3)
partition 4: disk image (Apple_HFS : 4)
partition 5:  (Apple_Free : 5)
partition 6: GPT Partition Data (Backup GPT Table : 6)
partition 7: GPT Header (Backup GPT Header : 7)
$ dmg2img -p 4 file.dmg imagefile.img
  • 当前的Ubuntu版本自版本14.04起带有1.6.5

4

dmg2img file.dmg imagefile.img在Linux上使用时,如果出现错误:通货膨胀失败消息,只需将7zip安装为

sudo aptitude install p7zip-full

并在终端上发出以下命令

7z x your_file.dmg
  • 找到InstallMacOSX.pkg / InstallESD.dmg
  • dmg2img InstallESD.dmg imagefile.img在终端上发出命令。

现在,您可以使用以下命令挂载imagefile.img

modprobe hfsplus

接着

mount -t hfsplus -o loop mountain.img /mnt

3

首先安装DMG2IMG。现在您可以将其转换为IMG

dmg2img your.dmg new.img 

所述IMG可安装:

sudo modprobe hfsplus
sudo mount -t hfsplus -o loop new.img /mnt

看看 /mnt


2

在某些情况下.dmg,您既不能输入7z x,也不能mount输入的结果dmg2img

在这种情况下,.imgfrom 的结果dmg2img your.dmg new.img可以使用7z x以下命令提取其分区:

$ 7z x factor-macosx-x86-64-0.98.dmg
[...]
Extracting archive: factor-macosx-x86-64-0.98.dmg
ERROR: factor-macosx-x86-64-0.98.dmg
factor-macosx-x86-64-0.98.dmg
Open ERROR: Can not open the file as [Dmg] archive

$ dmg2img factor-macosx-x86-64-0.98.dmg factor.img
[...]
factor-macosx-x86-64-0.98.dmg --> factor.img
[...]
Archive successfully decompressed as factor.img

$ sudo mount -o loop -t hfsplus factor.img /mnt
mount: /mnt: wrong fs type, bad option, bad superblock on /dev/loop5, missing codepage or helper program, or other error.

$ 7z x factor.img 

[...]
Extracting archive: factor.img
[...]
Everything is Ok                                

Folders: 2717
Files: 10266
Size:       176431113
Compressed: 264214528

$ ls -lah factor factor/factor/
factor:
total 24K
drwx------  6 cat cat 4.0K Jul 30  2018  .
drwxr-xr-x 21 cat cat 4.0K Feb 19 16:28  ..
drwx------  8 cat cat 4.0K Jul 30  2018  factor
drwx------  2 cat cat 4.0K Jul 30  2018 '[HFS+ Private Data]'
drwx------  2 cat cat 4.0K Jul 30  2018 '.HFS+ Private Directory Data'$'\r'
drwx------  2 cat cat 4.0K Jul 30  2018  .Trashes

factor/factor/:
total 97M
drwx------   8 cat cat 4.0K Jul 30  2018 .
drwx------   6 cat cat 4.0K Jul 30  2018 ..
drwx------ 163 cat cat 4.0K Jul 30  2018 basis
drwx------  45 cat cat 4.0K Jul 30  2018 core
-rw-r--r--   1 cat cat  702 Jul 30  2018 .dir-locals.el
drwx------ 288 cat cat  12K Jul 30  2018 extra
-rw-r--r--   1 cat cat   32 Jul 30  2018 factor
drwx------   3 cat cat 4.0K Jul 30  2018 Factor.app
-rw-r--r--   1 cat cat  97M Jul 30  2018 factor.image
-rw-r--r--   1 cat cat   40 Jul 30  2018 .gitattributes
-rw-r--r--   1 cat cat   43 Jul 30  2018 git-id
-rw-r--r--   1 cat cat 366K Jul 30  2018 libfactor.dylib
-rw-r--r--   1 cat cat  16K Jul 30  2018 libfactor-ffi-test.dylib
-rw-r--r--   1 cat cat 1.3K Jul 30  2018 LICENSE.txt
drwx------   9 cat cat 4.0K Jul 30  2018 misc
-rw-r--r--   1 cat cat 4.6K Jul 30  2018 README.md
-rw-r--r--   1 cat cat 3.6K Jul 30  2018 .travis.yml
drwx------   2 cat cat 4.0K Jul 30  2018 work

成功!


多个答案建议直接7z在dmg文件上使用。那为什么要转换呢?
Olorin

@Olorin用于当7z x your.dmg失败时Can't open as archive: 1,以及两者dmg2img的输出都不被接受时mount。我会澄清

1

遵循@aman和@tuxdna的答案,因为dmg2img似乎不适用于压缩的dmg图像。

所以我制作了一个bash脚本(在ubuntu 14.10上进行了测试)以自动化以下过程:

  • 在临时文件夹中使用7z提取
  • 寻找要挂载的分区
  • 将hfs / hfsplus文件夹/分区复制到其他位置
  • 删除临时文件夹
  • 挂载分区

在这里找到它:https : //github.com/aurelien-rainone/scripts/blob/master/mountdmg.sh

使用示例:

panty@Computerino:[~/scripts]: mountdmg.sh -t hfsplus -d /mnt ~/Downloads/cutecom-ng.dmg 

7-Zip [64] 9.20  Copyright (c) 1999-2010 Igor Pavlov  2010-11-18
p7zip Version 9.20 (locale=en_US.UTF-8,Utf16=on,HugeFiles=on,2 CPUs)

Processing archive: /home/panty/Downloads/cutecom-ng.dmg

Extracting  0.MBR
Extracting  1.Primary GPT Header
Extracting  2.Primary GPT Table
Extracting  3.free
Extracting  4.hfs
Extracting  5.free
Extracting  6.Backup GPT Table
Extracting  7.Backup GPT Header

Everything is Ok

Files: 8
Size:       33549312
Compressed: 10059312
mountdmg.sh: successfully mounted 4.hfs on /dev/loop0
mountdmg.sh: run sudo umount /dev/loop0 when finished
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.