For example I have Apache Web server where Mac dmg file is located. I want to modify for every download adding specific readme file, depending on the region where download request is coming from. A special shell script can do this job, but before I need to verify all script steps manually. This article explains how to do it on Centos6 64-bit Linux.
Preparation steps:
1. Install ELRepo (Before installing ELRepo check the current version: http://elrepo.org/tiki/tiki-index.php):
|
# rpm –import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org # yum install https://www.elrepo.org/elrepo-release-6-8.el6.elrepo.noarch.rpm |
2. Install hfs and hfsplus Apple file system
|
# yum install kmod-hfs # yum install kmod-hfsplus |
3. install dmg2img utility
|
# yum install dmg2img |
Resolving problems with dmg2img installation.
4. install genisoimage
|
# yum install genisoimage |
After installation I rebooted my Linux device because it did not see Apple hfs and hfsplus Apple file system.
DMG modification:
Now we need some dmg file to play with. Let us download some, I selected Avast antivirus, you may used other:
|
curl -O https://install.avcdn.net/mac-av/10_9/AAFM/avast_security_online.dmg |
Next we need to convert dmg file to img:
|
# dmg2img avast_security_online.dmg avast_security_online.img dmg2img v1.6.2 is derived from dmg2iso by vu1tur (to@vu1tur.eu.org) avast_security_online.dmg –> avast_security_online.img reading property list, 8326 bytes from address 15071232 … decompressing: opening partition 0 … 100.00% ok opening partition 1 … 100.00% ok opening partition 2 … 100.00% ok opening partition 3 … 100.00% ok opening partition 4 … 100.00% ok opening partition 5 … 100.00% ok opening partition 6 … 100.00% ok opening partition 7 … 100.00% ok Archive successfully decompressed as avast_security_online.img Image appears to have GUID Partition Table with 1 HFS+ partition. You should be able to mount it [as root] by: modprobe hfsplus |
Check result of conversion:
|
# ls -l avast_security_online* -rw-r–r– 1 root root 15080070 Mar 12 12:19 avast_security_online.dmg -rw-r–r– 1 root root 18284544 Mar 12 12:24 avast_security_online.img |
Create /mnt/dmg directory:
|
# mkdir /mnt/dmg |
Mount converted avast_security_online.img to /mnt/dmg directory:
|
# mount -t hfsplus -o loop,offset=20480 avast_security_online.img /mnt/dmg |
Check content of/mnt/dmg directory after mounting:
|
# ls -l /mnt/dmg total 12520 -rw-r–r–. 1 506 games 12816864 Feb 25 08:26 Avast Security.pkg drwxr-xr-x. 1 506 games 3 Feb 25 08:26 com.avast.uninstall.app |
|
Sometime mount produces the following error: “mount: wrong fs type, bad option, bad superblock on /dev/loop0, missing codepage or helper program, or other error”.
If hfsplus has been installed successfully, check offet and sizelimit values: Disk abc.img: 47 MB, 47226880 bytes, 92240 sectors # Start End Size Type Name recalculating output of fdisk, to get the same result as from parted: Now mount it successful: |
Create /tmp/dmg directory:
|
# mkdir /tmp/dmg |
Copy content of /mnt/dmg directory to /mnt/tmp directory, then copy your readme file to /tmp/dmg directory.
Check /tmp/dmg directory content
|
# ls /tmp/dmg Avast Security.pkg com.avast.uninstall.app readme.txt |
Create new dmg file from /tmp/dmg directory:
|
# genisoimage -V “AvastInstallation” -D -R -apple -no-pad -o newAvast.dmg /tmp/dmg |
Unmount /mnt/dmg
|
# umount /mnt/dmg |
Testing:
Download newAvast.dmg file on your Mac machine, doulbe click on the file and what you will see:

or check AvastInstallation volume:
|
# ls -l /Volumes/AvastInstallation/ total 25040 -rw-r–r– 1 root wheel 12816864 Mar 14 12:37 Avast Security.pkg drwxr-xr-x 3 root wheel 2048 Mar 14 12:37 com.avast.uninstall.app -rw-r–r– 1 root wheel 0 Mar 14 12:40 readme.txt |