I hardly ever have to do this, so I can never remember precisely how to do it. Hopefully by noting it here, I won’t forget again.
Specifically, I want to do this so that I can create a single DVD image from the FreeBSD 6.3 CD images I have. Here’s more-or-less how it goes:
mount -t iso9660 -o loop disc1-mountpoint mount -t iso9660 -o loop disc2-mountpoint mkisofs -l -J -R -o dvd.iso disc1-mountpoint disc2-mountpoint
Don’t forget to unmount those mountpoints afterwards.
Here’s a shell script to do the work. It assumes it’s in a directory with a subdirectory called isos, which contains the source .iso images. It has no error handling, so the usual caveats apply:
#!/bin/sh rm -rf mnt contents mkdir mnt contents for i in isos/*.iso; do mount -t iso9660 -o loop $i mnt cp -av mnt/* contents umount mnt done # This bit is specific to merging FreeBSD .isos. sed -i -e 's/^CD_VOLUME = .$/CD_VOLUME = 1/' contents/cdrom.inf sed -i -e 's/|.$/|1/' contents/packages/INDEX mkisofs -l -J -R -o dvd.iso contents rm -rf mnt contents
And here’s how you merge several .iso files into a single one on FreeBSD, and how to do it for FreeBSD .iso images.