CD/DVD/BD writing

From Gentoo Wiki
Jump to: navigation, search
Article status
This article has some todo items:
  • Describe how to write UDF images to CDs
  • Add systemd replacement for the /etc/init.d/pktcdvd init script

Installation

Kernel

Configure the kernel to support the filesystems necessary for reading and writing ISO disks.

KERNEL Enable ISO 9660 and UDF filesystem support
File systems  --->
   CD-ROM/DVD Filesystems  --->
      <*> ISO 9660 CDROM file system support
      [*]   Microsoft Joliet CDROM extensions
      [*]   Transparent decompression extension
      <*> UDF file system support

Emerge

Follow the CDROM page for hardware driver kernel configuration, along with including UDF write support.

Install the app-cdr/cdrtools or app-cdr/dvd+rw-tools packages, for writing CD/DVD/BD media:

root #emerge --ask app-cdr/cdrtools

Or:

root #emerge --ask app-cdr/dvd+rw-tools

For UDF writing, ensure included the above mentioned UDF kernel drivers and the following package:

root #emerge --ask sys-fs/udftools

Best practice is to use read write (RW/RE) media for testing writing ISO9660/UDF filesystem images. If a command fails to work, or the hardware or media fails, you can try again.

Usage

Usage for the ISO9660/UDF filesystem.

Determine the size of media

First, find the maximum size the media can contain.

user $dvd+rw-mediainfo /dev/sr0
Track Size:            24438784*2KB

Or 24438784*2KB = 48877568 KB for 50GB BD-R DL (Blu-ray dual layer) media.

user $truncate --size=48877568KB test.udf

Or you can use the following with disabling defect management:

user $truncate --size=50GB ./test.udf
Note
Defect management sets aside 256MB aside during formatting and also reduces write to half-speed. See the writing section below for specifics.

Create and populate filesystem

Create either a ISO9660 or a UDF filesystem. Microsoft Windows uses lvid for optical media title:

user $mkudffs --lvid="MY_VOLUME" --utf8 ./test.udf

Mount the filesystem:

user $sudo mount -oloop,rw ./test.udf /mnt/tmp/

Populate filesystem:

user $rsync -ax --delete /home/larry/Documents/ /mnt/tmp/

Verify proper permissions are preserved:

user $chown -R larry.larry /mnt/tmp
user $chmod -R a+r /mnt/tmp
user $chmod -R go-w /mnt/tmp

Writing

CD-RW media

CD-RW media requires the packet device driver and starting the /etc/init.d/pktcdvd service and the following line within fstab:

FILE /etc/fstab
/dev/pktcdvd/0  /mnt/udfwrite  udf             user,noauto,noatime,utf8  0 0
Note
Within the Linux kernel, the pktcdvd driver has been marked as deprecated as of 2016 and slated for removal within a version or two of kernel releases. As of the writing 2020.02.02, the driver still exists. Instead, try writing directly to mounted CD-RW media formated with the UDF filesystem.

DVD/Blu-ray (RW/RE) media

DVD-RW, DVD+RW, and Blu-ray Recordable Erasable (BD-RE) media can be easily written by simply mounting the media and writing to the media as a normal filesystem, as these devices and media allow random writing, versus CD-RW only allowing sequential writing.

The following simply automates writing a ISO9660 by piping to mkisofs, then writing.

user $ growisofs -dvd-compat -rock -V "TITLE" ./some/files /dev/sr0

The commands mkisofs/growisofs provide the "-udf" option for writing a bridged/hybrid ISO9660/UDF filesystem. This option may waste disc space, upwards of 483,328 bytes or sectors 20-256. See mkisofs "-UDF" option.

Verify write session:

user $ diff -urN ./some/files /mnt/dvd/

Image writing

CD writing

ISO
user $cdrecord -scanbus
user $cdrecord -speed=40 dev=2,0,0 -eject -dao driveropts=burnfree test.iso
UDF

TODO: CD UDF writing.

DVD/Blu-ray

BD defect management

By default growisofs uses defect management which requires 256MB extra space and uses reduced write speeds. This may be disabled via:

root #dvd+rw-format /dev/dvd -ssa=none

The only reason for disabiling defect management, is for writing maximum possible size of the media, and typically unwise.

ISO
user $growisofs -Z /dev/sr0=test.iso
UDF
UDF Direct Writing

For writing, modifying, removing files to/from UDF filesystem mounted DVD and Bluray media, users only require the common cp and rm tools.

Linux kernel requirements, compile without pktcdvd or blacklist the module for avoiding conflicts, include the usual SCSI related drivers for the optical drive and enable the UDF fileystem driver. Verify and/or recompile, reboot as needed.

First, insert a blank DVD/BD rewritable disc:

root #dvd+rw-format /dev/sr0
Note
DVD+RW and BD-RE media only require formating once! See dvd+rw-format man.
root #mkudffs -l video --media-type=dvd /dev/sr0

(FIXME: The option "--media-type" may not be required and possibly auto detected.)

Then, mount the filesystem:

root #mount -t udf -o rw,noatime /dev/sr0 /mnt/dvd

From here, the UDF filesystem mounted disc can be used as a normal writable mount.

Finally, verify any write operations:

root #diff -urN /your/file /mnt/dvd/your/file

If needed, monitor /var/log/messages for mounting/write operations.

If drive operations are excessively slow or delayed, use "dvd+rw-format -lead-out" for improving disc compatibility. Read dvd+rw-format author/maintainer's website notes. Also if possible, specifying the booktype via dvd+rw-booktype may help but is untested here as of writing this.

UDF Image Writing

Atypically, an alternative to write within the limits of the DVD/BD media's size limitations:

user $growisofs -dvd-compat -Z /dev/sr0=test.udf

If the above truncate with 25GB/50GB, specifying the top limits of BD media, has been used, disable Defect Management requiring 256MB extra space:

user $growisofs -use-the-force-luke=spare:none -dvd-compat -speed=4 -Z /dev/sr0=test.udf