From a242af235256dda2fb37b3e7fcb5b650e925ac87 Mon Sep 17 00:00:00 2001 From: Thomas Schmitt Date: Tue, 7 Jul 2020 13:44:15 +0000 Subject: [PATCH] --- Cdrskin.md | 293 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 293 insertions(+) create mode 100644 Cdrskin.md diff --git a/Cdrskin.md b/Cdrskin.md new file mode 100644 index 0000000..3ee6edf --- /dev/null +++ b/Cdrskin.md @@ -0,0 +1,293 @@ +![](/uploads/f3299f3d9c29ef587d35afeeb672a8a2/doener_150x200_tr.png)[Doener](http://en.wikipedia.org/wiki/Doner_kebab) + +### cdrskin is the cdrecord compatibility middleware of libburn and part of its release tarball. + +Its paragon, cdrecord, is a powerful GPL'ed burn program included in Joerg +Schilling's cdrtools. cdrskin strives to be a second source for the services +traditionally provided by cdrecord. Currently it does CD-R and CD-RW this way. +Overwriteable media DVD-RAM, DVD+RW, DVD-RW, and BD-RE are handled differently +than with cdrecord-ProDVD in order to offer TAO-like single track recording. +Sequential DVD-R[W], DVD+R, DVD+R DL, BD-R are handled like CD-R[W] with TAO +and multi-session. Additionally cdrskin offers cdrecord-ProDVD-like mode DAO +with DVD-R[W]. + +cdrskin does not contain any bytes copied from cdrecord's sources. +Many bytes have been copied from the message output of cdrecord +runs, though. The most comprehensive technical overview of cdrskin +can be found in +[cdrskin/README](https://dev.lovelyhq.com/libburnia/libburn/raw/HEAD/cdrskin/README). + +FIXME: About libburn API for burning CD, DVD, and BD: http://api.libburnia-project.org + +-------------------------------------------------------------------------- + +About the command line options of cdrskin: + +They are described in detail in [section OPTIONS](http://scdbackup.sourceforge.net/man_1_cdrskin_devel.html#OPTIONS) of +[man cdrskin](http://scdbackup.sourceforge.net/man_1_cdrskin_devel.html) + +There are two families of options: cdrecord-compatible ones and options +which are specific to cdrskin. The latter are mostly used to configure +cdrskin for its task to emulate cdrecord. There are some, nevertheless, +which provide rather exotic unique features of cdrskin. + +The cdrecord-compatible options are listed in the output of +``` +cdrskin -help +``` +where the option "help" has *one* dash. Online: [cdrskin -help](http://scdbackup.sourceforge.net/cdrskin_help) + +For these options you may expect program behavior that is roughly the +same as described in original man cdrecord . + +Online: http://cdrtools.sourceforge.net/private/man/cdrecord/cdrecord.1.html + +The cdrskin-specific options are listed by +``` +cdrskin --help +``` +where the option "help" has *two* dashes. Online: [cdrskin --help](http://scdbackup.sourceforge.net/cdrskin__help) + +Some are very experimental and should only be +used in coordination with the libburnia developer team. +Some are of general user interest, though: + +-------------------------------------------------------------------------- + +`--devices` can be used by the sysadmin to scan the system for possible drives +and displays their detected properties. +The drives are listed one per line, with fields: +libburn-drive-number, sysadmin-device-file, permissions, vendor, type +``` +0 dev='/dev/sr0' rwrw-- : 'HL-DT-ST' 'DVDRAM GSA-4082B' +```` +This feature is valuable since cdrskin `-scanbus` will not give you +the device file name and its current permissions. +cdrskin will accept of course the proposed `dev=` option as address +for any usage of the drive. + +Different from cdrecord, cdrskin is intended to be run without special +privileges, i.e. no superuser setuid. It is intended that the sysadmin +controls drive accessability by rw-permissions of the drive rather than +by x-permission of the burn binary. To be usable with cdrskin, the drive +has to offer both, r- and w-permission. + +-------------------------------------------------------------------------- + +`blank=as_needed` applies the suitable blanking or formatting to make +any supported type of media ready for writing from scratch. +If this is not possible, e.g. because the media is written and not +re-usable, then the program run fails. + +Option `blank=` offers several specialized blanking and formatting types, +which one may use for particular purposes on DVD-RW, DVD-RAM and BD-RE. +(See also below: `blank=format_overwrite`) +The drive offers a list of possible formats by cdrskin option `--list_formats`. +One should aquire MMC background information before making use of them. + +-------------------------------------------------------------------------- + +cdrskin does not only read from and write to optical drives which comply +to the MMC standard but also does the same with regular files or block +devices other than optical drives. + +Because the power to alter a disk file might be a bad surprise for a +traditional user of cdrecord, it is necessary to give option +`--allow_emulated_drives` before an emulated drive may be addressed. +Eventually one of the startup files would be a good place for it. +See man page, section FILES. + +The addresses of emulated drives begin with the prefix "stdio:". +``` +dev=stdio:/tmp/pseudo_drive +dev=stdio:/dev/usbstick +``` + +Regular files and block devices behave much like DVD-RAM. + +Other file types may be valid targets for write-only operations. +This includes standard output, named pipes, character devices +``` +dev=stdio:/dev/fd/1 +dev=stdio:/tmp/named_pipe +dev=stdio:/dev/ptyxy +``` + +These files behave much like blank DVD-R. + +All files used as pseudo-drives have to offer rw-permission. + +-------------------------------------------------------------------------- + +The DVD capabilities of cdrskin differ from those of cdrecord-ProDVD. cdrskin +offers TAO-like multi-session with DVD-R[W], DVD+R[ DL] and TAO-like single +session with overwriteable DVD media. It also offers DAO on DVD-R[W] which is +probably the same as the traditional cdrecord-ProDVD write mode. + +Non-cdrecord blank mode `blank=format_overwrite` brings a DVD-RW +disc from its initial profile "Sequential Recording" into profile state +"Restricted Overwrite". +``` +cdrskin dev=/dev/sr0 -v blank=format_overwrite +``` + +DVD-RAM, DVD+RW, BD-RE and overwriteable DVD-RW appear to cdrskin as blank +media which are capable of taking only a single track. This track may be +positioned on a 32KiB aligned address, though. +``` +cdrskin ... write_start_address=2412m ... +``` + +Non-cdrecord blank mode `blank=deformat_sequential` brings an overwriteable +DVD-RW back into state "Sequential Recording" with the capability of doing +multi-session. + +Used sequential DVD-RW media may be blanked by `blank=fast` or `blank=all` which +normally both do full blanking. Thus sequential DVD-RW behave much like large +CD-RW with possibly more than 99 tracks. + +`blank=deformat_sequential` does minimal blanking of DVD-RW which usually yields +media incapable of "Incremental Streaming". + +Option `--prodvd_cli_compatible` activates `blank=fast` and `blank=all` for +overwriteable DVD-RW which normally ignore those two options. It also makes +option `-multi` tolerable with media and write modes which are not suitable for +multi-session. (The default behavior of cdrskin deems me to be preferrable.) + +Option `--grow_overwriteable_iso` gives cdrskin ISO pseudo-multi-session +capabilities on DVD-RAM, DVD+RW, BD-RE similar to growisofs. +Associated options `blank=`, `-multi`, `-msinfo` and `-toc` are available +in this case. +They either pretend a blank media (if there is no ISO 9660 image) or appendable +media with a single session and track on it. `blank=` invalidates ISO images. + + +-------------------------------------------------------------------------- + +`assert_write_lba=` ensures that the start block address which +was used with the formatter program (e.g. `mkisofs -C`) matches the start block +address which will be used by the upcoming burn. + +E.g. cdrskin aborts with an error message if +``` +assert_write_lba=0 +``` +is given but an appendable media is to be burned which would start at +block 68432. + + +An ISO-9660 file system image must be prepared according to a particular +block address on media. If the prepared address and the real address on media +do not match then the filesystem will not be mountable or may even cause system +trouble. + +A sequential archive format like afio or star will not necessarily need such +a coordination of addresses. It might nevertheless be confusing to a reader +if the archive does not start at block 0. + +-------------------------------------------------------------------------- + +`fifo_start_at=` is a throughput enhancer for unsteady data streams +like they are produced by a compressing archiver program when piping to +CD on-the-fly. It makes better use of the general property of a FIFO +buffer to transport surplus bandwidth into the future. Yep. A time machine. +One-way, i fear. + +FIFO originally was introduced by cdrecord's author Joerg Schilling in order +to protect mediocre burner hardware from suffering buffer underruns +and thus producing misburns (at 1x speed on CD-R media at the price of a +DVD-RAM nowadays). This purpose would not justify a fifo any more - +given the limited life time of burners and the seamless underrun protection +of contemporary consumer drives. + +With an unsteady data stream the task of the buffer is to soak up peak +performance and to release it steadily at the drive's maximum speed. +The larger the buffer the more reserves can be built up and the longer +input drought can be compensated. + +Original cdrecord has the historical property, though, to first wait until +the buffer is completely filled. Best practice for fighting drive +underruns, of course. +With a very fat `fs=#` buffer (128 MB for 12x CD is not unrealistic) this +can cause a big delay until burning finally starts and takes its due time. + +`fifo_start_at=` makes cdrskin start burning after the given number +of bytes +is read rather than waiting for the FIFO to be completely full resp. the data +stream to end. It risks a few drive buffer underruns at the beginning of burn, +but modern drives stand this. + +Usage examples: +``` +cdrskin ... fs=128m fifo_start_at=20m ... +cdrskin ... fifo_start_at=0 ... +``` + +Note: no FIFO can give you better average throughput than the average +throughput of the data source and the throughput of the burner. +It can be used, though, to bring the effective throughput very close +to the theoretical limit. Especially with high speed media. + +-------------------------------------------------------------------------- + +`--no_rc` allows you to surely ban influence from systemwide or user specific +default settings of cdrskin. Possible locations for such settings: +``` +/etc/default/cdrskin +/etc/opt/cdrskin/rc +/etc/cdrskin/cdrskin.conf +$HOME/.cdrskinrc +``` + +-------------------------------------------------------------------------- + +`dev_translation= may be needed to foist cdrskin to +frontend programs of cdrecord which do *not* ask `cdrecord -scanbus` but +which make own assumptions and guesses about cdrecord's device addresses. + +Normally, cdrskin understands all addresses which are suitable for cdrecord +under Linux. See `cdrskin/README`, "Pseudo-SCSI Adresses". +This option is mainly for (yet unknown) exotic configurations or very +stubborn frontend programs. + +If a frontend refuses to work with cdrskin, look into the error protocol +of that frontend, look at the output of a run of `cdrskin --devices` and give +cdrskin the necessary hint. +Example: Your frontend insists in using "0,0,0" and `--devices` reported +`dev='/dev/hdc'` resp. `cdrskin dev=ATA -scanbus` reported "1,0,0" then this +would be the appropriate translation: +``` +dev_translation=+0,0,0+/dev/hdc +``` +The "+" character is a separator to be choosen by you. +Currently i am not aware of the need to choose any other than "+" +unless you get playful with custom translations like +``` +dev_translation=-"cd+dvd"-1,0,0 +``` +See http://scdbackup.sourceforge.net/k3b_on_cdrskin.html +for an illustrated example with K3b 0.10 . + +-------------------------------------------------------------------------- + +Advanced multi-session use cases as of dvd+rw-tools: + +A special feature of dvd+rw-tools is growing of ISO-9660 filesystems on +overwriteable media. This is not the same as multi-session writing of cdrskin +with CD media, but retrieves additional information from the existing ISO +image and finally manipulates the start sectors of this existing image. + +So, inspired by growisofs, cdrskin can offer DVD multi-session not only with +sequential DVD-R[W] and with DVD+R [DL], but also with DVD-RAM, DVD+RW, BD-RE +and even regular disk files or block devices other than CD/DVD writers. +This is enabled by option `--grow_overwriteable_iso`. + +The libburnia project provides an integrated ISO-9660 multi-session tool +named [xorriso](Xorriso) which tries to go one step beyond +growisofs. It uses [libburn](Libburn) , [libisofs](Libisofs) +and [libisoburn](Libisoburn). + +See [man xorriso](http://scdbackup.sourceforge.net/man_1_xorriso.html). + +-------------------------------------------------------------------------- +