Developer Robert Lalla just released MKISOFS for OS/2. The archive mkisofs.zip (75,538k)
was uploaded in Hobbes. mkisofs is effectively a pre-mastering program to generate
the iso9660 filesystem - it takes a snapshot of a given directory tree, and generates
a binary image which will correspond to an iso9660 filesystem when written
to a block device. Operating System/Version: OS/2 v3, v4 Additional requirements:
EMX runtime dlls.
MKISOFS is also capable of generating the System Use Sharing Protocol records
specified by the Rock Ridge Interchange Protocol. This is used to further describe
the files in the iso9660 filesystem to a unix host, and pro vides information
such as longer filenames, uid/gid, posix permissions, and block and character devices.
Each file written to the iso9660 filesystem must have a filename in the 8.3
format (8 characters, period, 3 char acters, all upper case), even if Rock
Ridge is in use.
This filename is used on systems that are not able to make use of the Rock
Ridge extensions (such as MS-DOS), and each filename in each directory must be
different from the other filenames in the same directory. mkisofs generally tries
to form correct names by forcing the unix filename
to upper case and truncating as required, but often times this yields unsatisfactory
results when there are cases where the truncated names are not all unique.
MKISOFS assigns weightings to each filename, and if two names that are otherwise
the same are found the name with the lower
priority is renamed to have a 3 digit number as an extension (where the number
is guaranteed to be unique). An example of this would be the files foo.bar and
foo.bar.~1~ - the file foo.bar.~1~ would be written as FOO.000;1 and the file
foo.bar would be written as FOO.BAR;1
Note that MKISOFS is not designed to communicate with the writer directly. Most
writers have proprietary command sets which vary from one manufacturer to another,
and you need a specialized tool to actually burn the disk. The cdwrite utility
is one such tool that runs under Linux and
performs this task. The latest version of cdwrite is capable of communicating
with Phillips/IMS/Kodak, HP and Yamaha drives. Most writers come with some version
of DOS software that allows a direct image copy of an iso9660 image to the
writer. The current version of cdwrite is available from sunsite.unc.edu:
/utils/disk-management/cdwrite-2.0.tar.gz.
MKISOFS FOR OS/2
This is a straight OS/2 port of the MKISOFS unix utility
for cdrom image file creation. In order to run MKISOFS.EXE on OS/2 the EMX runtime
dlls need to be present your LIBPATH.
How to use MKISOFS.EXE? Please read the MANUAL file.
!!Warning: The use of MKISOFS.EXE is at your own risk!!
RSJ users only: Please take a look at the RSJ_HEAD utility.
Known restrictions:
* support for ISO9660 level2 "-l" and RockRidge "-r" longnames
only, no Joliet longnames (Windows), no ISO9660 level3 names (multiple dots). Conflicting
file names will be renamed without any user interaction.
* multisession capabilities not tested
* due to a missing device driver, currently an OS/2 bootable CD is not possible,
DOS bootable CD is OK.
* "-c" option without "-b" option will crash the program
To recompile you need to download the source code package (MKISOFS-1_11_2.GZ),
and the GCC/EMX compiler.
Simply append my additions contained in CONFIG_H.ADD to the original CONFIG.H file
und run BUILD.CMD.
(no makefile used)
MULTIPLE SESSIONS
This release of mkisofs has basic support completed for multiple
sessions. At this point, it hasn't been tested thoroughly at all - we still need
some interaction between cdwrite and mkisofs for this to work correctly.
There are a few new options to mkisofs to allow for this.
The first one is "-M /dev/scd0", and is used so that mkisofs can examine
the entirety of the previous image so that it can figure out what additional files
need to be written in the new session.
There is also a temporary hack in mkisofs in the form of a '-C' option. The -C
option takes two numbers as input, which are delimited by commas. For example, you
could specify "-C 1000,1020", but you should never just make up numbers
to use here. These numbers are determined from cdwrite.
There are patches to cdwrite in the file cdwrite.c.diff, which add a new information
gathering option. To use this, you specify '-m', and instead of actually writing
any data, cdwrite dumps two numbers to stdout which are comma delimited. These
are the same numbers that mkisofs uses
with the -C option.
Thus in practice you should in principle be able to do something like:
to tie these things together. Admittedly this is a very crude
interface between the two programs right now, and this will be cleaned up later.
For now, it provides the minimal functionality required to write multiple session
discs.
Note: As of the 1.10b4 release, nobody has actually tried to burn any discs with
this. It is entirely possible that bugs exists, or that further tweaks will be
required somewhere along the way to get things
working correctly. The data gathering mode of cdwrite has been
tested, and I believe it works correctly. Caveat Emptor.
RSJ_HEAD.EXE
Do you want to write an image file created by MKISOFS to
CD
using the CDVIEW tool contained in the RSJ packagage?
!!Warning: The use of RSJ_Head.exe is at your own risk!!
* move KBDVIO32.DLL into your LIBPATH, unless already done
* rename the CD image file to TRACK01.TRK
* run RSJ_Head TRACK01.TRK
* move TRACK01.TRK into the ?\CDWFS\TRACKS directory
* transfer track #1 to an empty CD-R using the CDVIEW tool
The RSJ_Head utility will copy a RSJ XA header in front
of the image file. For disk space reasons, this copy
operation is done "in-place". So whenever you interrupt
the operation of RSJ_Head, the image file will be damaged.