mkisofs increasing iso size by 100 MB

Jan Henrik Sylvester me at
Wed Jan 11 16:35:24 UTC 2012

On 01/-10/-28163 20:59, Amitabh Kant wrote:
> I am trying to customise the bsdinstall auto script. I can mount the iso
> (amd64 arch / 9.0 RELEASE) and change the shell script as per my
> requirement. Once I try to re-create the  iso file using mkisofs utility,
> the size of the final iso increases by 100 MB if -J (joliet) mode is used.
> If I remove the joliet mode, it still increases by around 97 MB. Even if no
> changes are made to any of the files, the result is same.
> The process I have followed is as follows:
> # mkdir /usr/iso
> # cd /usr/iso
> # dd if=/dev/cd0 of=org.iso bs=2048
> # mdconfig -a -t vnode -f org.iso -u 0
> # mount_cd9660 /dev/md0 /mnt
> # mkdir staging
> # cd staging
> # rsync -a /mnt/ .
> With Joliet mode
> # mkisofs -J -R -V CustomBSD -no-emul-boot -b boot/cdboot -iso-level 3 -o
> /usr/iso/my_custom.iso .
> Without Joliet mode
> # mkisofs -R -V CustomBSD -no-emul-boot -b boot/cdboot -iso-level 3 -o
> /usr/iso/my_custom1.iso .
> The original iso is 612M, custom.iso is 712M and custom1.iso is 709M.
> System details: FreeBSD amd64 9.0 RELEASE running inside a virtualbox with
> 2GB RAM.
> Where am I going wrong?

There are many hardlinked files on the iso images. By the procedure 
above, you have them included multiple times.

 From the rsync manpage: "Note that -a does not preserve hardlinks, 
because finding multiply-linked  files is expensive.  You must 
separately specify -H."

You will probably want "-cache-inodes" for mkisofs as well (and maybe 
other options). Or you could look at src/release/amd64/ 
for the use of "makefs -t cd9660".

Jan Henrik

More information about the freebsd-questions mailing list