||The neutrality of this article is disputed. (February 2014)|
|Original author(s)||Jörg Schilling, Eric Youngdale, Heiko Eißfeldt, James Pearson|
|Initial release||4 February 1996|
|Preview release||3.01a23 (4 March 2014[±])|
|Operating system||Cross-platform (see Compatible operating systems)|
|License||CDDL, GNU GPL and GNU LGPL|
|As of||March 2014|
The most important parts of the package are cdrecord, a console-based burning program; cdda2wav, a CD audio ripper that uses libparanoia; and mkisofs, a CD/DVD/BD/UDF/HFS filesystem image creator. Because these tools do not include any GUI, many graphical front-ends have been created.
- 1 Features
- 2 History and name change
- 3 Licensing issues
- 4 cdrtools versus cdrkit versus libburnia
- 5 Compatible operating systems
- 6 Availability of precompiled binary packages
- 7 Version history
- 8 Examples of use
- 9 Forks
- 10 Software that can use cdrtools
- 11 References
- 12 External links
The collection includes many features, such as:
- creation of audio, data, and mixed (audio and data) CDs.
- burning CD-R, CD-RW and DVD-R, DVD-RW, DVD+R and DVD+RW, both single and dual layer DVDs.
- several burning modes, such as Track-At-Once and Disc-At-Once
- cue sheet based writing using the control file format from cdrwin including enhancements for ExactAudioCopy
- ability to process Blu-ray Discs
- understanding and exploitation of many vendor specific drive features.
History and name change
The first releases of cdrtools were called cdrecord because they only included the cdrecord tool and a few companion tools, but not mkisofs nor cdda2wav. In 1997, a copy of mkisofs (developed at that time by Eric Youngdale) was included in the cdrecord package. In 1998, a copy of an experimental version of cdda2wav (developed at that time by Heiko Eißfeldt) was included in the cdrecord package.
In 2000, Jörg Schilling changed the name of his package from "cdrecord" to "cdrtools" to better reflect the fact that it had become a collection of tools.
Until 2006, cdrtools was the standard and most used software suite in its category on GNU/Linux systems as well as on several other operating systems (mainly BSD-based).
The project was originally licensed under the GNU General Public License (GPL).
With version 1.11a17 (released in 2002), a section of cdrtools' source code was modified to include an invariant section, with the intent to prevent people from distributing variants with intentional bugs under the original name. The purpose of this invariant section was to make sure any modification to cdrecord would be properly reported as such to the user. Publishing the modified cdrtools code under the restricted terms of the invariant section is still permitted if the code is distributed with a different name, as is common in open source projects. A snippet of the invariant section in cdrecord.c is shown below.
In May 2006, most parts of cdrtools were switched to the CDDL with permission from their authors. After this license change some parts of cdrtools (e.g. mkisofs, which is still GPL-licensed) use code that was switched to CDDL, (e.g. libscg, the SCSI Transport Layer developed by Jörg Schilling).
According to the Free Software Foundation, the CDDL is compatible with the OpenSource definition of free software, but incompatible with the GNU General Public License (GPL). Jonathan Corbet, founder of the LWN.net news source argued this makes it impossible to legally distribute cdrtools binaries.
On 31 Jan 2006, Debian had opened a bug over this license change when noticing the change in the previous version 2.01.01a03  with concerns about how the GPL license in some of its components interacted with the CDDL license in cdrtools makefiles, which fall under the requirement of the GPL license to distribute source code. GPL allows code with different licenses to be aggregated as collective works in the same distribution when one is not derived from the other, but not for software that makes a derivative work such as statically linked code, so Debian developers decided that the files under the CDDL license were incompatible with their distribution and removed them.
Jörg Schilling's position is that any open source operating system can distribute cdrtools as long as the terms of the licenses are respected. In September 2006, four months after the license change, Schilling added support for dynamic-linking cdrtools, hoping this would be enough for the GNU/Linux distributions to restart distributing cdrtools.
Because of this license change, several GNU/Linux distributions stopped distributing the re-licensed cdrtools in 2006. Debian, Red Hat, and Mandriva have all either dropped cdrtools or reverted to the last non-CDDL release of cdrtools, and have not reverted that decision until now. Just before dropping cdrtools in 2006, the Debian project created cdrkit, a fork of cdrtools. cdrkit is distributed by most of the GNU/Linux distributions which have dropped cdrtools.
In August 2008, Mark Shuttleworth offered to ask the Software Freedom Law Center for a legal opinion on whether cdrtools could be included in Ubuntu, provided Schilling agreed to accept the opinion. SFLC's chairman Eben Moglen published a summary of his discussion with Schilling. Eblen stated that the GPL compatibility of mkisofs was broken, because fulfilling all clauses of GPL and CDDL at the same time is impossible, and that Schilling would need to allow permission to use the software under the GPL terms to make distribution of the combined work possible.
According to Moglen, Schilling disagreed that additional permissions were required, and Shuttleworth abandoned the attempt to include cdrtools in Ubuntu. However, Jörg Schilling denied the accuracy of Morgen's version, stating that his depiction of their conversation was in conflict with what really happened.
Invariant section in the license
Some versions of cdrtools included warnings against using Linux Kernel Version 2.6.x or SUSE Linux. These warnings were wrapped in an invariant section, to prevent removal. Jörg Schilling said they are part of the "appropriate copyright" and "no warranty" notice required by the GPL. Corbet disagreed with Jörg, and stated that the GPL only requires printing of an "appropriate" copyright notice, but do not require to use the exact text provided by the original author and this warning may therefore be replaced with a neutral copyright attribution.
The snippet of the invariant section was sent to a Debian mailing list on 2 September 2004. In cdrtools 2.01, it starts at line 296 (and ends at line 408) of file cdrtools-2.01/cdrecord/cdrecord.c of the cdrtools-2.01.tar.bz2 source archive.
cdrtools versus cdrkit versus libburnia
|Software suite||Commands for|
The following tables list some differences between cdrtools, cdrkit and libburnia. (The comparisons apply to the latest releases of each software suite.)
|License(s)||CDDL (cdrecord, libscg, etc.),
GPL (mkisofs), LGPL (libparanoia)
|Can be built from source code on most architectures of most operating systems||Yes||Some||Some|
|Is included in most major GNU/Linux distributions||Some||Yes||Yes|
|Is included in all BSD-based distributions||Yes||No||No|
|Implements privilege separation from calling code to avoid the need of security auditing for callers||Yes||Yes||Partial|
|Year of first public release||1996||2006||2006|
|cdrecord (cdrtools)||wodim (cdrkit)||cdrskin (libburnia)|
|Has support for Blu-ray Discs||Yes||No||Yes|
|Has support for most existing[weasel words] hardware, including models with buggy[weasel words] firmware||Yes||Some||Some|
|Has support for DVD-9 (8.5 GB dual layer DVD) media||Yes||No||Yes|
|Has support for custom Layer Jump Recording (to tell the burner when to switch to the second layer on dual-layer DVDs)||Yes||No||No|
|Has support for automatic Layer Jump Recording (the burner decides when to switch to the second layer on dual-layer DVDs)||Yes||No||Yes|
|Has support for capability-based security (on GNU/Linux systems supporting it), which means the burn program does not need to be installed with setuid access rights (in other words, burn operations can be performed by unprivileged users with increased security)||Yes||No||No|
|Supports "Disc Tattooing" CD-R and DVD media with DiscT@2-capable burners||Yes||No||No|
|Supports ".inf" files for CD-audio||Yes||Partial||No|
|Supports ".cue" files for CD-audio||Yes||Partial||Partial|
|mkisofs (cdrtools)||genisoimage (cdrkit)||xorriso (libburnia)|
|Has support for big files (size ≥ 4 GiB) and multi-extent files||Yes||No||Yes|
|Has support for UDF filesystems (required for video DVD/BD)||Yes||Partial||No|
|Has support for Rock Ridge||Yes||Partial||Yes|
|Has support for sub-second time stamp granularity in Rock Ridge extensions||Yes||No||No|
|Has support for microsecond time stamp granularity in UDF filesystems||Yes||No||No|
|Has support for all three Unix times ("atime", "ctime" and "mtime") in both Rock Ridge and UDF||Yes||Partial||Partial|
|Has EFI boot support (for creating bootable media)||Yes||Some||Yes|
|Has built-in Jigdo support (for creating .jigdo and .template files along with the ISO image file)||No||Yes||Yes|
|Has support for a built-in POSIX-compliant "-find" option||Yes||No||Some|
|Can be instructed to ignore and bypass a user supplied list of errors during image masterisation (not recommended unless used with the "-print-size" option)||Yes||No||Yes|
|cdda2wav (cdrtools)||icedax (cdrkit)||cdrskin (libburnia)|
|Has support for capability-based security (on GNU/Linux systems supporting it), which means the audio extraction program does not need to be installed with setuid access rights (in other words, ripping can be performed by unprivileged users with increased security)||Yes||No||No|
|Supports to use libparanoia for audio extraction||Yes||Yes||No|
|Supports to display C2 errors in paranoia mode||Yes||No||No|
|libparanoia statitstics work||Yes||No||No|
|Supports to extract hidden tracks||Yes||No||No|
|Supports to create .inf files||Yes||Partial||No|
|Supports to create .cue files||Yes||No||No|
|Supports to compute MD5 checksums for the extracted audio data||Yes||No||No|
|Implements remote controlled mode for better DAE properties in GNOME||Yes||No||No|
Compatible operating systems
The latest alpha release of cdrtools can be compiled on the following operating systems :
- Apple Rhapsody
- Windows 9x/ME/NT
- SCO OpenServer
- Mac OS X
- SCO UnixWare
- DragonFly BSD
- Atari MiNT
Availability of precompiled binary packages
Many operating system vendors, but not all, do distribute cdrtools. Because some major GNU/Linux distributions do not, several dedicated individuals have decided to help the community by providing unofficial 3rd-party builds of cdrtools. This table lists some popular operating systems, as well as some GNU/Linux distributions that ship cdrtools.
|Operating system||Kernel family||Builds of cdrtools|
|DragonFly BSD||xBSD (DragonFly)|
|Project Name||Preview Releases||Stable Release||Notes|
|cdrecord||Old version, no longer supported: 1.00||1996-02-04|
|Old version, no longer supported: 1.01||1996-10-04|
|Old version, no longer supported: 1.02||1996-12-20|
|Old version, no longer supported: 1.03||1997-05-16|
|Old version, no longer supported: 1.04||1997-05-23|
|1.5a1||1.5a9||Old version, no longer supported: 1.05||1997-09-15|
|1.6a01||1.6a15||Old version, no longer supported: 1.06||1998-04-18|
|1.6.1a1||1.6.1a7||Old version, no longer supported: 1.06.1||1998-10-19|
|1.8a01||1.8a40||Old version, no longer supported: 1.08||2000-01-28|
|1.8.1a01||1.8.1a09||Old version, no longer supported: 1.08.1||2000-04-27|
|1.9a01||1.9a05||Old version, no longer supported: 1.09||2000-07-20|
|cdrtools||1.10a01||1.10a19||Old version, no longer supported: 1.10||2001-04-22|
|Old version, no longer supported: 2.00||2002-12-25|
|Old version, no longer supported: 2.00.3||2003-05-28|
|2.01a01||2.01a38||Old version, no longer supported: 2.01||2004-09-09||This series was the last GPL-licensed version and was used as base for the fork cdrkit.|
|2.01.01a01||2.01.01a80||Current stable version: 3.00||2010-06-02||On May 2006, most parts of cdrtools were switched to the CDDL, resulting in a package containing both GPL-ed and CDDL-ed sources. However, 4 months later, the author added support for dynamic-linking. Blu-ray support is available since July 2007|
|3.01a01||Latest preview version of a future release: 3.01a23||2014-03-04|
Examples of use
mkisofs has many options, but only a few are usefull for most basic uses.
|-V volid||Specify a volume identifier (i.e. a string of at most 32 characters) that will appear as the name or label of the CD/DVD/BD.|
|-J||Enable Joliet (recommended to allow long names to be seen on Windows systems).|
|-r||Enable "rationalized" Rock Ridge, i.e. with Rock Ridge but using default file ownerships and modes (recommended to allow long names on Unix-like systems).|
|-o filename||File name to use for the ISO image.|
The examples given below show how to create a simple ISO image for a data CD/DVD/BD.
- Simplified syntax:
mkisofs [ -J ] [ -r ] [ -V "my dvd" ] -o image.iso source
- To create an image with both Rock Ridge and Joliet, using the contents of the source directory:
mkisofs -J -r -o image.iso source
- The same as above, but with a title for the CD/DVD/BD, and without Rock Ridge:
mkisofs -J -V "my dvd" -o image.iso source
- To create an image with Rock Ridge but no Joliet, using the contents of the source directory, but using short Rock Ridge time stamps (option "-short-rr-time" is recommended on Linux):
mkisofs -r -short-rr-time -o image.iso source
- To print the estimated filesystem size (in multiples of 2048 bytes) of an image but without creating it, replace "-o image.iso" by "-print-size", like this:
mkisofs -J -r -print-size source
cdrecord has many options, but only a few are usefull for most basic uses.
- To show the available optical disc drives:
- To eject the media of the default optical disc drive, or just open its tray:
- To close the tray of the default optical disc drive:
- To show the capabilities of the default optical disc drive:
- To show the table of contents of a media in the default optical disc drive:
cdrecord -dao image.iso
- The same as above, but with the "-overburn" option, if the image is bigger than the default media size:
cdrecord -dao -overburn image.iso
In all commands above, it is possible to specify a device using the "dev=x,y,z" syntax (where "x,y,z" is the identifier of the optical disc drive as listed by the "-scanbus" option). This is required unless there is only one possible choice.
- DVD-R Tools
Software that can use cdrtools
- Brasero (Unix-like)
- cdrtfe (Windows)
- cdw (Unix-like)
- GnomeBaker (Unix-like)
- InfraRecorder (Windows)
- K3b (Unix-like)
- Silicon Empire (cross-platform)
- X-CD-Roast (Unix-like)
- Schilling, Jörg (18 May 2010). "cdrtools 3.00 release announcement". Retrieved 2010-05-18.
- Schilling, Jörg (2 June 2010). "cdrtools 3.00 release notes". Retrieved 2010-06-02.
- Schilling, Jörg (4 March 2014). "cdrtools 3.01a23 announcement". Retrieved 2014-03-04.
- mksofs-1.11 was incorporated to cdrecord-1.5a3 on 5 July 1997 (source: AN-1.5a3)
- cdda2wav-0.95beta07 was incorporated to cdrecord-1.8a6 on 27 October 1998 (source: AN-1.8a6)
- cdrecord and its friends (mkisofs and cdda2wav) are distributed in a common package called cdrtools since 27 July 2000 (source: AN-1.10a01).
- See the file LIMITATIONS
- "Trademark and OSS".
- The license change took place on 15 May 2006, when cdrtools-2.01.01a09 was released. (Source: AN-2.01.01a09)
- "Various Licenses and Comments About Them - Common Development and Distribution License". Free Software Foundation. Retrieved 2006-12-31.
- Jonathan Corbet (2006-08-12). "cdrtools - a tale of two licenses". LWN.net. LWN.net. Retrieved 2007-08-04.
- "RM: cdrtools -- RoM: non-free, license problems". Debian Bug report logs.
- Dangerous Liaisons - Software combinations as Derivative Works?, Lothar Determan
- cdrtools may be distributed in source and/or binary form, as indicated in file "COPYING" of any recent source tarball, (e.g. COPYING for the current stable release).
- See message 17 in bugs.launchpad.net/ubuntu/+source/cdrtools/+bug/213215.
- "#377109 - RM: cdrtools -- RoM: non-free, license problems - Debian Bug report logs". Retrieved 2007-08-04.
- "Information for build cdrtools-2.01-11.fc7". Retrieved 2007-08-04. "moved back to version 2.01 (last GPL version), due to incompatible license issues"
- "[Fedora-legal-list] Legal CD/DVD/BD writing software for RedHat and Fedora".
- "Mandriva Cooker : The Inside Man V". Retrieved 2007-08-04.
- "cdrkit (fork of cdrtools) uploaded to Debian, please test". Retrieved 2007-08-04.
- "Minutes from the Technical Board meeting, 2008-08-26". Retrieved 2008-09-15.
- "Eben Moglen's view on mkisofs GPL (non-)compliance". Arch Linux.
- "Eben Moglen's view on mkisofs GPL (non-)compliance". Arch Linux.
- Corbet, Jonathan (2009-08-12). "The unending story of cdrtools". LWN.net. LWN.net. Retrieved 26 February 2014.
- libburnia is expected to replace cdrkit on those distributions that do not ship cdrtools. Source: cdrtools, cdrkit and cdrskin: Untying the knot.
- In January 2012 former Debian Project Leader Steve McIntyre wrote : "I’m the primary maintainer of cdrkit at this point, but I’d prefer to have it go away. Xorriso and the associated software in libisoburn is almost capable of replacing all the aging cdrtools-derived software that we have in Debian, The only missing feature that I’m aware of is creating the HFS hybrid filesystems that we use for installations on Mac systems. I’ve been talking with the upstream folks about this for some time already, and I’m hoping we can finish this soon enough that we can get it into Wheezy." Source: McIntyre, Steve (13 January 2012). "People Behind Debian: Steve McIntyre, debian-cd maintainer, former Debian Project Leader". Retrieved 2014-02-02. As of March 2014[update] this did not happen yet, and Wheezy was released in May 2013  with cdrkit.
- mkisofs(8) man page.
- cdrecord(1) man page.
- readcd(1) man page.
- cdda2wav(1) man page.
- man page.
- man page.
- man page.
- man page.
- xorriso(1) man page.
- cdrskin(1) man page.
- Recent releases of cdrtools compiles from source code on most architectures of most operating systems, as shown in section #Compatible operating systems
- Most GNU/Linux distributions stopped distributing cdrtools after the license change. See section #Licensing issues. However, during the past years some GNU/Linux distributions did restart shipping cdrtools.
- No privilege separation available in case libburn is called as library
- Support for capability-based security was added on 22 April 2013 with the release of cdrtools 3.01a14. (Source: AN-3.01a14)
- No support for hidden tracks and other features introduced since 2004
- Snippet from the POSIX permission support, there is no support for symlinks.» man page: «UDF support is currently in alpha status and for this reason, it is not possible to create UDF-only images. UDF data structures are currently coupled to the Joliet structures, so there are many pitfalls with the current implementation. There is no UID/GID support, there is no
- «xorriso does not produce UDF filesystems which are specified for official video DVD or BD.» Source: xorriso overview and xorriso(1) man page.
- genisoimage is compliant with Rock Ridge version 1.10 (producing the "RRIP_1991A" signature) but not with version 1.12, which has a "IEEE_1282" signature and embeds file serial numbers in the "PX" SUSP tags.
- The time stamp granularity with Rock Ridge extensions in mkisofs is 1 centi-second with the "-long-rr-time" option (enabled by default), and 1 second with the "-short-rr-time" option. The "-long-rr-time" option appeared with cdrtools 3.01a01 on 24 November 2010. (Source: AN-3.01a01)
- Because Linux systems do not handle sub-second time stamp granularity in Rock Ridge extensions and show Epoch date 1 January 1970, Linux users creating iso images with Rock Ridge extensions but without an UDF filesystem are advised to use the "-short-rr-time" option of mkisofs.
- The time stamp granularity in UDF filesystems created with mkisofs is 1 microsecond.
- Support for all three Unix times for Rock Ridge extensions was already available in mkisofs 1.11 which was shipped with cdrecord 1.5a1 on 22 June 1997. (Source: lines 376 to 380 of file cdrecord-1.5/mkisofs-1.11/rock.c of archive cdrecord-1.5a1.tar.gz)
- Support for all three Unix times for UDF was added to cdrtools 3.01a13 on 26 February 2013. (Source: AN-3.01a13)
- Support for all three Unix times in genisoimage is only available for Rock Ridge.
- Support for all three Unix times in xorriso is only available for Rock Ridge because xorriso does not create UDF filesystems.
- EFI boot support in mkisofs is available with the "-eltorito-platform efi" option.
- EFI boot support in genisoimage is available for Fedora/RHEL/CentOS (with an -E option). But it is missing in the non modified genisoimage.
- Although jigdo is a very usefull tool, the lack of built-in support for it in mkisofs is not a big issue since most users who create jigdo files already know how to use the stand-alone command.
- An external POSIX-compliant find command can of course be used with genisoimage, but if the length of its output exceeds the maximum command line lengh, then genisoimage will not get the complete list of files.
- The -find option of xorriso is not POSIX-compliant and its syntax is very different from that of the find Unix command.
- Error control in mkisofs may be specified with the "errctl=" option.
- icedax is not installed with setuid access rights and as a result can only use functions that are available to unpriviledged users. This prevents vendor specific commands that deliver better DAE quality in edge cases.
- But using an outdated version of libparanoia that does not work well with todays drives
- Support for SunOS-4.1.3 or later, Solaris 2.3 or later and Linux were already present in cdrecord 1.04 which was released on 23 May 1997. (Source: file AN-1.4 of archive cdrecord-1.5a1.tar.gz)
- Support for FreeBSD was added on 5 July 1997 to cdrecord-1.5a3. (Source: AN-1.5a3)
- cdrecord 1.05, released on 15 September 1997, was the first stable release to support *BSD (FreeBSD, NetBSD and OpenBSD), IRIX and HP-UX.(Source: AN-1.05)
- Support for NetBSD and OpenBSD was added on 8 July 1997 to cdrecord-1.5a4. (Source: AN-1.5a4)
- Support for IRIX was added on 26 August 1997 to cdrecord-1.5a6. (Source: AN-1.5a6)
- Support for HP-UX was added on 1 September 1997 to cdrecord-1.5a7. (Source: AN-1.5a7)
- Support for AIX was added on 29 November 1997 to cdrecord 1.6a7. (Source: AN-1.6a7)
- First Apple Rhapsody support (binary only) added on 8 February 1998 to cdrecord 1.6a8. (Source: AN-1.6a8)
- Support for Apple Rhapsody, OS X and NeXTSTEP was added on 16 September 1999 to cdrecord 1.8a28. (Source: AN-1.8a28)
- cdrecord 1.08, released on 28 January 2000, was the first stable release to support OS/2, BeOS, SCO OpenServer, Apple Rhapsody, Mac OS X, NeXTSTEP and QNX. The QNX port, however, does not yet have SCSI transport. (Source: AN-1.08)
- Support for BSD/OS was added on 23 August 1998 to cdrecord 1.6.1a1 with a new SCSI transport code. (Source: AN-1.6.1a1)
- cdrecord compiles on Windows NT with Cygwin since 23 August 1998. (Source: AN-1.6.1a2)
- Support for Windows NT/9x and SCO OpenServer was added to cdrtools/cdrecord 1.8a22 on 13 May 1999 and also works on newer releases of Windows NT. (Source: AN-1.8a22)
- cdrtools builds without any patch on Windows with MinGW since 4 January 2014. (Source: AN-3.01a21).
- Support for OSF-1 was added on 6 October 1998 to cdrecord 1.6.1a4. (Source: AN-1.6.1a4)
- Support for OS/2 was initiated on 22 November 1998 with cdrecord 1.8a11. (Source: AN-1.8a11)
- Support for BeOS was added on 6 December 1998 to cdrecord 1.8a14. (Source: AN-1.8a14)
- Partial support for QNX (without SCSI transport code) was added on 7 January 2000 to cdrecord 1.8a39 (Source: AN-1.8a39)
- Support for SCO UnixWare was added on 26 August 2000 to cdrecord 1.10a03 (Source: AN-1.10a03)
- cdrtools builds without any patch on AmigaOS since 18 January 2002. (Source: AN-1.11a13)
- Support for DOS/DJGPP was added on 10 December 2003 to cdrtools 2.01a20. (Source: AN-2.01a20)
- Support for DragonFly BSD was added on 30 January 2006 to cdrtools 2.01.01a05. (Source: AN-2.01.01a05)
- Support for Zeta was added on 9 February 2006 to cdrtools 2.01.01a06. (Source: AN-2.01.01a07)
- Support for Atari MiNT was added on 25 December 2008 to cdrtools 2.01.01a54. (Source: AN-2.01.01a54)
- Support for Haiku and Syllable was added on 9 March 2009 to cdrtools 2.01.01a58. (Source: AN-2.01.01a58)
- Support for OpenVMS was added on 1 November 2009 to cdrtools 2.01.01a67. (Source: AN-2.01.01a67)
- cdrtools builds without any patch on Debian GNU/kFreeBSD since 15 August 2012. (Source: AN-3.01a08)
- Use Ubuntu packages from Brandon Snider
- on macports.org
- Support for Blu-ray Discs was added on 4 July 2007 to cdrtools 2.01.01a29. (Source: AN-2.01.01a29)