I remember back in 1995 when I was 9 years old our family excitedly got its first CD-ROM drive. This was just before we moved to Singapore and were still living in Australia, and that small little Creative Hex Speed optical spinning wonder cost us a small optical spinning fortune. It was proudly installed above the 5.25 inch floppy drive in our generic 486SX PC clone tower. It came with 10 CDs, we had 2 already. I still have that CD-ROM drive.

MENTAL NOTE: Spend less time on the introductions and more on the actual content on the post. Nobody cares about your first CD-ROM drive!

Here we are in 2008 and despite the fact I haven't toasted or bought a CD for years I'm literally swimming in thousands of them. As a Windows user back in the dark days I remember I used Nero Express to create backup ISOs out of CDs, then either burn those ISOs to a single DVD or store them on a backup hard disk. Fortunately FreeBSD has similar capabilities with the venerable command line dd utility.

Spiffy somewhat related icons from the Tango Desktop Project
Spiffy icons from the Tango Desktop Project

Insert the CD you want to copy (no, really?), then enter the line below. Substitute acd0 with an alternative device if you have multiple optical drives:

# dd if=/dev/acd0 of=[YOUR_NAME_OF_IMAGE].iso bs=2048

This will take some time. Naturally the CPU power your machine has and the read speed of your optical drive will affect performance. A 52x optical drive on my 3.0GHz E8400 Core 2 Duo desktop takes a few minutes, my MacBook Pro a few minutes longer still, I'm sure our family 486 with a hex speed drive would take considerably longer!

For what it's worth, the same procedure can be used on NetBSD and Mac OS X from my own testing. Just switch the virtual device /dev/acd0 with the relevant line for your OS. Isn't BSD heritage fantastic? :-)