CDemu is a kernel module that emulates a CD- or DVD-ROM device. It enables you to use disc images that contain more than a standard ISO-9660 filesystem, like .bin/.cue, .nrg, or .ccd images. It's needed only because mount can only directly handle .iso disc images, which can only contain a single filesystem, but many CDs have multiple sessions, mixed data/audio tracks, etc. CDemu enables you to get to the full, original contents of these CD images.
The original CDemu is currently at version 0.8. As you can read on the CDemu website, development has stopped on that line of CDemu, and a rewrite is under way, dubbed userspace-cdemu. userspace-cdemu should be even more stable than the original version at this point.
Using Original CDemu
CDemu can be found in the unsupported section of AUR under the obvious name of cdemu.
TODO: somebody with more experience with original CDemu please fill this out.
userspace-cdemu has a different architecture than the original. Instead of a single kernel module that does all the work parsing image files and presenting the data to the user, userspace-cdemu takes advantage of a kernel module (vhba) that simply emulates a SCSI CD/DVD device, putting off as much work on the existing kernel code as possible. Then the cdemud daemon (cdemud) runs in the background communicating with the kernel module. The image parsing code has been abstracted out into a library (libmirage), and can be easily extended for future formats. The daemon responds to dbus commands from clients. The userspace-cdemu package comes with two example clients: one that simply runs from the command line (cdemu-client), and a GNOME panel applet (gcdemu).
The userspace-cdemu suite can be found under the unsupported section of AUR. A search for "userspace-cdemu" should turn up all the necessary packages.
You'll need to install at least following packages, in roughly this order:
- vhba or vhba-module
- cdemud or cdemu-daemon
From here, you've got options of what client you want to use. The simple command line client is cdemu-client, and the GNOME panel applet is gcdemu. You'll need at least one, but you can install both too as they don't conflict.
Once all the requisite packages are installed, you'll want to start the daemon. You can do that by simply running:
# /etc/rc.d/cdemud start
Add cdemud to the list of DAEMONS= in /etc/rc.conf to have the daemon start when the system boots. The cdemud rc script inserts the vhba kernel module, so you don't need to worry about adding vhba to MODULES=.
Now you're ready to use all those .bin CD images you have lying around. The command line client is simple enough:
$ cdemu load 0 <imagefile>
will load the imagefile to the first (and only by default) emulated device.
NOTE: If you run cdemud by initscript, you may need to add '-b system' option when calling cdemu.
$ cdemu -b system load 0 <imagefile>
Or, to use the GNOME panel applet, right click on a panel and click "Add to Panel...", scroll all the way down and add the "gCDEmu Applet". Then simply click on the icon and click on whatever device to bring up the open file dialog, select an image file, and hit ok.
Now, you can mount the virtual CD so you can get to the data on it:
# mount -t iso9660 /dev/sr1 /media
/dev/sr1 is the device that cdemud will create if you already have one real CD/DVD device (which would be /dev/sr0). Tailor that line to suit your system.
From here, you can browse the CD's data contents in /media like it was any regular CD.
If you ever run into problems with the following line at the beginning:
Add the following line to /etc/dbus-1/cdemud-dbus.conf, after <policy context="default">: