- Describe how to write UDF images to CDs
- Add systemd replacement for the /etc/init.d/pktcdvd init script
Configure the kernel to support the filesystems necessary for reading and writing ISO disks.
File systems ---> CD-ROM/DVD Filesystems ---> <*> ISO 9660 CDROM file system support [*] Microsoft Joliet CDROM extensions [*] Transparent decompression extension <*> UDF file system support
Follow the CDROM page for hardware driver kernel configuration, along with including UDF write support.
emerge --ask app-cdr/cdrtools
emerge --ask app-cdr/dvd+rw-tools
For UDF writing, ensure included the above mentioned UDF kernel drivers and the following package:
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 for the ISO9660/UDF filesystem.
Determine the size of media
First, find the maximum size the media can contain.
Track Size: 24438784*2KB
Or 24438784*2KB = 48877568 KB for 50GB BD-R DL (Blu-ray dual layer) media.
truncate --size=48877568KB test.udf
Or you can use the following with disabling defect management:
truncate --size=50GB ./test.udf
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:
mkudffs --lvid="MY_VOLUME" --utf8 ./test.udf
Mount the filesystem:
sudo mount -oloop,rw ./test.udf /mnt/tmp/
rsync -ax --delete /home/larry/Documents/ /mnt/tmp/
Verify proper permissions are preserved:
chown -R larry.larry /mnt/tmp
chmod -R a+r /mnt/tmp
chmod -R go-w /mnt/tmp
CD-RW media requires the packet device driver and starting the /etc/init.d/pktcdvd service and the following line within /etc/fstab:
/dev/pktcdvd/0 /mnt/udfwrite udf user,noauto,noatime,utf8 0 0
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.
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:
diff -urN ./some/files /mnt/dvd/
cdrecord -speed=40 dev=2,0,0 -eject -dao driveropts=burnfree test.iso
TODO: CD UDF writing.
BD defect management
By default growisofs uses defect management which requires 256MB extra space and uses reduced write speeds. This may be disabled via:
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.
growisofs -Z /dev/sr0=test.iso
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:
DVD+RW and BD-RE media only require formating once! See dvd+rw-format man.
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:
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:
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:
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:
growisofs -use-the-force-luke=spare:none -dvd-compat -speed=4 -Z /dev/sr0=test.udf