User:Fleetwood/optical-media cmdlns

From ArchWiki

The following are command line utilities (application software) that run (primarily in *nix OS environments) for dealing with optical media (CD-Rs, DVD+Rs).

summary

libCDio from GNU

offers (at least one) tool that can query (report) stats status state of optical media (CD-Rs, DVD+Rs)

libcdio-utils: sample applications based on the CDIO libraries

    This package contains a collection of small libcdio-based tools:
     * cd-drive show CD-ROM drive characteristics
     * cd-info show information about a CD or CD-image
     * cd-paranoia an audio CD ripper
     * cd-read read information from a CD or CD-image
     * cdda-player a simple curses-based audio CD player
     * iso-info show information about an ISO 9660 image
     * iso-read read portions of an ISO 9660 image
     * mmc-tool issue low-level commands to a CD drive

source

which, in turn [1]


cd-info may need --dvd switch for DVD R media, of course. (never cd-rs, I assume)


others include

cdrwtool -d -i

dvd+rw-mediainfo

cdrecord ... -minfo , -msinfo , -toc switches (and maybe -atip)

cdrdao disk-info and cdrdao msinfo


xorriso

xorriso -devices

xorriso -indev /dev/sr0 -pvd_info

"pvd" stands for Primary Volume Descriptor, which reports information (metadata) about the ISO 9660 filesystem volume (contents of the data track). (the beginning/top thereof)

xorriso -indev /dev/sr0 -toc

"toc" is Table of Contents, which is overhead for teh disc, as a whole, (equivalent to a partition table) -- point: information (data) about the sessions (and tracks) on the disc.


libcdio

Also from the GNU project? official homepage?

arch linux package (32bit for x86 (i686) architecture))

for Gentoo "Gentoo Packages /package/dev-libs/libcdio-paranoia"

debian (wheezy (testing branch)) package info page.

Ubuntu launchpad


some front-end apps are made for reference / testing (of the functionality of the library00

cd-info

cd-info

When querying info about DVD media (DVD+R discs or DVD-Rs, as opposed to CD-Rs)

"--dvd" switch maybe be necessary.

--iso9660, when added to the command line invocation, will (try to) list the actual contents (directories and files) on the ISO 9660 filesystem volume.

libBurnia

from the GNU project? a library (and related associated suite of apps)

official homepage

btw, that official homepage is powered by Trac by Edgewall software. "Trac is an enhanced wiki and issue tracking system for software development projects."

FAQ

cdrskin

official homepage

It emulates (on a user-interface, front-end level) cdrecord from cdrtools (see below).


Xorriso

official

GNU's homepage

"Note that xorriso does not write audio CDs and that it does not produce UDF filesystems which are specified for official video DVD or BD."

It is a (front-end / client-side) command-line application

man page (official)

Most of its functionality is in the compiled library of libISOburn , which, in turn is a front end to libBurn and libISOfs.


query disc info

first:

xorriso -devices


Information about the 'Primary Volume Descriptor" of/on the ISO9660 filesystem (the very beginning of that volume):

xorriso -indev /dev/sr0 -pvd_info


xorriso -indev /dev/sr0 -tell-media-space


xorriso -indev /dev/sr0 -toc

Xfburn

Xfburn is a lightweight graphical front-end for this.

It has a minimalist interface (Which offers few options, meaning no complexity) to the user. It is thus named because it is bundled with the XFCE desktop environment.

official homepage ?

cdrdao

open source software application "cdrdao" was originally designed to burn CD-Rs in Disc-at-Once mode (and more specifically, audio CDs). However it can be used to burn data tracks (.iso image files) to cd-rs as well, and also burn them to disc in a way that the disc still can be written additionally to in the future (is appendable).

To write any data (audio or data tracks) to a cd-r, invoke the program (if its installed) with "cdrdao" and the "write" operation or command.

Additional optional switches include "--speed" followed by a space and its value which is an integer (number).

To burn the disc so that more can be written to later (appended), include the "--multi" switch.

To see more information (output on status) by cdrdao, include the "-v" (note single dash/minus character this time) (?optional?: followed by an integer) (up to 2 -- nothing beyond 2 makes any difference, right?)

THEN ...

the key argument for invoking cdrdao to write (burn) anything to a cd-r is the name (path to) a table-of-contents file.

Table of Contents file

A T.O.C. (table-of-contents) file is simply a plain-text file consisting of (only?) 3 lines (4, if counting blank empty line breaks that create vertical white space(s) )

The first line will specify what write MODE the disc, as a whole is in

The possible values for this property/parameter are:

  • CD_DA
  • CD_ROM
  • CD_ROM_XA

then, a blank (empty) line (vertical space)

The 2nd line (or 3rd, if counting a blank / empty whitespace line break previous) of content in this table-of-contents plain-text file)
consists of the specification for the TRACK to be burned to the disc.

First the word "TRACK" then a space
followed by the mode to write this particular track (that means, the session) is written in. (In the case of data discs, any session of an optical disc (CD-R) can have contain only one track,)

These values include:
"MODE1" or "MODE2_FORM1" (For data)

The block length of the input data depends on the : AUDIO: 2352 bytes (588 samples), MODE1: 2048 bytes, MODE1_RAW: 2352 bytes, MODE2: 2336 bytes, MODE2_FORM1: 2048 bytes, MODE2_FORM2: 2324 bytes, MODE2_FORM_MIX: 2336 bytes including the sub-header, MODE2_RAW: 2352 bytes. [2]

also see source code, search that webpage for: "MODE2_FORM1", psz_field).

Also note that the specification for the MODE of the track (which also means the session, as well - which, in turn - contains the track('s contents)) doesn't necessarily have to match the spec of/for the MODE of the disc as a whole -- which is indicated by/in the very first line (top-most line) of this TOC file.

The last line (bottom-most) starts with "DATAFILE", a space, and then the path where the source/input image file (filesystem volume, usually an ISO9660) can be accessed (called by cdrdao).


e.g.

 CD_ROM
 
 TRACK MODE1
 DATAFILE "GhostBSD3.1-lxde-i386.iso"

OR (alternately, the inverse example choices)

 CD_ROM_XA
 
 TRACK MODE2_FORM1
 DATAFILE ../bridge-lxde-2013.06_i686.iso


weird permutations

I have actually successfully burned (and later read, and booted from) CD-Rs that were burned using TOCs that have (opposite/mis-matching) specifications for the Modes (mode 1 vs. Mode 2 Form 1 (XA)) the disc, as a whole -- vs. the session/track.

 CD_ROM_XA
 
 TRACK MODE1
 DATAFILE "GhostBSD3.1-lxde-i386.iso"

OR (alternately, the inverse example choices)

 CD_ROM
 
 TRACK MODE2_FORM1
 DATAFILE ../bridge-lxde-2013.06_i686.iso


Though, generally a "CD_ROM_XA" (that is , Mode 2XA) disc spec is usually paired with a "TRACK MODE2_FORM1" specification. and, inversely, "CD_ROM" disc mode specification is used in conjunction with "TRACK MODE1" in a given TOC file for cdrdao.


Track modes "MODE2XA" and "MODE2" (do they both exist -- need a space betweeN "mode" and the number/integer?) do not work with .iso files (source data) -- they are for special (Video CD CD+ ) which I have no experience with. I made the mistake of trying to use cdrdao to burn data .iso to cd-r tracks (sessions) using those track specs and the disc was useless (could not be read). This is because those modes make a sector size of something other than 2048 bytes. (2556 or whatever the variants / permutations are).

now, burn the disc

Now that the table of contents file (TOC file) is composed and saved,

actually burn the disc (spin up and activate the laser)

To use one of the above, example T.O.C. files, let's (for the sake of this example) assume that the name of that file is "burn-xa-disc.toc"

cdrdao write -v 2 --speed 2 --multi burn-xa-disc.toc
What is needed, principally (chiefly) is "cdrdao" (the app/command to invoke) then the mode/command/instruction "write" and the primary/principal (and necessary, for this take) argument is the name (path to) the toc file (that cdrdao will read to know how and what to burn to the disc).


example result output

Let's say the t-o-c file is:

CD_ROM

TRACK MODE1
DATAFILE "ucs2-iso2-cache-inodes.iso"
Running cdrdao with a verbosity level of (only) '1' :
# cdrdao write -v 1 --speed 5 --multi cdrdao_mode1.toc 
WARNING: The toc type should be set to CD_ROM_XA if a multi session
WARNING: CD is recorded.
ERROR: Toc-file "cdrdao_mode1.toc" may create undefined results.
ERROR: Use option --force to use it anyway.
root[2nd-disc]# cdrdao write -v 1 --speed 5 --multi --force cdrdao_mode1.toc 
WARNING: The toc type should be set to CD_ROM_XA if a multi session
WARNING: CD is recorded.
Starting write at speed 8...
Using multi session mode.
Pausing 10 seconds - hit CTRL-C to abort.
Writing track 01 (mode MODE1/MODE1 )...
Wrote 32 of 589 MB (Buffers 100% 100%).

Wrote 34 of 589 MB (Buffers 100% 100%).

Wrote 110 of 589 MB (Buffers  93% 100%).
Wrote 111 of 589 MB (Buffers 100% 100%).

Wrote 442 of 589 MB (Buffers 100% 100%).

Wrote 495 of 589 MB (Buffers 100% 100%).

Wrote 526 of 589 MB (Buffers 100% 100%).

Wrote 578 of 589 MB (Buffers 100% 100%).
Wrote 589 of 589 MB (Buffers 100% 100%).
Wrote 262681 blocks. Buffer fill min 81%/max 100%.

Writing finished successfully.
I repeatedly pressed the | Enter | key on my keyboard during the write (burning) process to keep lines of output of the status/progress (indicator) that you see above.
mis-matched Modes

In this example, my T-O-C file is:

CD_ROM

TRACK MODE2_FORM1
DATAFILE "(filename).iso"
The verbosity level is set to '3' this time - which outputs additional data on status/state :
# cdrdao write -v 3 --speed 3 --multi --force cdrdao_Mode2_form1.toc
Cdrdao version 1.2.3 - (C) Andreas Mueller <andreas@daneb.de>
Format converter enabled for extensions: mp3 ogg
Detected SG driver version: 3.5.27
Detected SG driver version: 3.5.27
/dev/sr0: Optiarc DVD RW AD-7260S       Rev: 1.03
Using driver: Generic SCSI-3/MMC - Version 2.0 (options 0x0000)

WARNING: The toc type should be set to CD_ROM_XA if a multi session
WARNING: CD is recorded.
Starting write at speed 8...
Using multi session mode.
Pausing 10 seconds - hit CTRL-C to abort.
Process can be aborted with QUIT signal (usually CTRL-\).
Buffer filled
Waiting for reader process
Awaken, will start writing
Turning BURN-Proof on
Enabling JustLink.
Session format: 0
Drive accepted write parameter mode page variant 0.
Executing power calibration...
Power calibration successful.

Cue Sheet (variant 0):
CTL/  TNO  INDEX  DATA  SCMS  MIN  SEC  FRAME
ADR               FORM
41    00    00     24    00   00   00   00
41    01    00     20    00   00   00   00
41    01    01     20    00   00   02   00
41    aa    01     24    00   75   44   32
Drive accepted cue sheet variant 0.
Writing track 01 (mode MODE2_FORM1/MODE2_FORM1 )...
Wrote 152 of 764 MB (Buffers 100% 100%).0%).

... Wrote 648 of 764 MB (Buffers 100% 100%). ...

Wrote 692 of 764 MB (Buffers 100% 100%).
Wrote 764 of 764 MB (Buffers 100% 100%).
Wrote 340682 blocks. Buffer fill min 93%/max 100%.

Flushing cache...
Writing finished successfully.

DVD media cannot be authored using cdrdao

Right? I tried it using toc files that began with "CD_ROM" and "CD_ROM_XA" in/near the top.

I even tried with the "--overburn" option and alas, to no avail:

# cdrdao write -v 2 --speed 1 --multi --overburn openbox3.1-32_mode2xa.toc
Cdrdao version 1.2.3 - (C) Andreas Mueller <andreas@daneb.de>
/dev/sr0: Optiarc DVD RW AD-7260S       Rev: 1.03
Using driver: Generic SCSI-3/MMC - Version 2.0 (options 0x0000)

WARNING: Length of toc (81:57:37, 368812 blocks) exceeds capacity of CD-R (00:00:00, -150 blocks).
WARNING: Ignored because of option '--overburn'.
WARNING: Some drives may fail to record this toc.
Starting write at speed 125...
Using multi session mode.
Pausing 10 seconds - hit CTRL-C to abort.
Process can be aborted with QUIT signal (usually CTRL-\).
Turning BURN-Proof on
Enabling JustLink.
Executing power calibration...
Power calibration successful.
ERROR: Cannot get Track Information Block.
[valid=0] Info fld=0, Current 
SCSI command failed: sense key: 0x05: Illegal Request
Additional sense indicates: Logical block address out of range
Raw sense data: 0x70 0x00 0x05 0x00 0x00 0x00 0x00 0x0a 0x00 0x00 
0x00 0x00 0x21 0x00 0x00 0x00 
ERROR: Write data failed.
ERROR: Writing failed.
Note how cdrdao recognises a running time > 74 or 80 minutes (which exceeds a CD's capacity of 650 or 700 MiBs. But it cannot write to any medium that has a greater capacity , unless ...
maybe (I'll have to experiment with this) -- another spec can be put in the first (top-most) line of the toc file, saying "DVD" or "DVD-R" or something (Book-type ?)

Is it safe to say that cdrdao can ONLY be useful for CD media and NOT any larger optical discs like DVDs?


DVD media querying with cdrdao

Even the "disk-info" command is of limited usage (relability / accuracy) for DVD+R media (discs). ?Can the same be said for DVD-R (minus-R media)? (What about DVD video discs, particularly mass-manufactured ones with proper pits (From a factory, as opposed to home-burned DVD Rs ? ) (<-- confirm that)

It reports the same erroneous useless capacity/running time no matter what the particular state of the DVD is:

# # SONY DVD+R
# cdrdao disk-info
Cdrdao version 1.2.3 - (C) Andreas Mueller <andreas@daneb.de>
/dev/sr0: Optiarc DVD RW AD-7260S       Rev: 1.03
Using driver: Generic SCSI-3/MMC - Version 2.0 (options 0x0000)

That data below may not reflect the real status of the inserted medium
if a simulation run was performed before. Reload the medium in this case.

CD-RW                : no
Total Capacity       : 35:03:64 (157789 blocks, 308/353 MB)
CD-R medium          : Doremi Media Co., Ltd.
                       Long Strategy Type, e.g. Cyanine
Recording Speed      : n/a
CD-R empty           : yes
Another example further supports/strenghtens confirms this, however, the figures that cdrdao disk-info reports for subsequent fields such as the start points/locations of the previous session as well as the beginning of next (that means blank) session (where additional data can be added to the disc) ARE releavant (if not necessarily completely accurate/precise <-- confirm this).

See this example from a disc I used growisofs to append a 2nd session to.

get disc stats / information

After a disc has been burned, cdrdao can report status information , statistics about the medium.

The two operators/modes/commands here are "disk-info" and "msinfo"

"msinfo" is only useful if the disc is appendable and not finalized so that no additional data can be added to it.

 cdrdao disk-info /dev/sr0
 cdrdao msinfo /dev/sr0

I am using "/dev/sr0" as the device special file for calling the optical disc drive.

Linux distros may have symbolic links such as "/dev/cdrom" or "/dev/dvd" that point to that.


cdrwtool

CDRW Tool is part of the udftools package. It is one app that is part of a collection/group or suite of apps among which are mkudffs intended for authoring udf filesystem volumes and burning them to optical discs, originally re-writable CDs.

I have used it to get stats query status figures on the state condition of an optical disc (including DVDs)

the key switch is "-i" for get info on the disc.

Also, it is necessary (even if only one optical drive is installed physically and is detected by the OS (kernel)

to use teh "-d" switch to specify which device for cdrwtool to query/call.

cdrwtool -d /dev/sr0 -i

That command line will only produce STANDARD Output, no standard error (unless there is a problem!)

I would often save the output to a file thusly:

cdrwtool -i -d /dev/sr0 1>> "cdrwtool-i-d.stdout.txt"

e.g.


% cdrwtool -d /dev/sr0 -i
using device /dev/sr0
1028KB internal buffer
setting write speed to 12x

DISC INFO:
	erasable : No
	border = 0
	Disc status = 1
	number of first track = 1
	number of sessions = 2
	number of tracks = 2
	status of last track = 2
	uru = 0
	did_v = 1
	dbc_v = 0
	disc type = 32
	disc_id = 5387350
	lead_in = 16:12:48 (72948)
	lead_out = 79:59:74 (359999)
	OPC entries = 0

TRACK INFO:

Track 1
	track_number = 1
	session_number = 1
	damage = 0
	copy = 0
	track_mode = 4
	Rt = 1
	blank = 0
	packet = 0
	fp = 0
	data_mode = 15
	lra_v = 1
	nwa_v = 0
	track_start = 0
	next_writable = 4294967295
	last_recorded = 0
	free_blocks = 0
	packet_size = 0
	track_size = 66046 (132092KB)

Track 2
	track_number = 2
	session_number = 2
	damage = 0
	copy = 0
	track_mode = 4
	Rt = 0
	blank = 1
	packet = 0
	fp = 0
	data_mode = 1
	lra_v = 0
	nwa_v = 1
	track_start = 77448
	next_writable = 77448
	last_recorded = 0
	free_blocks = 282399
	packet_size = 0
	track_size = 282399 (564798KB)


CDRtools

CDR tools is a suite of apps

The figures for (stats) that cdrecord -minfo and cdrecord -toc report (provide) doesn't match equivalents in the output of cdrdao disk-info


cdrecord dev=7,0,0 -v -v -msinfo

produce both standard ERROR output as well as stdOUT output

 cdrecord -v -v -minfo 2>> cdrecord-v-v-minfo.stderr.txt 1>> cdrecord-v-v-minfo.stdout.txt

To see track length and remaining time available on disc in terms of red book audio running time (minutes, seconds, frames) use "-toc" switch (short for Table of Contents)

 cdrecord -v -toc 


Verbosity levels make a difference. There is noticably more information provided by "-v" than no 'v' switch. and two levels (makes a difference?) (nothing beyond 2?)


burn image to disc

(should this section be moved AFTER mkISOfs?)

Pre-made ISO 9660 (and/or UDF) (or any filesystem volume) images (any file, really -- any binary data stream)

can be burned to optical discs using cdrecord.

When burning to DVD(+R, I haven't checked minus-R yet) media, it is not possible to leave disc appendable after burnng.

When burning a CD-R, there are many options. for data, there are Mode 1 (usually preferred for data CD-RS) and Mode 2 (XA (form ? 1?))

the latter is invoked using "-multi"

to burn an .iso image file to a cd-r and it still be appendable after the burn, also add "-data" to the switches on the command line (invocation of cdrecord)

cdrecord -multi -data (filename, source of what to burn to disc)
cdrecord -v -multi -sao -speed 2 Parted\ Magic\ 2013-11-11\ Partition\ Manager\ Disk\ Utilities/pmagic_2013_11_11.iso

Did NOT work. When burning in Mode2xa, and multi, tao is possible, NOT SAO (Session-at-Once).

However, when burning using Mode 1 (data mode), SAO and TAO work (are available / possible).

Is it true that Track-at-Once mode (T.A.O.) is the default mode when writing (mode 2 (and mode 1??) (any, or specifically "-multi" discs)?

cdrecord cannot burn in Disc-at-Once mode.

cdrdao is for that purpose.


real mode

Also, N.B. when the burning process is about to begin (is invoked/started), it will say "burning in REAL mode" (at __ speed)

By "real" they mean, as opposed to "simulation" mode.

What is simulation mode?

simulation

The simulation (mode) performs every role/task that burn mode does, except turning on (activating) burn laser (provides power to and datastream input to the laser).

This was used more in the early days of optical media when there were concerns about a constant reliable datarate (input rate through-put) from the source. There is less concen about a buffer under-run now that JustLink (goes by many names) is available.

This is not available for DVD+R, but only DVD-R and CD-Rs (correct?)

The laser operates, when burning, at a different wavelength and/or wattage than it does when merely reading an optical disc.

mkisofs

jump to "mkisofs" (section/header)


DVD+RW-mediaInfo

Dvd+RW-MediaInfo is part of the DVD+RW-tools package [3]

dvd+rw-mediainfo /dev/sr0

Only will work for DVD media, not CDs! (including CD-ROMs CD-Rs).

One level of verbosity is possible

and makes a difference only to (SCSI dump info) to standard ERROR (right?)

growisofs

Grow ISO File System is part of a package bearing the name of the app (growisofs).

Does Debian package it separately in Debian repos?
 growisofs -Z -speed=2 /dvd/dvd=bridge-kde-2013.06-x86_64.iso

uses an 'internal dd'

-Z is a switch that is essential (think of it as an operator or mode; as equivalent to "disk-info" or "write" for cdrdao)

the alternative to -Z is '-M' which means merge with previous session , and this is only used if there is an ISO9660 filesystem on the disc already and the intent is to APPEND an additional iso 9660 filesystem volume (track/session) to the disc.

User:Fleetwood/Growisofs usage -- see an example of how I successfully did this and the result.

After growisofs completes the task of burning a session to a disc (DVD R media only), the disc is still appendable. In other words, the default behavior is to NOT finalize (close) the disc (in other words , the disc is fixated, in an appendable way). This means that additional tracks of data can be appended to the disc at any later time.

However, this works only for ISO9660 filesystems (with optional UDF layer as well) generated by mkisofs/genisoimage. growisofs itself, cannot append "arbitrary" (as the official documentation refers to it) source image files (pre-made filesystem volumes) to the disc in this manner (using the "-M" switch), unfortunately - other software is necessary to accomplish this). (what?)

will not burn more than what can fit on destination optical disc

I have confirmed that growisofs is smart enough to (check beforehand, even if no "mkisofs --print-size" is not included in its/the command line invocation) not proceed (turn on burn laser) when there is insufficient capacity (free space available) to burn intended (directed) contents to a disc.

# growisofs -speed 3 -M /dev/dvd -A '3.01a16' -sysid 'Manjaro KDE' -udf -joliet-long -long-rr-time -r errctl="WARN|ALL *" -N -publisher 'udf joliet-long -long-rr-time -r -iso-level 2 -N ucs-level 1' -p 'implicit -pad, right? and iso-Level 1 no charset specified use-fileversion errctl="WARN|ALL *" ' -use-fileversion -ucs-level 1 -V 'Meta Health Summit_starting27th' -v -v -log-file=/root/Descargas/growisofs-v-v_2.7GiB-folder-on-Sears.log.txt -graft-points sears500-Temp/'Meta Health Summit_starting 27th'=<b>/mnt/sears/Temp/Meta\ Health\ Summit_starting\ 27th/</b>
Executing 'mkisofs -C 16,1271296 -M /dev/fd/3 -A 3.01a16 -sysid Manjaro -udf -joliet-long -long-rr-time -r errctl=WARN|ALL * -N -publisher udf joliet-long -long-rr-time -r -iso-level 2 -N ucs-level 1 -p implicit -pad, right? and iso-Level 1 no charset specified use-fileversion errctl="WARN|ALL *"  -use-fileversion -ucs-level 1 -V Meta Health Summit_starting27th -v -v -log-file=/root/Descargas/growisofs-v-v_2.7GiB-folder-on-Sears.log.txt -graft-points sears500-Temp/Meta Health Summit_starting 27th=/mnt/sears/Temp/Meta Health Summit_starting 27th/ | builtin_dd of=/dev/dvd obs=32k seek=79456'
Warning: creating filesystem that does not conform to ISO-9660.
Setting input-charset to 'UTF-8' from locale.
3.01a16 (i686-pc-linux-gnu)
re-directing all messages to /root/Descargas/growisofs-v-v_2.7GiB-folder-on-Sears.log.txt
:-( /dev/dvd: 1023808 blocks are free, 1414996 to be written!
:-( write failed: No space left on device
# du -B2048 -s /mnt/sears/Temp/Meta\ Health\ Summit_starting\ 27th/
1413706 /mnt/sears/Temp/Meta Health Summit_starting 27th/ 
# du -B2048 --apparent-size -s /mnt/sears/Temp/Meta\ Health\ Summit_starting\ 27th/
1413629 /mnt/sears/Temp/Meta Health Summit_starting 27th/


For more information see the man page or here.

optical disc file systems

background

see article on "Filesystems"

An optical disc is a storage medium (singular of latin suffix). You can think of it as equivalent to a hard disk or usb flash drive. I will explain how data is stored on any optical disc using, in part, equivalent, alogies with hdds and flash memory (as follows)...

In the case of hard disc drives and USB flash drives, the storage media (mediums) are an integrated combination of block device and disk/medium, and these are not usually separated or interchangable.

In contrast, a flash memory card is a case in which the medium where the data is stored is interchangable (can be swapped, is removable) from the device that reads it (the drive, the reader, the host).

The optical disc (CD-R, DVD R, (+/-) RW , CD-RW, blu-ray, etc.) , is also a removable type of media.

Like any storage device (or medium), it stores data as a sequence (a series) of bits (at the most basic level) -- a bitstream.


The block or sector size on any optical disc is 2 Kibibytes (2048 bytes). Think of this as a cluster (no.) in terms of being 4 x 512-byte sectors/blocks, if that aids with understanding. Non-optical media usually has block/sectors sizes of 512 bytes (half of a Kibibyte).

A storage device then has a partition table, usually in the very begining writable space. This partition table specifies the boundaries of where filesystem volumes can reside on the storage (block) device.

Any storage device is can be referred to as a block device because its writable space/area is divided into equal-sized blocks or sectors (as described above).

Think of the partition table as equivalent (in the tangible real physical world) as property boundaries that a surveyor ___ (lays out).

It is possible to have a block storage device (a plot of land, let's say, in our analogy) with nothing on it. When property boundaries are demarked, a partition table is made. Still, at this point, there is nothing actually on the land (No structures, no buildlings to HOUSe things (files). In order to store the files, a filesystem volume must exist. The filesystem volume resides within the boundaries of a partition.

It is possible, in some cases, for a filesystem volume to simply exist on a block storage device (a single optical disc) without any partition table or T.O.C. first on the disc preceeding the beginning of the fileysystem volume's contents. In that case the block storage device will contain only one filesystem volume (like a UDF volume). It is not possible for any additional co-existing filesystem volumes to be accessible on the disk (by normal OS means). Certainly, in order to be able to boot from or access (as secondary storage) more than one filesystem volume on a single given individual block storage device, a partition table must be used that specifies multiple partitions and makes clear where they end and begin. Their boundaries are specified in terms of (Expressed in terms of) numbers of sectors/blocks on the disk.

In the (getting back to optical discs) case of any optical disc (CD-R, DVD+R), there is a table-of-contents which is the equivalent of/to a hdd's partition table. Like a tradtional MS-DOS M.B.R. partition table, it is possible to have up to 4 sessions (or more? Is it limited to? -- at least in the case of ISO 9660, Level 1?).

In order for a disc to be appendable (be able to have more data (addtional sessions (in turn, data tracks, consisting of filesystem volumes) (or audio tracks)) to be written later (added)

The table of contents must be written in a way that (in addition to specifying where the boundaries (in terms of sectors/blocks) the previous session(s) reside on teh disc (begn and end) ) the last session is blank (the remaining writable contents on the disc) and the TOC points to that last empty session

Then, when an additional session (meaning track consisting of a filesystem volume is written) that iso9660 filesystem volume overhead MUST point to properly the previous session('s contents) in order to merge (append, on a filesystem level) otherwise it is an independent filesystem volume and then that means most OSs either won't be able to mount any of the resident filesystem volumes on the disc OR it will mount only succeed in recognising one of them (the last or the first, depending). special methods (software) would then be necessary to extract access any of the other sessions' contents (data volumes).


adapt this to this article (section) relating to optical media: Additionally filesystems usually contain timestamp(s) for each filesystem object. Many filesystems store properties (metadata) about each filesystem object including any combination of: ownership, permissions, encryption, sparseness and other advanced features. alternate data streams / forks. (other types of file system objects (in *nix world) are fifos, sockets, __ __ ?).


This metadata is stored in filesystem volume overhead. In the case of ISO9660, the beginning of the volume contains (consists of) the Primary Volume Descriptor (PVD). Other more advanced filesystems store redundant copies of filesystem overhead elsewhere (further down) in the filesystem volume, like the end or middle. (e.g. duplicate metadata for UDF 2.50 +).


Think of the table of contents on an optical disc as equvalent to a partition table on a tradtionl block storage device (medium) like a hard disc drve or USB flash drive. This usually is located at the very front/top /beginning (of the bit sequence/stream) the first sector(s)/blocks on the disc.


The very beginning of an iso 9660 filesystem volume (of the type that resides in a non-first (non-1) sector on an optical disc

contains a pointer to the previous session's (previous track's) iso9660 filesystem volume -- the sector numbers of the begin and end (well beginnig of previous session and the beginning of blank writable area where second session's contents will be written once burn laser is activated and bitstream is sent through it.

This top beginning of an iso9660 filesystem volume is called teh Primary Volume Descriptor. (there is a SVD where Rockridge extensions and UCS (Joliet) extensions are written). (and udf can be added as well bridge hybrid ISO9660 + UDF).


Optical disc burning software (list of windows apps) creates ISO9660 (and/or UDF ) filesystem volumes.


Software that reports (queries) stats info about an iso9660 volume is


isoinfo

isoinfo

tell isoinfo where the ISO9660 volume is

Launch/invoke isoinfo with "-i" switch to tell it what iso filesystem volume to query (examine). this is a necessary switch. It is NOT optional.

If you wish to get information (use isoinfo on) an ISO9660 filesystem volume image that does not reside on an optical disc, point isoinfo the FILE. Otherwise, point isoinfo to the device (optical disc drive) that can read an optical disc. In the later case (a physical optical disc being read by isoinfo), "-i /dev/sr0" can work or, instead of the "-i" switch, it is possible to use (isoinfo can accept) the alternate "dev=" notation:

isoinfo dev=/dev/sr0

OR

isoinfo -i image.iso

what operation to perform?

Additionally, another switch must appear in the command line (invocation), that specifies which operation must be done by isoinfo:

-l list files like "ls -l" command

-f find files (just list, like "find" command)

-d show overhead information from Primary Volume Descriptor

e.g. :

isoinfo dev=/dev/sr0 -d

OR,

isoinfo -i /dev/sr0 -l

when using -l or -f switches (which list contents of filesystem volume (files and folders contained therein))


specify which filesystem extensions are re__ed

When listing contents, the rockridge and/or joliet layers extensons, if present, will be ignored and just ISO9660 filesystem overhead will be __ ed (v.).

optional additional switches include

-R (captal 'R' not lowercase, won't work) show listing with Rockridge (case sensitive and longer path names permissions) -J Joliet (mixed case but not case-sensitive)


N switch

When examining a filesystem volume (iso9660) that resides on a non-first (an appended) session of a disc,

use "-N" switch to specify sector/block offset .


k3b

K3b (part of KDE suite / DE / platform) has a "Medium Info" command. This gives figures that, (in some cases, maybe?) are different from the figures provided (reported) by the other pieces of application software mentioned elsewhere in this article: (cdrecord -minfo, cdrecord -toc, cdrdao disk-info).

example:

Medium

Type:	DVD+R
Media ID:	MBIPG101/R05
Capacity:	510:01:29 min (4.4 GiB)
Used Capacity:	313:05:05 min (2.7 GiB)
Remaining:	196:56:24 min (1.7 GiB)
Rewritable:	no
Appendable:	yes
Empty:	no
Layers:	1
Sessions:	2
Supported writing speeds:	4.0x (5540 KB/s)
6.0x (8310 KB/s)
8.0x (11080 KB/s)
12.0x (16620 KB/s)
16.0x (22160 KB/s)
ISO9660 Filesystem Info

System Id:	Manjaro
Volume Id:	Econee cPanel backups2013nov
Volume Set Id:	-
Publisher Id:	udf joliet-long -long-rr-time -r -iso-level 2 -N ucs-level 1
Preparer Id:	implicit -pad, right? no charset specified use-fileversion errctl="WARN|ALL *"
Application Id:	mkisofs 3.01a16
Volume Size:	1.7 GiB (2,048 B * 881,506 blocks = 1,805,324,288 B)
Tracks

Type	Attributes	First-Last Sector	Length
Session 1
1	(Data)	copy/incremental	0 - 523263	523264 (116:16:64)
Session 2
2	(Data)	copy/incremental	525312 - 1406831	881520 (195:53:45)


One such open-source venerable free app that is particularly powerful and flexible in creating optical disc filesystems is mkisofs ...

mkisofs

mkisofs (make ISO FileSystem (volume image))

is part of the CD-R Tools suite of apps,

It creates ISO9660 filesystem volumes.

Its cdr-kit fork is named 'genisoimage' (which is vastly inferior to the true mkisofs); it is buggy, and offers fewer capabilities / features).

By default, mkisofs will stop building (generating) the output (filesystem volume / image file) if it encounters certain errors (that it detects) from the source that it is traversing (gathering).

I overcome this with syntax that Mr. Jeorg Schilling ("Schilly" nickname) devised for mkisofs. This same syntax is also used by/in his own archiving program "STAR" (Standard Tape Archiver) (better than GNU's TAR utility/app?).

 errctl="WARN|ALL *"

use

This is helpful when archiving a remote network share, say over (NFS, CIFS(SaMBa) or sshfs). There may be issues in accessing the specified (intended) source resources (files), for various possible reasons.

For webmasters! (or any system administrators) (sure, they prefer rsync or tar, but) (and sshfs is slow and taxes resources on the server)

 mkisofs errctl="WARN|ALL *" --joliet-long -R --long-rr-times -udf -V 'volume label' -publisher 'mkisofs 3.01a17 --joliet-long -R --long-rr-times -udf' -preparer '(name of maker)' -sysid 'archbang Linux 3.23 i686' -A 'author's name' -v -v -log-file 'mkisofs-v-v.log' -o joliet-long-R-long-rr-times-udf_webspace.iso -graft-points webspace=/mnt/sshfs/home


another example

mkisofs -A '3.01a19 x64 Manjaro' -sysid '3.11.4-1-Manjaro0.88' -udf -long-rr-time -p 'l N udf long-rr-time joliet-long -joliet' -r -joliet-long -joliet -l -N errctl="WARN|ALL *" -v -v -v -gui -log-file 'v3gui.log' -o udf-long-rr-times-joliet-long-l-N.iso -graft-points "Cure to Cancer Video Series"=.. FFopen/.mozilla=/home/manjaro/.mozilla FFopen/.macromedia=/home/manjaro/.macromedia FFopen/.cache/mozilla=/home/manjaro/.cache/mozilla FFopen/bash_history_reg-user.txt=/home/manjaro/.bash_history FFopen/bash_history_root-user.txt=/root/.bash_history

Be careful where command line (cmd interpreter / terminal) (shell) is pwd (cwd) if using relative paths (pathspecs)!

I ran that as "su" root (admin) (full priv.gs)


hidden

There is a switch called "-hidden" which should not be confused with the -hide switch.

Hidden means that the MS-DOS (Microsoft Windows too) filesystem attribute (flag) of "Hidden" will be applied (to the ISO layer and ?not? the Joliet one? or also the Joliet layer of the filesystem?).

example usage

Concrete example (using .mkisofsrc) and a .sh (script) file :

mkisofs \
-ucs-level 2 -J -iso-level 2 -use-fileversion -r -cache-inodes \
-v -v -v \
-x '*720*' \
-hidden '*bash*istor*' \
-hidden '/mnt/e/Users/Public/Karen noler 12 days Raw 2014/Elaine Gibson/Holiday Gift Guide/114161281_vimeo.html' \
-hidden '/mnt/e/Users/Public/Karen noler 12 days Raw 2014/Iris Huebler/24santairis.html' \
-hidden '/mnt/e/Users/Public/Karen noler 12 days Raw 2014/Steph Jackson/ThankyouCC.php_download-page.html' \
-hide-joliet '*bash*history*' \
-o '/mnt/e/Users/Public/drives/Karen noler 12 Days of Raw Xmas 2014/make2cdr/incl.3-part_NatalieHeath-videos-ucs2-iso2-cache-inodes.iso' \
'/mnt/e/Users/Public/Karen noler 12 days Raw 2014/'

and a .mkisofsrc file (stored in the $HOME user profile (config settings) folder, a.k.a.: "~") :

APPI=mkisofs 3.01a16
COPY=2011-2014 Karen Knowler
ABST=lead magnets
BIBL=TheRawFoodCoach.com/12days2014.html
PREP=ucs-level 2 J iso-level 2 use-fileversion r (implicit reg./short rockRidge timestamps) cache-inodes
PUBL=Karen Knowler "The Raw Food Coach" : 12 Days of Raw Christmas 2014 (12 Secret Santas) : mostly .PDFs 
SYSI=Slackel KDE 64  red
VOLI=Karen Knowler 12 days Raw 2014
VOLS=12 Days of Raw Christmas  2 GORGEOUS GIFTS  Have THe Healthiest Christmas EVER! ; Natalie Heath videos Secret Strategies 3part

which distros have it

Make sure that you aren't using the faulty genisoimage (from cdrkit, the buggy fork) but the genuine one from cdrtools (CDDL licensed , not GPL hence the fork and controversey within that pocket of the open-source community).

why does it matter?

official mkisofs from Jeorg Schilling cdrTOOLs offers:

  • the ERRCTL (thing, see above)
  • long-rr-times (although the LINUX kernel has no support for those long (fine resolution/precision/granularity timestamps)
  • udf (since version so-called alpha 3.01a 13? or 14? (Or 12?) represents 3 timestamps (c (changed, not birth/creation) m (Modified) and a (accessed) to a resolution of 1,000 nanoseconds, I think?) whereas earlier versions would just take the atime to the nearest full integer second and apply that to all 3 udf timestamps (c, m, and a) times.
  • charset issues with genisoimage (mapping different namespaces character sets / encodings of filesystems (volumes).


Built-in (live):

Sabayon KDE (Only the KDE edition)

System Rescue CD (Gentoo-based)

The Gentoo LIVE DVD (is huge / unwieldy -- for experimentation / test only -- not real-world practical usage deployment (out in the wild / production usage).)


Slackware-based (live) distros:

Recovery is Possible (still stuck on 13.7)

PartedMagic

(Slax used to have it)

WifiSlax still does

SalixOS (SalixLIVE , at leats KDE edition)


non-live

Absolute Linux (install-only)


available in repositories

official

Slackware

Gentoo

only in 3rd party (community) non-official repos

SuSE

arch

(a PPA for Ubuntu) (and Debian?)