NEW features of cdrtools-1.10:
Late changes:
- Workaround for a Linux bug in ide-scsi. This bug appeared
newly on Linux-2.4 with the sg ioctl() interface and caused
cdrecord not to be able to see the reason for a failed SCSI
command as the SCSI status byte always was 0.
- libscg now correctly behaves in delayed error printing mode.
The verbose level now is honored.
- The RSCSI server daemon used to ignore the timeout send from
the remote client. Thanks to egor duda <deo@logos-
m.ru>
- cdrecord now is silent while fixating on a MITSUMI CR-4802TE
There was a superluous scgp->silent--; which forced
silent to become negative.
- cdrecord now waits 240 seconds for the drive to become ready
after issuing a blank command. This allows cdrecord to work
properly with drives like the MITSUMI CR-4802TE (which re-
turns early from the blank command). Cdrecord now waits long
enough so the drive is really ready from a blank=fast.
- Mkisofs now clears all allocated memory before use to avoid
core dumps from uninitlized parts of structures.
All:
- Autoconf check for Gygwin-B20 vs. Cygwin-1.x Now all
commands should compile on both versions of Cygwin
- ************************ Should change all programs to
test for IS_CYGWIN and IS_CYGWIN_1 in future because Cygwin
is going to chang macros from __CYGWIN32__ to __CYGWIN__ in
future. ************************
- Rules for HP-9000-800
- Better autoconf for HP-UX
- Checked and corrected format strings for printf like func-
tions. This makes 64 bit support more correct.
- include files updated to support C++ compiling
- README.compile updated
- Remove target before trying to install a hardlink.
This allows to replace old mkhybrid versions by the new
unified mkisofs hard link.
- printf %p format for 64 bit architectures corrected.
- New changes to update the VMS support
- VMS now supports ATAPI (Thanks to Eberhard Heuser-Hof-
mann <vaxinf@CHCLU.CHEMIE.UNI-KONSTANZ.DE>)
- Libscg OS part for SunOS now compiles correctly even on
SunOS-4.x
- Makerule support for Win98 ME
- Makerule support for Win NT-5.0 aka w2000
- changed rules1.dir to circumvent a bug in bash-2.01
- README.os2 gives a hint to the Joliet bug on OS/2
- README.multi now has a hint about problems with multi-ses-
sion and Joliet
- Allow ENOTTY as indicator for an illegal ioctl(). In case
somebody from the Linux kernel team learns that the correct
errno for an illegal ioctl is ENOTTY instead of EINVAL.
This would allow libscg to switch back to the non-ioctl
version of the interface in this case.
- Large file support for all tools except cdda2wav
- *************** General Large File Notes
******************** If you have problems with compiling the
large file aware programs on your OS, look for all files
called Makefile or '*.mk' and remove the lines that contain:
CPPOPTS += -DUSE_LARGEFILES
*************************************************************
- getargs() now supports long long parameters (needed for
large files).
- First Apollo Domain/OS Rules
- Support for broken usleep() on Apollo Domain/OS
- Support for GCC on IRIX
- Suport for Lint on Solaris
- Try to fix a bug in ieeefp.h on True64 do to a hint from
Bert De Knuydt <Bert.Deknuydt@esat.kuleuven.ac.be> to
make fconv.c work on True64
- First support for Mac OS X (Darwin variant) This is the
MAC OX X version that uses the new mach kernel and has no
user SCSI support
- Autoconf Support for the changed __dtoa() interface in new
FreeBSD
- Autoconf Support for __filbuf() vs. _filbuf() in USG STDIO
- Added support for latest GCC on Cygwin
- Added support for Win ME & Cygwin
- install-sh now does not complain anymore about chown prob-
lems on Cygwin with Win9x
The .EXE problem still is not completely colved. It is
a makefile problem.
- New Architectures: mips-linux-cc.rul mipsel-linux-cc.rul
- Unified options for libscg users: cdrecord, readcd,
scgcheck, sformat
-version print version information and exit dev=tar-
get SCSI target to use debug=#,-d Set to # or incre-
ment misc debug level kdebug=#,kd=# do Kernel debugging
timeout=# set the default SCSI command timeout to #.;
-verbose,-v increment general verbose level by one
-Verbose,-V increment SCSI command transport verbose lev-
el by one -silent,-s do not print status of failed SCSI
commands
- Support for new DEC Alpha processor types in config.sub.
- install-sh now does not print a junk line when installing as
root
- AIX Rules fixed
- Fixed a typo in xconfig.h.in that caused that time.h was
never included.
Libscg:
- libscg restrucured for a unified naming scheme and better
management of error messages.
- All references to printf()/fprintf()/sprintf() removed
We definitely need js_*printf() and like to avoid pro-
grams to be forced to include two different printf im-
plementations.
- libscg now primarily writes to a string instead of a
mix of stdout/stderr for error reporting.
The new standard behaviour is to write the error text
to stderr to the end of each SCSI command. This can be
supressed by setting the SCSI error File ptr to NULL.
- New functions serrmsg()/serrmsgno() complete the
set of error reporting functions in libschily.
- reset from libscg now distinguishes between Bus reset
and target reset.
- Trying to limit the needed include files in
scsitranp.c and scsihack.c so potential name space
conflicts with the low level transport code are
limited.
Many OS are not supplying clean SCSI include files.
They automatically include completely unnecessary defi-
nitions for a low level transport. For this reason,
there is a high potential for name space conflicts with
the high level definitions of libscg.
- OS dependaent low level SCSI transport code now is com-
pletely separated from the upper layers.
This makes it possible to select between different
transport implementations at runtime. Note
that this feature is used with SCG/USCSI code for So-
laris because use of both transport implementations is
completely disjunct. It is not used for Linux sg/pg
transport because SCSI bus scanning spans both tans-
ports.
- SCSI address data now is completely encapsulated.
- scg_havebus() routine made consistent for several OS.
- Remote-SCSI (SCSI Anywhere) protocol added in librscg
Note that remote SCSI is also a good method for
formal (experimental) verification of the libscg inter-
face. A remote transport implementation may only im-
plement known "official" features of a library inter-
face. The fact that rscsi now works for 4 weeks helped
me to fix several small problems in the interface.
Since about a week, no problem has been observed.
- libscg/scsi-linux-sg.c now returns version information
for pg driver if apropriate.
- Check for HAVE_BSD_DEV_SCSIREG_H on Mac OS X to make sure
that libscg compiles (witout SCSI support) on Darwin.
Note that Darwin no more has SCSI user transport support.
- As UnixWare 7.1.1 doesn't allow to open the passthrough
interface for disks, this is disabled by default.
cdrecord -scanbus will therefore only list devices other
than disks. To enable the scanning of disks, you need to
set an environment variable "LIBSCG_SCAN_ALL".
Be warned, doing so might lock your disk subsystem!
- Changed MKNOD.hpux to support 15 SCSI busses
- Detect DMA overrun with Linux Parallel port ATAPI
- Return Linux sg kernel driver version with scgo_ver-
sion(scgp, what)
- Corrected error behaviour for Linux sg driver interface
- Corrected error behaviour for Sun USCSI driver interface
- New libsc interface functions
scg_vhead()/scg_vtail()/scg_verbose() scg_getdmac-
nt()/scg_errfflush() to make libscg more flexible
- Now all failed SCSI commands (not in silent mode) print
the SCSI timings. This makes it easier to understand why
a command has been aborted with a reset.
- Raised libscg version to 0.5
Rscsi:
- This is the first external release of the Remote-SCSI proto-
col which gives you SCSI-Anywhere features.
There are three possible ways to control access to the remote
users:
- Let the remote scsi lib log in as a standard user.
In this case rscsi will be called via sh -c /opt/schi-
ly/sbin/rscsi NOTE: In this case, rscsi must be in-
stalled suid root. --- This would need to allow any
valid local user to access SCSI ---- It could be a se-
curity problem.
- Log in as root and call rscsi via sh -c /opt/schi-
ly/sbin/rscsi NOTE that this will fore you to allow re-
mote logins as root which is considered to be a securi-
ty hole.
- Create one or more special user(r) that have /opt/schi-
ly/sbin/rscsi as login shell with their own home direc-
tory. You then may create special .rhost files for
each user. NOTE: In this case, rscsi must be installed
suid root. **** This is the preferred method ****
To enable remote SCSI via the login shell method you should do
the following:
- Add an entry to /etc/passwd in the form:
rscsi:x:1999:1000:Tape:/export/home/rscsi:/opt/schi-
ly/sbin/rscsi
(modify this according to your OS). And don't forget to
modify /etc/shadow the way it needs to be on your OS.
- Create a home directory for this user and add a
.rhosts file to allow access to all users you like.
- Install rscsi suid root into /opt/schily/sbin
- Install a file /etc/default/rscsi and define access
rights. Without this file, rscsi will not work at all.
The template for this file is: rscsi/rscsi.dfl
RSCSI Security:
- When rscsi starts, it checks if /etc/default/rscsi exists.
If not, it dies.
- If rscsi is not called by a user listed in /etc/default/rsc-
si it dies.
- To acess a SCSI target there must be an entry that lists the
user rcsi hast been started from, the hostname and the SCSI
target.
rscsi compares the hostname field in /etc/default/rscsi
to the peername retrived from STDIN:
- legal host name IP connection - "ILLEGAL_SOCK-
ET" Not an IP socket - "NOT_IP" Not a
socket
RSCSI Security hints:
- Do not generally allow other users to see your boot disk via
RSCSI. All people who see this disk may edit yhour passwd
file.
- If you are in doubt, only export CD-ROM drives, scanners and
similar devices that are not directly security sensitive.
If anybody sees a security hole in my security precautions, plese
send me a mail!
RSCSI usage:
- To use remote SCSI devices you need to know how to access a
specific remote SCSI target.
- dev=REMOTE:host: or dev=REMOTE:host will al-
low you to do SCSI bus scanning while you log in as yourself
- dev=REMOTE:user@host: or dev=REMOTE:user@host
will allow you to do SCSI bus scanning while you log in
as "user"
If you use the setup described above, you should use:
dev=REMOTE:rscsi@babbel:
to do SCSI Bus scanning on host babbel
- To access a specific SCSI device, you must specify
dev=REMOTE:host:<target spec> or dev=REMOTE:us-
er@host:<target spec> <target spec> is the SCSI target
specification as it is needed on the remote host
dev=REMOTE:rscsi@babbel:1,3,0
Will let you log in as rscsi on host babbel and open
Target 3 lun 0 on SCSI bus #1
- If you use cdrecord -vv ...., cdrecord will on startup
print some information about the remote libscg version
used for the connection.
- To be able to use the remote SCSI client code from win32 you
need to create a file /etc/passwd with a corect entry for
the user you are on win32. Call 'id' to get the right user
id. Note that remote SCSI has not yet been tested on Win32.
RSCSI speed:
- On a Ultra-10 running Solaris 8, the command overhead time
is 400 usec. You may achieve up to 9900 kB/s via a 100MB/s
ethernet connection bewteen two of such machines.
- With 100 MB/s, 12x recording should be no problem.
- With 10 MB/s, 4x recording is the maximum. Do tests before!
- Logging into a remote machine and running cdrecord on the
remote machine causes the buffer cache on that machine to be
trashed. The main user is disturbed.
- Doing cdrecording via Remote SCSI causes only the rscsi com-
mand with less than 200kB to be needed on the remote machine
hosting the CD recorder. The main user on that machine is
not disturbed. The buffer cache of the machine running
cdrecord is trashed.
- It is desirable to use a Burn-Proof recorder to make sure
that network load will not cause buffer underruns.
- USER= test and test for hostname are using a pattern match-
er.
Cdrecord:
- Now first tries to reset the target and then does a SCSI Bus
device reset.
- Hack for a mysterioys drive .... Device type :
Removable CD-ROM Version : 0 Response Format: 1
Vendor_info : 'RWD ' Identifikation : 'RW2224
' Revision : '2.53' Device seems to be: Generic
mmc CD-RW.
which seem to have some OPC problems.
- Fixed a bug in drv_mmc.c that caused cdrecord to core dump
if a drive returns speed == 0
- Add several workarounds for ATAPI firmare found e.g. in
Iomega Zip USB drives and possibly many other other system
based on the same OEM system.
- Add a workaround for a bug in the mode sense implemen-
tation in IOMEGA ATAPI firmware. The drive sends too
many bytes if a program reqests less than 4 bytes with
a 10 byte mode sense command. This causes a DMA overrun
which may only be cured by a reset (at least if the
drive is connected via a ATAPI/USB bridge). Note that
the method cdrecord uses (and which causes the problem)
is explicitly noted as the official method to find out
whether a drive supports a certain mode page.
NOTE: To get USB drives working on Linux, you should
know that USB-SCSI support on Linux-2.4test8 is buggy
and for this reason too old. You need usb-storage.c
from 4.10.2000 or newer.
To check if your kernel is OK, issue a cdrecord -toc
dev=.... with no mdia loaded. If the output looks like
this:
cdrecord: I/O error. test unit ready: scsi sendcmd: no
error CDB: 00 00 00 00 00 00 status: 0x2
(CHECK CONDITION) Sense Bytes: 70 00 02 00 00 00 00 0A
00 00 00 00 3A 01 00 00 00 00 Sense Key: 0x2 Not Ready,
Segment 0 Sense Code: 0x3A Qual 0x01 (medium not pre-
sent - tray closed) Fru 0x0 Sense flags: Blk 0 (not
valid) cdrecord: No disk / Wrong disk!
your kernel is OK, if you only see the last line, you
should run cdrecord -V and check for the SCSI error
messages. If you see:
status: 0x1 (GOOD STATUS) instead
of status: 0x2 (CHECK CONDITION)
you have a buggy USB-SCSI driver.
- Map PIONEER CD-WO DR-R504X to DEV_PIONEER_DW_S114X according
to a hint from philip@merge.com
- Change sample macro to ssample in cdrecord.h to make
compilation on Cygwin-1.x easier
- Try to deal with the new include file structure of Cyg-
win-1.x
- Impelemented workaround for a firmware bug in ACER drives:
The ACER drive: Vendor_info : 'ATAPI '
Identifikation : 'CD-R/RW 8X4X32 ' Revision
: '5.EW' Will not return from -dummy to non-dummy with-
out opening the tray.
This caused cdrecord to write all disks in -dummy mode if
used ith this drive.
The drive above seems to be a widly used OEM drive so this
is an important change.
- Updated README.multi
- Finnaly we got working support for the Plasmon RF 4100
Thanks to Joerg Wunsch
- Try to support mmap() on Apollo
- Autoconf tests for sys/shm.h & sys/ipc.h needed for Apollo
to avoid to use SvsV shared mem in BSD compile environment
- New Schily SING include file mmapdefs.h
- Now prints a hint about cdrecord-ProDVD if cdrecord encoun-
ters a DVD-R drive but there is no DVD-R support compiled
in.
- Reverse security counter (before burning) now shows the
right time.
- Fixed a bug in modes.c that caused cdrecord to remain silent
if a mode sende failed.
Cdda2wav:
- CD-Text disabled for SONY CD-RW CRX100E 1.0 This
has been done from the hint of an owner and looks question-
able.
- Support for TOC of DVD-audio (M/S/F overflow).
- Added new mmap() definitions for Apollo to make it compile
Readcd:
- compiles again on K&R compilers
- readcd now by defult truncates the output file
- New option -notrunc to get the old behaviour
- Avoid core dumps from division by zero if read time == 0
- split read_capacity() into read_capacity() and print_capaci-
ty() to make finally sure that readcd will not print to std-
out
Scgcheck:
- New program to validate libscg interface Please test
your OS for conformance.
Mkisofs:
- Fixed a bug with graft dirs -graft-points will now cor-
rectly work with filenames that have all '=' chars escaped.
- Patch from James Pearson: discard Newline in list files only
if really present.
- add a warning when Joliet extensions are used without Rock
Ridge
- Man Page corrected regarding CDextra & -graft-points
- According to a report, Cygwin-1.x translates filenames to
ISO-8859-x mkisofs now also defaults to iso8859-1 mapping on
Cygwin-1.x instead of "cp437"
- New option -no-pad
- Now default to create padding on the ISO output image
- Disabled old (Eric style) UNIX backup special handling of
the characters '#' and '~'. This code created completely
unreadable ISO images with an endless directory loop.
- Print an easy to parse string to stdout when called with
-print-size
Now the following simple shell script will work:
cdblocks=` mkisofs -print-size ... 2>/dev/null ` mk-
isofs ... | cdrecord ... tsize=${cdblocks}s -
- mkisofs now also compiles without -DUSE_LIBSCG
- Include File structure completely rewritten. The old
portability code from Eric now has been completely removed
and replaced by reusable code snipplets in suportable incude
files. This makes portability finally clean and is needed
to add largefile support in the near future.
- More flexible options for rationalized id's/permissions
from "E. Jay Berkenbilt" <ejb@apexinc.com>
Specifically, the following options have been added:
-uid specifies the uid of the owner of all
files -gid specifies the gid of the owner of
all files -file-mode specifies the mode for files
-dir-mode specifies the mode for directories
-new-dir-mode specifies the mode for directories "invented" by
mkisofs
Modes are given in the usual format as octal numbers.
Each of the -uid, -gid, -file-mode, and -dir-mode options
imply Rock Ridge extensions. It works to use them with -R,
-r, or neither.
- libhfs_iso now corrected a comparison between unsigned and <
0
- libhfs_iso now sets the HFS fileattributes ro read olny
Thanks to James Pearson.
- Support for Apple character codings. Thanks to James Pear-
son.
- Man Page rewritten to make the problem with code sets easier
to understand. Note that most of the problems with
character codings would not be present if Microsoft
would not use UTF-16 Unicode coding which does not com-
ply to POSIX
- -quiet now makes mkisofs really quiet.
- make libfile a cleaner library
- Changed option parsing to allow EBCDIC commandline codes
- Change from a hint according to James Pearson to make
--xinet option work
- libfile now should compile on AIX & Apollo Domain OS
- Fixed a bug triggered by adding Sparc boot. This
caused a endless loop if padding was specified (which is now
default). The code from Eric did not support to install an
output filter (like the pad filter) more than once.
- libfile has been converted to use the portabel Schily SING
include file concept
- libfile now uses a new file utimdefs.h for utime() defini-
tions This was needed to support Apollo Domain/OD
- Fixed a bug with mkisofs .... -- -filename Thanks to
Jonas Munsin <jmunsin@iki.fi>
- Introduced a workaround for a problem with mkisofs running
on Cygwin. Thanks to a hint (from Jakob Bhm jb@danware.dk)
that helped to find the workaround for the problem with
wrong file content.
If there were many files ( > ~4000 ) in the tree that should
go to CD, one or two file contained the wrong content. It
turnes out that this is caused by the fact that Microsoft is
not POSIX and does not have unique inode numbers for each
file.
The workaround introduces two new options:
-cache-inodes (default on UNIX)
-no-cache-inodes (default on Cygwin)
- New options -hfs-unlock/-hfs-bless from James Pearson
used to help people who like to mount R/W and modify HFS
partitions created by mkisofs.
- New option -check-session as a high level option for
mkisofs -check-ondnames -C0,0 -M
- ISO-9660 naming routine fixed. It did not handle filenames
correctly that ended with a '.'.
- mkisofs now correctly checks for the presence or Rock Ridge
attributes when doing multi-session (SUSP record in '.' en-
try for root).
- New Option -force-rr to overwrite automatic RR recognition.
- isoinfo program now checks for Joliet and Rock Ridge when
called with -d option.
- isoinfo now checks for High Sierra Filesystems too.
- New README.joliet
- Added Copyright notice to Appl ID
- Make warning nonfatal (no call to exit())
- Trying to make associated files behave better in multi-ses-
sion mode
- From a hint from James Pearson make insert_file_entry()
failure non fatal in mkisofs main code
TODO: - read Joliet filenames with multi-session if no
TRANS.TBL or RR is present. I am looking for a
volouteer for this task: Peter Berendi <berendi2@webde-
sign.hu> announced that he likes to be the volounteer
for this task.
Unfortunately, I did no hear again from him, but I got
a proposal from "Krisztian Gede" <name-
less@mail.datanet.hu> who also likes to do the job.
Note that this can never 100% correctly as there is no
relation between the names on the master filesystem,
the ISO-9660 names and the Joliet names. Only the Rock
Ridge names are untranslated with respect to the origi-
na files on the master filesystem.
- implement Yellow book compliant XA extended dir at-
tributes
- add libecc/edc for CDI and similar.
- add UDF support
CYGWIN NT-4.0 NOTES:
To compile on Cygwin32, get Cygwin and install it. For more in-
formation read README.win32
The files are located on:
ftp://ftp.fokus.gmd.de/pub/unix/cdrecord/alpha ...
NOTE: These tar archives are 100% ansi compatible. Solaris
2.x tar and GNU tar may get some minor trouble.
WARNING: Do not use 'mc' to extract the tar file! All mc
versions before 4.0.14 cannot extract symbolic links correctly.
WARNING: Do not use 'winzip' to extract the tar file!
Winzip cannot extract symbolic links correctly.
Joerg