The CD Forum [Powered by Invision Power Board]

Printable Version of Topic
Click here to view this topic in its original format
The CD Forum > Bootable CDs > Experts For Mkisofs Needed...

Posted by: bobby100 Feb 29 2004, 01:29 PM
Ok, as all of you can see, this days I have a lot of free time

Idea is to make a GUI for Mkisofs, but I'm not so sure how, because I'm not familiar with all options ( what includes what, what excludes what etc..).

So, if someone have free time to help - he is wellcome.

Posted by: Guybrush Feb 29 2004, 07:35 PM
when i´ve some spare time, im coding too...

i would start like this:
let mksiofs list all of his commands (i´m sure there ist an /? optin or something similar) and redir it into a a file, eg.: command.txt (>> command.txt)

then, open this in word, and make all the switches bigger and bold, ist fine for reading...

then, print it out...

sounds stupid, but it helps to habe it on paper than in digital form ...

then, first you should do ist making the graphical frontend, any buttons, checkboxes, radiobuttons, and all sorts of listboxes or similar, thats your thing.

i would keep it clear, easy to use and take care of the overview.
you could include an optin like in xpantispy (show experts options), so that an beginner isn´t afraid to check 20 checkboxes, 13 radiobuttons, 7 different sets of listboxes just to burn 1 single data-cd...

do not use more colours than the default (i suppose you are using windows) window-colors, it shouldn´t look kindergarden-like

start with the standartoptions, try them, and if ALL of them work, add the next feature/option...

if anything goes well, you could release your first complete gui as ver 1.0, not as 0.01a or such sick shit...

i wish you good luck, i was looking for such a gui for myself...

maybe i could use your´s???

greetz from austria,
Guybrush

Posted by: bobby100 Feb 29 2004, 08:07 PM
You didn't understand what I was asking for.
I was asking for help with Mkisofs options, not with coding and user interface.
I dont know what option shud exclude other and so on...

Posted by: droemel Feb 29 2004, 08:15 PM
There is already a GUI for Linux/*nix at

http://www.abo.fi/~jmunsin/gcombust/

Maybe you'll find some usefull information.

Posted by: Guybrush Mar 1 2004, 12:22 PM
i understand, what yur mean, bobby!

i´m just a mkisofs-nerd too, i didn´t use it at least one time.

was just a little hint, if no one would help you, this is the way to try it yourself.
i know, that coding is no prob...

greetz guybrush

Posted by: ByteCoder Mar 1 2004, 07:24 PM
Here's the list of command line options available when using mkisofs.

QUOTE

Usage: mkisofs [options] file...
Options:
-nobak Do not include backup files
-no-bak Do not include backup files
-abstract FILE Set Abstract filename
-A ID, -appid ID Set Application ID
-biblio FILE Set Bibliographic filename
-cache-inodes Cache inodes (needed to detect hard links)
-no-cache-inodes Do not cache inodes (if filesystem has no unique unides)
-check-oldnames Check all imported ISO9660 names from old session
-check-session FILE Check all ISO9660 names from previous session
-copyright FILE Set Copyright filename
-debug Set debug flag
-b FILE, -eltorito-boot FILE
Set El Torito boot image name
-eltorito-alt-boot Start specifying alternative El Torito boot parameters
-B FILES, -sparc-boot FILES Set sparc boot image names
-G FILE, -generic-boot FILE Set generic boot image name
-sparc-label label text Set sparc boot disk label
-c FILE, -eltorito-catalog FILE
Set El Torito boot catalog name
-C PARAMS, -cdrecord-params PARAMS
Magic paramters from cdrecord
-d, -omit-period Omit trailing periods from filenames (violates ISO9660)
-dir-mode mode Make the mode of all directories this mode.
-D, -disable-deep-relocation
Disable deep directory relocation (violates ISO9660)
-file-mode mode Make the mode of all plain files this mode.
-f, -follow-links Follow symbolic links
-gid gid Make the group owner of all files this gid.
-graft-points Allow to use graft points for filenames
-help Print option help
-hide GLOBFILE Hide ISO9660/RR file
-hide-list FILE File with list of ISO9660/RR files to hide
-hidden GLOBFILE Set hidden attribute on ISO9660 file
-hidden-list FILE File with list of ISO9660 files with hidden attribute
-hide-joliet GLOBFILE Hide Joliet file
-hide-joliet-list FILE File with list of Joliet files to hide
-hide-joliet-trans-tbl Hide TRANS.TBL from Joliet tree
-hide-rr-moved Rename RR_MOVED to .rr_moved in Rock Ridge tree
-gui Switch behaviour for GUI
-i ADD_FILES No longer supported
-input-charset CHARSET Local input charset for file name conversion
-output-charset CHARSET Output charset for file name conversion
-iso-level LEVEL Set ISO9660 conformance level (1..3) or 4 for ISO9660 version 2
-J, -joliet Generate Joliet directory information
-joliet-long Allow Joliet file names to be 103 Unicode characters
-jcharset CHARSET Local charset for Joliet directory information
-l, -full-iso9660-filenames Allow full 31 character filenames for ISO9660 names
-max-iso9660-filenames Allow 37 character filenames for ISO9660 names (violates ISO9660)
-L, -allow-leading-dots Allow ISO9660 filenames to start with '.' (violates ISO9660)
-log-file LOG_FILE Re-direct messages to LOG_FILE
-m GLOBFILE, -exclude GLOBFILE
Exclude file name
-exclude-list FILE File with list of file names to exclude
-pad Pad output to a multiple of 32k (default)
-no-pad Do not pad output to a multiple of 32k
-M FILE, -prev-session FILE Set path to previous session to merge
-N, -omit-version-number Omit version number from ISO9660 filename (violates ISO9660)
-new-dir-mode mode Mode used when creating new directories.
-force-rr Inhibit automatic Rock Ridge detection for previous session
-no-rr Inhibit reading of Rock Ridge attributes from previous session
-no-split-symlink-components
Inhibit splitting symlink components
-no-split-symlink-fields Inhibit splitting symlink fields
-o FILE, -output FILE Set output file name
-path-list FILE File with list of pathnames to process
-p PREP, -preparer PREP Set Volume preparer
-print-size Print estimated filesystem size and exit
-P PUB, -publisher PUB Set Volume publisher
-quiet Run quietly
-r, -rational-rock Generate rationalized Rock Ridge directory information
-R, -rock Generate Rock Ridge directory information
-s TYPE, -sectype TYPE Set output sector type to e.g. data/xa1/raw
-sort FILE Sort file content locations according to rules in FILE
-split-output Split output into files of approx. 1GB size
-stream-file-name FILE_NAME Set the stream file ISO9660 name (incl. version)
-stream-media-size # Set the size of your CD media in sectors
-sysid ID Set System ID
-T, -translation-table Generate translation tables for systems that don't understand long filenames
-table-name TABLE_NAME Translation table file name
-ucs-level LEVEL Set Joliet UCS level (1..3)
-udf Generate UDF file system
-dvd-video Generate DVD-Video compliant UDF file system
-uid uid Make the owner of all files this uid.
-U, -untranslated-filenames Allow Untranslated filenames (for HPUX & AIX - violates ISO9660). Forces -l, -d, -L, -N, -relaxed-filenames, -allow-lowercase, -allow-multidot
-relaxed-filenames Allow 7 bit ASCII except lower case characters (violates ISO9660)
-no-iso-translate Do not translate illegal ISO characters '~', '-' and '#' (violates ISO9660)
-allow-lowercase Allow lower case characters in addition to the current character set (violates ISO9660)
-allow-multidot Allow more than one dot in filenames (e.g. .tar.gz) (violates ISO9660)
-use-fileversion LEVEL Use file version # from filesystem
-v, -verbose Verbose
-version Print the current version
-V ID, -volid ID Set Volume ID
-volset ID Set Volume set ID
-volset-size # Set Volume set size
-volset-seqno # Set Volume set sequence number
-x FILE, -old-exclude FILE Exclude file name(depreciated)
-hard-disk-boot Boot image is a hard disk image
-no-emul-boot Boot image is 'no emulation' image
-no-boot Boot image is not bootable
-boot-load-seg # Set load segment for boot image
-boot-load-size # Set numbers of load sectors
-boot-info-table Patch boot image with info table
-XA Generate XA directory attruibutes
-xa Generate rationalized XA directory attruibutes
-z, -transparent-compression
Enable transparent compression of files
-hfs-type TYPE Set HFS default TYPE
-hfs-creator CREATOR Set HFS default CREATOR
-g, -apple Add Apple ISO9660 extensions
-h, -hfs Create ISO9660/HFS hybrid
-H MAPPING_FILE, -map MAPPING_FILE
Map file extensions to HFS TYPE/CREATOR
-magic FILE Magic file for HFS TYPE/CREATOR
-probe Probe all files for Apple/Unix file types
-mac-name Use Macintosh name for ISO9660/Joliet/RockRidge file name
-no-mac-files Do not look for Unix/Mac files (depreciated)
-boot-hfs-file FILE Set HFS boot image name
-part Generate HFS partition table
-cluster-size SIZE Cluster size for PC Exchange Macintosh files
-auto FILE Set HFS AutoStart file name
-no-desktop Do not create the HFS (empty) Desktop files
-hide-hfs GLOBFILE Hide HFS file
-hide-hfs-list FILE List of HFS files to hide
-hfs-volid HFS_VOLID Volume name for the HFS partition
-icon-position Keep HFS icon position
-root-info FILE finderinfo for root folder
-input-hfs-charset CHARSET Local input charset for HFS file name conversion
-output-hfs-charset CHARSET Output charset for HFS file name conversion
-hfs-unlock Leave HFS Volume unlocked
-hfs-bless FOLDER_NAME Name of Folder to be blessed
-hfs-parms PARAMETERS Comma separated list of HFS parameters
-prep-boot FILE PReP boot image file -- up to 4 are allowed
--cap Look for AUFS CAP Macintosh files
--netatalk Look for NETATALK Macintosh files
--double Look for AppleDouble Macintosh files
--ethershare Look for Helios EtherShare Macintosh files
--exchange Look for PC Exchange Macintosh files
--sgi Look for SGI Macintosh files
--macbin Look for MacBinary Macintosh files
--single Look for AppleSingle Macintosh files
--ushare Look for IPT UShare Macintosh files
--xinet Look for XINET Macintosh files
--dave Look for DAVE Macintosh files
--sfm Look for SFM Macintosh files
--osx-double Look for MacOS X AppleDouble Macintosh files
--osx-hfs Look for MacOS X HFS Macintosh files

If you need more help on them please consult
QUOTE
http://www.fokus.gmd.de/research/cc/glone/employees/joerg.schilling/private/man/mkisofs-2.0.html

It took me a while of fiddling around with various switches until I got desired result.

Posted by: Bernd Blaauw Mar 2 2004, 12:07 AM
GUI for which platform(s)?

Linux already has one.

options are many, but on non-Unix (Linux) platforms, not many options are used commonly.

you could just start simple.

*input directory (browse)
*output file (-o option)

*bootable cd function
(browse for a file, option -b , options with "boot" in it)

*type of filesystem
(ISO9660, Joliet, ISO9660:1999, etcetera

-l -N -R -r options are also used a lot.

Posted by: bobby100 Mar 2 2004, 05:26 PM
OK, I know what options I'll include, but is there some order for this parameters or they can be parsed to Mkisofs in any order (without order) ?
What about forlder names that contains spaces, should they go under quotas ("") ?
My idea is that this GUI shoul make BAT files that can be executed from GUI (as I did for PPMtoLSS convertor GUI). How should I parse LFN to BAT file? With folder name in quotas?

Posted by: this-is-me Mar 2 2004, 06:03 PM
no order.
lfn with quotes.

Posted by: cdob Mar 3 2004, 04:40 PM
Try this guis first:
http://demosten.com/cdrfe/
http://home.arcor.de/kerberos002/
http://cdr.dpaehl.de/

http://www.fokus.gmd.de/research/cc/glone/employees/joerg.schilling/private/man/mkisofs-2.0.html

I prefer win-batches and shell-scripts.

Posted by: goldfndr Mar 31 2004, 06:59 AM
Is there a mirror site for CDRFE? They seem to have dropped off the face of the earth (or I just am not well-connected). And a site that has http://www.google.com/search?q=cdrfe13 is unavailable too!

Posted by: bobby100 May 2 2004, 03:34 PM
OK people, I know that I was promising too much, but I didn't have enough time (I'm student - that is my priority).
After some work, alpha version looks like this:

*screenshot removed*

Please tell me if something is missing, and if something is too much.
Also, tell me if something should be disabled if some other option isn't selected. I allready know for boot options, but what about following links etc...

If you give me enough feedback (that I dont need to do a lot of experimenting) this one may be finished next weekend.

Cheers
Boban Spasic aka bobby100

--------------------------------------------
Edited
--------------------------------------------
Ok, I saw that I have some typos (RockRidge not RockRide)...
Saving and loading Templates also planed...

Posted by: Bernd Blaauw May 3 2004, 06:09 PM
impressive GUI

what's the "boot catalog" for?
IMHO, it's automatically renewed/updated.

note that MKISOFS is case-sensitive (because it's Cygwin..and thus Unix),
so "isolinux/isolinux.bin" is case sensitive.

maybe also option to remove "read-only" attribute from all contents of cd?
if you copy files from cd to harddisk, not always the read-only attribute is removed.
(and thus isolinux.bin can't be updated)

"cache inodes" only makes sense when using Reanimatolog's DFL.EXE
(Duplicate File Linker).

perhaps also an option to burn cd's immediately, using popular commandline burning programs (CDRECORD, NeroCMD [included in Nero])

"full ISO9660" and "max ISO filenames" seem to be incompatible?
then why 2 checkboxes?

"boot-info-table" sometimes is a requirement, not an option..

give boot-load-segment a default value please ("07C0" ?),
as well as boot-load-size ("4")

a MAKE BATCH also implies a "Load Batch(-options from file)" option?
(so I won't have to enter settings each time, but can change folders.

Posted by: cdob May 4 2004, 01:01 PM
Do you make a GUI for bootable cds first?

Bernd mentioned some points already.

You don't have to use '-J -joliet-long', '-joliet-long' sets 'J' automatically.

ISO9660:1999 is very importand for bootable cds. There exist no level 4, mkisofs maps level 4 internally. Include a 'ISO9660:1999' point seperately.

Initialisation for -iso-levels see mkisofs.c, e.g. ISO9660:1999 set '-N' by default. Select the appropiate points.

Include a point '-output-charset', select charset (e.g. -output-charset cp850). Mkisofs supports 8-bit charsets for ISO9660:1999, see name.c.

Yes, follow-links and -cache-inodes are disabled for win32 by default.

BTW: I like to gzip diskimages using isolinux. Drive Fitnes Test:
CODE
label dft
kernel memdisk
append initrd=dft.gz

@Bernd
Microsoft supports hardlinks nowadays. Cache inodes makes sense, if you use hardlinks. Mkisofs creates one file and two links.

Posted by: Preacher May 4 2004, 08:29 PM
QUOTE (bobby100 @ May 2 2004, 01:34 PM)
-------------------------------------------
Edited
--------------------------------------------
Ok, I saw that I have some typos (RockRidge not RockRide)...

Under "advanced options" you have "allow multidot" (5th option down the list)

(1) Can we assume that you mean multiBOOT?
(2) If so, didja already catch that as one of the typos, or is this the first mention you heard of it? In any event. if the answer to (1) was "yes", then presumbaly that will be corrected...

Posted by: bobby100 May 5 2004, 12:17 AM
Multidot means something like this: myfile.zip.rar (two dots)

Posted by: bobby100 May 12 2004, 11:55 PM
Some progress report:

*screenshot removed*

Most of the options tested. Auto-disable and enable (dependencies) resolved for most options.
I need example for boot load segment, how is that used?

Any advice is wellcome. If somebody mean that some other mkisofs option should be included - let me know.

Regards
Boban Spasic aka bobby100

Posted by: this-is-me May 13 2004, 12:43 AM
Everything looks good to me, could you please post the current version somewhere for download?

Posted by: bobby100 May 13 2004, 08:10 PM
I still have some problems if mkisofs.exe is in folder that have spaces in name.
E.g. this one won't work: C:\this is folder with spaces\mkisofs.exe
The problem is that I have done mkisofs GUI like BAT file generator. And spaces in folder names aren't recognized in BAT files. I'll try to solve this soon. Advices are very wellcome.
After solving this I'll release it just for few people that are really interested in testing and finding bugs. No alphas or betas will be released for public, I'll give download link just per e-mail.

Posted by: Preacher May 13 2004, 08:53 PM
QUOTE (bobby100 @ May 4 2004, 10:17 PM)
Multidot means something like this: myfile.zip.rar (two dots)

Ah, OK. Thx 4 the clarification...

Posted by: bobby100 May 13 2004, 10:12 PM
Ok, alpha verision is done, works well under WinXP. I'm sure that it doesn't work under Win9x. I have solved a lot of problems just by leting out the support for Win98 ( I hope you understand what I'v wrote here ).

So...
PM for the link. I don't want to be unfair, but for ILM beta was a lot of downloads, but nobody helped me finding bugs..

See you soon, I hope that version 1.0 will be available in few days.

Regards
Spasic Boban aka bobby100

Posted by: bobby100 May 15 2004, 12:30 PM
Yup, there is a progress on this, thanks to DigiWiz some bugs in alpha solved.
Beta testers, check your PMs for new link.

regards

bobby100

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)


The CD Forum [Powered by Invision Power Board]

Printable Version of Topic
Click here to view this topic in its original format
The CD Forum > Bootable CDs > Mkisofs_gui Beta

Posted by: bobby100 May 16 2004, 02:13 PM
*screenshot removed*

This is the screenshot of Mkisofs_GUI beta2.

PM me for download link if you want to be beta tester.

* To beta testers: Link is the same as for older development versions

Posted by: midas May 16 2004, 06:16 PM
Is this under the GNU GPL or similar license?

Posted by: bobby100 May 16 2004, 06:59 PM
Final version will be under GPL.
If you are interested in development - PM me. It is done in Borland Delphi.

Posted by: ByteCoder May 16 2004, 09:01 PM
Wow! Awesome GUI with all the basic functions included.

I notice you have an option available to run other parameters... Does that get included in the resulting batch file to be execuated before or after the mkisofs.exe is executed...

The reason I'm asking is because I run Duplicate File Linker on a copied source tree before running mkisofs.exe

main.cmd to automate by bootable CD making process..
CODE

@ECHO OFF
:: -------------------------------------------------------------------------
::
:: SRCD, Super System Resource CD
:: creation and management Script.
:: Added Final ISO creation to the script also.
::
:: -------------------------------------------------------------------------
ECHO.
ECHO SRCD: Super System Resource CD Compiling Script, v0.7b
ECHO.
verify other 2>nul
SETLOCAL ENABLEEXTENSIONS
IF errorlevel 1 goto _noext
::
:: Setting to current drive and path.
::
%~d0
CD "%~dp0"
@ECHO ON
IF EXIST cd_shell rmdir /S /Q "cd_shell"
MKDIR cd_shell
XCOPY "cd_shell_original" "cd_shell" /E /H /Q
IF EXIST "%~dp0output\i386" RMDIR /s /q "%~dp0output\i386"
IF EXIST "%~dp0output\programs" RMDIR /s /q "%~dp0output\programs"
IF EXIST "%~dp0output" RMDIR /s /q "%~dp0output"
@ECHO OFF
ECHO.
ECHO.
ECHO SRCD: Please insert/mount Windows XP Pro/SP1
ECHO SRCD: integrated into one of your optical
ECHO SRCD: or virtual drive.
ECHO.
ECHO SRCD: Make sure to choose
ECHO SRCD: %~dp0output as your
ECHO SRCD: output directory in pebuilder
ECHO SRCD: for this script to work
ECHO SRCD: and don't make the ISO from pebuilder.
ECHO.
ECHO SRCD: Press Enter when disk is loaded/mounted.
pause > nul
IF EXIST %~dp0new_pe\input.inf ERASE /f /q %~dp0new_pe\input.inf
start /wait %~dp0new_pe\pebuilder.exe
@ECHO ON
IF EXIST "%~dp0pe_stuff\menu\setupldr.ram" COPY "%~dp0pe_stuff\menu\setupldr.ram" "%~dp0output\i386"
IF EXIST "%~dp0pe_stuff\menu\txtsetup.ram" COPY "%~dp0pe_stuff\menu\txtsetup.ram" "%~dp0output\i386"
IF EXIST "%~dp0pe_stuff\menu\nu2menu.xml" COPY /Y "%~dp0pe_stuff\menu\nu2menu.xml" "%~dp0output\programs\nu2menu\nu2menu.xml"
InfCacheBuild.exe %~dp0output
IF EXIST "%~dp0output\i386" XCOPY "%~dp0output\i386" "%~dp0cd_shell\i386" /e /h /q /i
IF EXIST "%~dp0output\programs" XCOPY "%~dp0output\programs" "%~dp0cd_shell\programs" /e /h /q /i
::IF EXIST "%~dp0output\i386" RMDIR /s /q "%~dp0output\i386"
::IF EXIST "%~dp0output\programs" RMDIR /s /q "%~dp0output\programs"
::IF EXIST "%~dp0output" ERASE /q "%~dp0output"
IF EXIST "%~dp0cd_shell\i386" XCOPY "%~dp0cd_shell\i386" "%~dp0cd_shell\PowerXP\i386" /e /h /q /i
IF EXIST "%~dp0cd_shell\bootsect.bin" COPY /Y "%~dp0cd_shell\bootsect.bin" "%~dp0cd_shell\powerxp\i386\bootsect.bin"
IF EXIST "%~dp0cd_shell\programs" XCOPY "%~dp0cd_shell\programs" "%~dp0cd_shell\Erd2003\programs" /e /h /q /i
IF EXIST "%~dp0cd_shell\programs" XCOPY "%~dp0cd_shell\programs" "%~dp0cd_shell\PowerXP\programs" /e /h /q /i
@ECHO OFF
goto _build
::
:: When system extensions couldn't be enabled.
::
:_noext
@ECHO OFF
ECHO SRCD: Required System Extensions couldn't be enabled.
ECHO SRCD: Aborting the current process...
goto _end
::
:: Making the final ISO and requesting a name for it.
:: If no name is provided default name of SRCD is used.
::
:_build
@ECHO OFF
ECHO.
ECHO SRCD: Checking for required building files:
for %%i in (mkisofs.exe dfl.exe cygwin1.dll cd_shell\boot\sloader.bin cd_shell\boot\cdshell.ini) do if not exist %%i (
echo SRCD: Required file "%%i" not found.
goto _end)
Set Name=
SET /P Name=Name output file without extension, Max of 30 Characters:
IF '%Name%' =='' SET Name=SRCD
IF NOT '%Name%'=='' SET Name=%Name:~0,30%
ECHO.
::
:: Using Duplicate file linker which will make hardcoded
:: symbolic links to reduce output file when used in
:: conjunction with included version of mkisofs.
::
dfl.exe cd_shell link -d
::
:: CMD Line timestamp modification will take place here once app is ready
:: so that all files and folder in resulting ISO have the same Timestamps.
::
mkisofs.exe -iso-level 4 -follow-links -cache-inodes -J -joliet-long -V "PowerXP SLAX" -appid "CD SHELL/MKISOFS" -publisher "Collective Information Inc." -sysid "Win32" -verbose -N -nobak -eltorito-boot boot/sloader.bin -no-emul-boot -boot-load-size 4 -hide boot/sloader.bin -o C:\%Name%.iso "%~dp0cd_shell"
goto _done
::
:: Showing the final success message along with brief info.
::
:_done
@ECHO OFF
ECHO.
ECHO SRCD: File %Name%.iso created in c:\ directory.
ECHO SRCD: Use your favorite ISO burning tool to write it to a CD.
ECHO.
ECHO SRCD: Press Enter when ready to exit.
ECHO.
Pause > nul
goto _end
::
:: Disabling system extensions that were enabled
:: so variables as well as path parameters are cleared.
::
:_end
ENDLOCAL

Posted by: bobby100 May 16 2004, 09:34 PM
Hmmm... Other options are also for Mkisofs.exe, that is in case that user needs some options to include that aren't included in GUI. He can do this also by editing batch file, but by using this fields in GUI, this Other parameters are saved in template file.

I'm thinking to include one more field in GUI : Comments.
This can be good if someone wants to distribute his templates for Mkisofs_GUI.

Posted by: Allen2 May 16 2004, 10:54 PM
Why not adding a dfl function to your Gui ?
Just an idea not a request.

Posted by: bobby100 May 16 2004, 11:18 PM
@Allen2

I have never used DFL, because I don't have NTFS partitions (if I'm well informed DFL works just on ntfs partitions). If you can give me a bit more instructions - I'll try to integrate that. Give me some examples, or something like that...

Regards

Spasic Boban aka bobby100

Posted by: cdob May 18 2004, 01:04 PM
QUOTE
I have never used DFL, because I don't have NTFS partitions (if I'm well informed DFL works just on ntfs partitions).

DFL dosn't require a NTFS partition, there is a DOS version available. DFL creates symbolik links.

Hard links require a NTFS partition.

Find duplicate files in folder %SourceFolder% and create symbolic links:
dfl %SourceFolder% link -d

Add mkisofs parameters "-follow-links -cache-inodes".

Posted by: bobby100 May 19 2004, 01:37 PM
Progress report:
*screenshot removed*
Not available for download.

Posted by: bobby100 May 21 2004, 06:35 PM
Ok people, first public release available for download, take a look at my homepage:
http://members.chello.at/bobby100/

Changes from last beta:

- name changed to The_GUI
- added file-attributes changer
- added Duplicate File Linker
- added tool to change file names and folders names uppercase and lowercase
- comments saved in template files

To Do for next release:

- ZISO tree maker
- to include some templates in distribution
- bugfixes (if someone reports bugs)
- support for command-line CD recording tools

Advices are welcome

Regards
Spasic Boban aka bobby100

Posted by: Bernd Blaauw May 22 2004, 12:35 AM
you code faster than that I have the time to test things..
continue your excellent project.

(yes, I'm both very lazy and very busy)

Bernd

Posted by: bobby100 May 23 2004, 11:20 AM
One question (maybe bug):

I'v did auto conversion for backslashes to slashes in field "Boot Image" because I saw that only that way works for me (isolinux.bin as loader and lot of floppy images on cd + some DOS programs in folders).
Is that right, or the conversion should be only option?

Posted by: Bernd Blaauw May 23 2004, 04:16 PM
it's correct.
Also the EXACT path+filename should be known.

if I have C:\TEST\ISOLINUX\ISOLINUX.BIN
then
C:\TEST\ISOLINUX\ISOLINUX.BIN will work,
but C:\TeST\ISOLINUX\ISOLINUX.bin won't work.

Also be sure you remove any potential read-only attributes from the isolinux.bin and the boot catalog files.

Posted by: bobby100 May 23 2004, 08:06 PM
@Bernd

Mkisofs searches for boot sector or boot image relatively to root of the CD (or I'm wrong?).
In my program, when user selects boot image, path to the image is converted to be relative to CD root patch, and backslashes are converted to slashes because of cygwin ( \ to / ).
E.g:

CD root = c:\my_cd\

and isolinux.bin is in C:\my_cd\isolinux\isolinux.bin
this is converted to: /isolinux/isolinux.bin

A did this right or not?

Posted by: midas May 23 2004, 10:25 PM
why hasn't anybody made a win32 port of mkisofs?
or am I wrong?

Posted by: cworks May 24 2004, 03:43 AM
it is a win32 console app

WINDOWS EXECUTABLE
32bit for Windows 95 and Windows NT

Posted by: cdob May 24 2004, 09:28 AM
QUOTE (midas)
why hasn't anybody made a win32 port of mkisofs?

Yes, nobody did a complete win32 port.

Actualy, there is a cygwin version. You have to master both windows and unix specification. Normally you don't get problems, but remember backslash \ is a special character for unix.

Posted by: bobby100 May 24 2004, 09:32 AM
...and so this thread is going to be about Win32 port of Mkisofs...

Anybody want to help with my problems, or should I say, do anybody needs that GUI that I'm working on, or not ?

Posted by: aec May 24 2004, 02:03 PM
@bobby100

Nice and useful utility. Thanks for spending time to develop it.

I have one more idea and personal request. It has to do with the -sort sort_file option which, if I have not overlooked, it is missing from your frond end.

This option points at a sort_file with weight definitions that define how the files are stored on the CD. I experimented with this and I realized that one can gain in boot up speed from 15sec to 25sec or even more for CD's with complex directory structures.

This -sort option needs the CD_root_path with slashes / and not backslashes.
The sort_file is a simple text file with lines of filenames/dirnames followed by a positive or negative number, separated by a space or tab.

Anyway, I think the -sort option is important to have. Also, what I would personally find very useful is to use this option to create some kind of a layout manager which would allow the user to arrange the order by which specified folders/files are stored on the CD surface.
Practically this means an interface to select files or folders, assign to them proper weights and write the filename and its weight in the sort_file.

Posted by: bobby100 May 24 2004, 02:31 PM
@aec
Good point. Give me the example how one list should look like.

Posted by: aec May 24 2004, 02:48 PM
@bobby100

Have a look at http://www.911cd.net/forums/index.php?showtopic=6869

Posted by: Bernd Blaauw May 24 2004, 03:02 PM
this can be very important.

Does this sorting-list also affect the amount of time that the building of the ISO file takes?

on my 3GB DVD with BartPE on it it takes about 30 seconds or so before MKISOFS has even found the isolinux\isolinux.bin file.
it seems to just search all directories.

a pure WIN32/DJGPP version of MKISOFS would be great.

Posted by: bobby100 Jun 7 2004, 01:49 PM
@aec
This days I have a bit time to work on this. Can you give me some more info, like:
- weight numbers (min/max values), how to make them editable: +/- buttons or edit box, multiple select needed or not... etc
- folders, they also need weight numbers? That assumes whole folder with files in it, or just folder name ?
- can more files have the same weight number or should I make the routine to check (exclude) to happen something like that? Also this implicate multiple selection on/off
- I saw joker signs in your list, I can't do that, but I think if I allow multiple selection and the list file is generated by the program, that this isn't a problem for user.

My idea is to make something like for Advanced Tools, except that last list will have one more column with editable weight values. After selecting a line from that list (also multiple selection), the +1/-1, +10/-10, +100/-100... buttons will appear, also a edit box to enter the value manually. I was thinking also about list-sorting buttons (alphabeticaly, by weight).

Any advice is wellcome

Posted by: aec Jun 8 2004, 10:07 AM
@bobby100

Here are some answers to your questions.

Q. weight numbers (min/max values),
A. Use integer number between +/- 2147483647

Q. how to make them editable: +/- buttons or edit box,
A. Propably up/down buttons are more convenient but in some cases edit boxes are needed

Q. folders, they also need weight numbers? That assumes whole folder with files in it, or just folder name ?
A. If the filename is a directory name, then all the files in that directory (and sub-directories) will use its weight as their default weight.

Q. can more files have the same weight number or should I make the routine to check (exclude) to happen something like that? Also this implicate multiple selection on/off
A. No problem to have the same weight. These files define a group and within this group they are sorted alpabetically. Multiple selection is OK.

Q. I saw joker signs in your list, I can't do that, but I think if I allow multiple selection and the list file is generated by the program, that this isn't a problem for user.
A. Perhaps you could implement wildcards by using a second editable field that mirrors your initial folder selection.
In this field the user will have the chance to modify appropriately the entry (include wildcards, ...) before adding the entry to the sorting list.

QUOTE
My idea is to make something like for Advanced Tools, except that last list will have one more column with editable weight values.
After selecting a line from that list (also multiple selection), the +1/-1, +10/-10, +100/-100... buttons will appear, also a edit box to enter the value manually.
I was thinking also about list-sorting buttons (alphabeticaly, by weight).

The program should suggest a weight value for the next entry. I think that this should be the weight of the entry that the user has currently selected in the sorting list. Then the user may modify the weight using the +/- buttons or the edit box.

The original mkisofs_sort readme is here http://www.fifi.org/doc/mkisofs/README.sort

Regards

Posted by: dani2 Jun 12 2004, 06:36 PM
Hi AEC I am very interested in starting to use your sort listing as my PE disk takes too long to start, but I have a problem... My CD is too large ! So I actually need to use cdimage to create the image. Either that, or is it possible to "optimize" the CD with mkisofs? Opimization means multiple files on the CD have some sort of hardcoded link to them so they don't fill up the CD even more... Thanks for your input!!

Posted by: aec Jun 12 2004, 09:28 PM
@dani2

You may use the Duplicate File Linker (DFL) from Reanimatolog http://bootcd.narod.ru/ with mkisofs to have the same files stored once.

I have not tested this yet but I think, according to the relative documentation, the sort option works also in this case.

Quoting some info for dfl
QUOTE
DFL: Program to find double copies of files and replace it to symbolic links compatible with Win32 or MS-DOS version of mkisofs. It can be used with mkisofs to reduce the size of an ISO image (option -follow-links -cache-inodes).

and for sort option
QUOTE
If a file appears more than once in the source directory tree, then the file is only added once to the CD image - i.e. a hard linked file, or symbolic link if using the -f option. The file will be sorted according to the highest weighting given to any of the linked files.

Posted by: bobby100 Jun 14 2004, 12:49 AM
@aec
What is hapening if folder name contains spaces?

@all
Next step is to integrate CD Recording, so any help on CDrecord and Nerocmd is welcome.
- how to determine max.speed for recorder in CDrecord (or Nerocmd)...
- I don't know what else can occur, I'm still working on sort_list thing, if anyone have expirience with command-line recording tools, please give me suggestions how to implement this

Still don't have enough info on ZISOFS, anyone with expirience on this ?

Posted by: aec Jun 14 2004, 01:09 AM
@bobby100

QUOTE
What is hapening if folder name contains spaces?

No problem. Just write it without quotes. The program considers as filename all the characters from the first character in a line, up to, but not including the last space or tab character on a line.

regards

Posted by: bobby100 Jun 15 2004, 11:13 AM
Sorting thing is mostly done, I have sended the download link to aec to test it, if aec says it's good - it will be included in The_GUI.

Now about CD burning part: I have found NeroAPI for Delphi, but it is under Mozilla licence ( http://www.mozilla.org/MPL/MPL-1.1.html ) and my program was under GPL. Can someone explain the difference to me? My English isn't so good that I can understand it alone.
Second thing is: can I use Crystal icons ( http://www.linuxcult.com/forum/crystal.php ) for my program ( modified to meet my needs ) if my program is GPL (or MPL) ?

regards
Spasic Boban aka bobby100

Posted by: bobby100 Jun 16 2004, 06:05 PM
I did some tests for ZISOfs and I have done some consulting with Reanimatolog.
The results are:
- the compression ratio is 10%-40% for my test files
- it is supported just by linux kernels 2.4.14 or 2.4.9-ac14 or later (it will be decompressed in real-time and the compressed files are used just like normal files)
- you CAN'T use it with BartPE (WinPE, DOS, any other than Linux OS...) system files
- only way that ZISO can be used with Windows is to compress programs (or any non-system files) before cd burning, and to decompress it to RAM (or any other writable media) before using them.
- live-linuxes already come with compressed file-systems (Knoppix and his variants with cloop, Slax with ZISO) so here is no need for ZISO tools to be included in The_GUI (also nobody makes live linuxes from within Win environment).
- it can be used for DOS floppy images (only point where I find it interesting) so let's talk about this: 2.88 mb floppy image contains 500 kb system files that cant be compressed, so there remains 2.3 - 2.4 mb files to compress. Let's say that we gain 500 kb by compress them. Mkzftree for DOS is 170 kb, so as result we gain about 330kb free space. My question is: is it worth of it? Concider that you can compress whole IMG file with gz compression and use it in this form with memdisk (or memdisk plugin for BS and CS). Also new memdisk supports WinImage compressed images (*.imz). If the target is to obtain more space on CD - use compressed images. If you want more space inside floppy image - use CAB or RAR.

Example: PartitionMagic 8.02 goes to 2.88 mb image (1987 kb full). After "zisoing" program files (1822 kb) they are 1529kb. Add mkzftree.exe and cwsdpmi.exe to this (needed for decompression) result = 1699 kb. Add command.com and other files that can't be compressed = 1866kb. Overall result is 121kb free space gained for 2.88 mb floppy image.

Example2: compress programs for BartPE (WinPE). Uncompresse sample folder = 31.6mb(mostly exe and dlls). Compresse = 19.1mb with lot of troubles and general protection faults generated by mkzftree. Same folder compressed with RAR (default compression ratio) = 17.3 mb. Why RAR? In both ZISO and RAR cases you need to uncompress files to RAM drive (if you are using BartPE or WinPE).

My conclusion is - ZISO isn't very usefull to be used with DOS and BartPE (WinPE) environment.
My question is: according to this test and conclusions, do I still should include support for mkzftree in The_GUI? Please, help me to decide.

regards
Boban Spasic aka bobby100

Posted by: Allen2 Jun 16 2004, 09:11 PM
You should remove it for as it won't be of any use for the most of us.
Perhaps, if in a near future, microsoft add some support or someone make a driver to support it, it will be usefull for windows users.
Thanks a lot for your testings, you saved me a lot of time. I didn't have the time to try it in the last two month.

Posted by: bobby100 Jun 17 2004, 06:36 PM
LoL, developing this program makes me to go mad...
In order to have some functions, GUI must capture the output from command-line tools (CLT in further text). This can be done thru piping the stnd_out to some list component inside the GUI. But....
Smart little CLTs don't use standard out, but they use POSIX cygwin out... grrrrr
All that you see in console while mkisofs.exe or cdrecord.exe are writing isn't realy there but in Cygwin console that is inside your windows console window.... grrrr
After the whole job in Cygwin is done, then is complete output parsed to windows console at once ( not even in CR/LF format, but in LF format ) ..... once more: grrrrrrrr........
Ladies and Gentlemans, I'll need a little bit more time to make CDRecord working under the GUI.

Back to one of my previous questions (couple of posts ago): I found NeroAPI for Delphi, but it is under Mozilla Public Licence. Can someone explaint to me what that means, can I use that unit if my program is under GPL or not?
Please help, I'm desperate because I realy don't understand english so good that I can understand those lawyers-alike expresions in MPL and GPL.

Posted by: midas Jun 18 2004, 12:14 AM
If I am not mistaken, the Mozilla license is very similar to GPL type for the exception that te source code does not have to be included alongside with it.
I could be mistaken though...

Posted by: midas Jun 18 2004, 12:15 AM
aha!
http://www.mozilla.org/MPL/MPL-1.1.html

Posted by: bobby100 Jun 18 2004, 11:49 AM
@midas
My friend, I also found and read the MPL, but the problem is that I don't understand it, neither the GPL. My knowledge of English isn't so good...
I asked if someone can help me understanding it. If NeroAPI is MPL, can I release the app that uses it, but under GPL...etc.
Same problem with Crystal Icons (link is a couple of posts ago).

Someone with advices on cygwin console output thing ?

Posted by: Bernd Blaauw Jun 20 2004, 01:39 AM
ehm..Bart's PE Builder also captures MKISOFS output in the PEbuilder window, so it must be possible somehow.

That said, I still haven't used your GUI. My promise controller doesn't recognize my SerialATA disks anymore, and that means no access to my DVD tree on harddisk, so no mastering using your GUI and/or MKISOFS.

Posted by: Alex Kopylov Jun 21 2004, 01:46 AM
@Bernd Blaauw
QUOTE
a pure WIN32/DJGPP version of MKISOFS would be great.

a pure Win32 version (without cygwin1.dll) of cdrtools http://cdrtools.bootcd.ru
@bobby100
that version includes mkisofs with build-in storage optimization (similair to 'cdimage -o'),
which one works faster than original mkisofs with DFL

Posted by: bobby100 Jun 21 2004, 01:56 AM
Alex, those are great news
I'll make The_GUI to match your version of CDRtools.

I have opinnion that this version is better than original one, so I'll remove DFL from The_GUI and some other options that I found useless (transparent compression, boot load segment)

from the link you posted:
" - Option -rock have same effect as option -rational-rock "
Can you explain this?
Should I include just one option in GUI (eg. just "-rock") ?

One little problem, with "old stuff" we could done this DFL, then sorting (with sorting lists), then making iso. How can we do this now ? Now we can sort just plain tree, we can't sort DFL-ed tree anymore.

once more, realy great news...

regards
Boban Spasic

Posted by: Alex Kopylov Jun 21 2004, 02:36 AM
@bobby100
QUOTE
" - Option -rock have same effect as option -rational-rock "
Can you explain this?

-rock (or -R) option requires some information, which one not available under Windows (UNIX GIDs, UIDs and file/dir modes).

-rational-rock (or -r) described in documentation as:
CODE
This is like the -R option, but file ownership and modes are set to more useful values.
The uid and gid are set to zero
[...]
All the file read bits are set true, so that files and directories are globally readable on the client.
[...]
When used on Win32, the execute bit is set on all files.
[...]
See also: -uid -gid, -dir-mode, -file-mode and -new-dir-mode.

QUOTE

Should I include just one option in GUI (eg. just "-rock") ?

I think "-rational-rock" is better.

Posted by: midas Jun 21 2004, 05:53 AM
QUOTE (Alex Kopylov @ Jun 20 2004, 11:46 PM)
@Bernd Blaauw
QUOTE
a pure WIN32/DJGPP version of MKISOFS would be great.

a pure Win32 version (without cygwin1.dll) of cdrtools http://cdrtools.bootcd.ru
@bobby100
that version includes mkisofs with build-in storage optimization (similair to 'cdimage -o'),
which one works faster than original mkisofs with DFL

awesome!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)


The CD Forum [Powered by Invision Power Board]

Printable Version of Topic
Click here to view this topic in its original format
The CD Forum > General > Pebuilder Cd Layout Optimization

Posted by: aec May 22 2004, 09:04 PM
I've been always much concerned about the relatively slow start up of PE disks.
This feeling gets stronger whenever I launce a Knoppix disk which boots quite fast.
OK, Knoppix is one but PEBuilder disks are as many as we are, each with its own personality.

To come now to the topic I want to discuss let me list some of the factors that affect boot time for a given PC system

1. The shell we use
2. The services we want to have available before our shell starts.
3. The CD layout for system files, driver files, plugin files, ...

A few comments:

1. We now have several shells we can choose from (nu2menu, nu2menu+geoshell, bluebox, litestep, aston, and explorer shells (XPE with localization, this-is-me's optimized, TrueExplorer, ...).
I think we can find fast shells and I believe that those that today are slow will become faster.

2. The services we want to have ready when our shell starts of course "eat" more boot time. However, most of the shells can be configured so that some services are started later on demand.

3. Thanks to the efforts of the people like Bart, Allen2, Paraglider, Frodo, Sherpya, ...
we now we have better and faster plug and play support with HWPnp, PePnp, bartpe, and Frodo's plugins.
Now we can support more and more devices but for this we need more and more files.
And of course, we now have tons of plugins for nice programs we want to use in our LiveCD.

4. Suppose now we have decided for what we want to have on our LiveCD.
Taking into account the relatively small access time and transfer rate of CD Players, the question now is:
Is there any way to optimize our CD?
- Does it help to store large files compressed (upx or zisofs)?
- Does it matter where our files are located on the CD?

Well, I haven't performed any compression tests. This is something that I find interesting and I would like to know if someone has some results regarding speed increase at least for fast systems (decompression itself needs a lot of time).

However, I have done a first experiment with the CD layout and found out that it is certainly important. We can get a faster CD with a proper layout pattern.

The First Experiment

I used PEBuilder to build an XP-SP1 based PE system with XPE 0.97 shell and several plugins making a 680MB CD.

I created three iso's by running the mkisofs.
The first one with the standard options.
The second one by adding the option -sort sort_pos_file and
the third one with the option -sort sort_neg_file.

The sort_pos_file and sort_neg_file are files with positive and negative weight definitions for certain files and folders of our CD.
The idea is that files that are needed during boot should be close together and preferably in the order that they are accesed. I used the positive weight definition list to put such files near the center of the CD. Similarly, I used a negative weight definition list to put these files at the outer parts of the CD.

I burned three CD's, the neutral, the positive and the negative. I tested them on my system and measured the time needed for XPE to boot. The results are:

CODE

Neutral: 171 s
Positive: 155 s
Negative: 185 s

My sorting list is just a first experiment. I share it in my next post, together with some instructions, hoping that it can be of use to anyone who wants to save some boot seconds and also wants to help to improve it.

Posted by: aec May 22 2004, 09:07 PM
The mkisofs command line
CODE

mkisofs.exe -iso-level 4 -sort pe_sort.txt -volid "PE-Builder" -A PEBUILDER/MKISOFS -sysid "Win32" -b BOOTSECT.BIN -no-emul-boot -boot-load-size 4 -hide BOOTSECT.BIN -hide boot.catalog -o "c:\pebuilder.iso" "C:/PEBLDR"

Note: This command line is for the unpatched mkisofs.
If you use bart's patched version then lowercase BOOTSECT.BIN.
In our example The pebuilder @OutDir@ is C:\PEBLDR.

Important!! It took me two days to find out that the sort option does not like backslash "\". I was thinking that -sort is not working.
So use "/" in the command line and for the paths listed in the sorting list.
Also the @OutDir@ path in sorting list should exactly match whatever you use in command line.
e.g., if you use in command line "./PEBLDR" then you should replace
"C:/PEBLDR/" with "./PEBLDR" everywhere in the sorting list.

The sorting list pe_sort.txt.
It consists of two columns separated by only one space or tab.
The last column is a positive or negative number with nothing else after it.
Filenames with higher positive weights are ordered first. Default weight is 0 and the order is alphabetical.
Negative weight are ordered after 0 weighted files.

The list was constructed using
- info that is used by the defragmenter on a real windows system (windows\prefetch\layout.ini) to optimize disk layout and
- information from some boot tracing with sysinternals regmon.

CODE

C:/PEBLDR/I386/NTDETECT.COM 7600
C:/PEBLDR/I386/SYSTEM32/NTKRNLMP.EXE 7640
C:/PEBLDR/I386/SYSTEM32/BOOTVID.DLL 7620
C:/PEBLDR/I386/SYSTEM32/KDCOM.DLL 7610
C:/PEBLDR/I386/SYSTEM32/HAL.DLL 7600
C:/PEBLDR/I386/TXTSETUP.SIF 7590
C:/PEBLDR/I386/SYSTEM32/CONFIG 7580
C:/PEBLDR/I386/SYSTEM32/SETUPREG.HIV 7570
C:/PEBLDR/I386/SYSTEM32/L_INTL.NLS 7540
C:/PEBLDR/I386/SYSTEM32/*.NLS 7535
C:/PEBLDR/I386/FONTS/*.FON 7530
C:/PEBLDR/I386/INF/INFCACHE.1 7525
C:/PEBLDR/I386/SYSTEM32/DRIVERS 7520
C:/PEBLDR/I386/SYSTEM32/SMSS.EXE 7510
C:/PEBLDR/I386/APPPATCH/DRVMAIN.SDB 7500
C:/PEBLDR/I386/SYSTEM32/AUTOCHK.EXE 7490
C:/PEBLDR/I386/SYSTEM32/SFCFILES.DLL 7480
C:/PEBLDR/I386/SYSTEM32/ADVAPI32.DLL 7470
C:/PEBLDR/I386/SYSTEM32/COMDLG32.DLL 7460
C:/PEBLDR/I386/SYSTEM32/GDI32.DLL 7450
C:/PEBLDR/I386/SYSTEM32/IMAGEHLP.DLL 7440
C:/PEBLDR/I386/SYSTEM32/KERNEL32.DLL 7430
C:/PEBLDR/I386/SYSTEM32/LZ32.DLL 7420
C:/PEBLDR/I386/SYSTEM32/OLE32.DLL 7410
C:/PEBLDR/I386/SYSTEM32/OLEAUT32.DLL 7400
C:/PEBLDR/I386/SYSTEM32/OLECLI32.DLL 7390
C:/PEBLDR/I386/SYSTEM32/OLECNV32.DLL 7380
C:/PEBLDR/I386/SYSTEM32/OLESVR32.DLL 7370
C:/PEBLDR/I386/SYSTEM32/OLETHK32.DLL 7360
C:/PEBLDR/I386/SYSTEM32/RPCRT4.DLL 7350
C:/PEBLDR/I386/SYSTEM32/SHELL32.DLL 7340
C:/PEBLDR/I386/SYSTEM32/URL.DLL 7330
C:/PEBLDR/I386/SYSTEM32/URLMON.DLL 7320
C:/PEBLDR/I386/SYSTEM32/USER32.DLL 7310
C:/PEBLDR/I386/SYSTEM32/VERSION.DLL 7300
C:/PEBLDR/I386/SYSTEM32/WININET.DLL 7290
C:/PEBLDR/I386/SYSTEM32/WLDAP32.DLL 7280
C:/PEBLDR/I386/SYSTEM32/SHLWAPI.DLL 7270
C:/PEBLDR/I386/SYSTEM32/COMCTL32.DLL 7260
C:/PEBLDR/I386/SYSTEM32/MSVCRT.DLL 7250
C:/PEBLDR/I386/SYSTEM32/MPR.DLL 7240
C:/PEBLDR/I386/SYSTEM32/NTVDM.EXE 7230
C:/PEBLDR/I386/SYSTEM32/WOW32.DLL 7220
C:/PEBLDR/I386/SYSTEM32/CRYPT32.DLL 7210
C:/PEBLDR/I386/SYSTEM32/APPHELP.DLL 7200
C:/PEBLDR/I386/SYSTEM32/USERENV.DLL 7190
C:/PEBLDR/I386/SYSTEM32/MSASN1.DLL 7180
C:/PEBLDR/I386/SYSTEM32/WIN32K.SYS 7170
C:/PEBLDR/I386/SYSTEM32/WATCHDOG.SYS 7160
C:/PEBLDR/I386/SYSTEM32/CSRSS.EXE 7150
C:/PEBLDR/I386/SYSTEM32/CSRSRV.DLL 7140
C:/PEBLDR/I386/SYSTEM32/BASESRV.DLL 7130
C:/PEBLDR/I386/SYSTEM32/WINSRV.DLL 7120
C:/PEBLDR/I386/SYSTEM32/UNICODE.NLS 7110
C:/PEBLDR/I386/SYSTEM32/LOCALE.NLS 7100
C:/PEBLDR/I386/SYSTEM32/SORTTBLS.NLS 7090
C:/PEBLDR/I386/SYSTEM32/FNTCACHE.DAT 7070
C:/PEBLDR/I386/SYSTEM32/NV4_DISP.DLL 7060
C:/PEBLDR/I386/SYSTEM32/VGA.DLL 7050
C:/PEBLDR/I386/SYSTEM.INI 7040
C:/PEBLDR/I386/SYSTEM32/WINLOGON.EXE 7030
C:/PEBLDR/I386/SYSTEM32/NDDEAPI.DLL 7020
C:/PEBLDR/I386/SYSTEM32/SECUR32.DLL 7010
C:/PEBLDR/I386/SYSTEM32/WINSTA.DLL 7000
C:/PEBLDR/I386/SYSTEM32/PROFMAP.DLL 6690
C:/PEBLDR/I386/SYSTEM32/NETAPI32.DLL 6680
C:/PEBLDR/I386/SYSTEM32/REGAPI.DLL 6670
C:/PEBLDR/I386/SYSTEM32/WS2_32.DLL 6650
C:/PEBLDR/I386/SYSTEM32/WS2HELP.DLL 6640
C:/PEBLDR/I386/SYSTEM32/AUTHZ.DLL 6630
C:/PEBLDR/I386/SYSTEM32/PSAPI.DLL 6620
C:/PEBLDR/I386/SYSTEM32/SETUPAPI.DLL 6610
C:/PEBLDR/I386/SYSTEM32/CTYPE.NLS 6600
C:/PEBLDR/I386/SYSTEM32/SORTKEY.NLS 6590
C:/PEBLDR/I386/SYSTEM32/KBDUS.DLL 6580
C:/PEBLDR/I386/FONTS/TREBUCBD.TTF 6570
C:/PEBLDR/I386/FONTS/TAHOMABD.TTF 6560
C:/PEBLDR/I386/FONTS/TAHOMA.TTF 6550
C:/PEBLDR/I386/FONTS/MARLETT.TTF 6540
C:/PEBLDR/I386/SYSTEM32/KBDHE.DLL 6530
C:/PEBLDR/I386/SYSTEM32/MSGINA.DLL 6520
C:/PEBLDR/I386/SYSTEM32/ODBC32.DLL 6510
C:/PEBLDR/I386/SYSTEM32/SXS.DLL 6500
C:/PEBLDR/I386/WINSXS/ 6490
C:/PEBLDR/I386/WINDOWSSHELL.MANIFEST 6480
C:/PEBLDR/I386/SYSTEM32/ODBCINT.DLL 6470
C:/PEBLDR/I386/SYSTEM32/SHSVCS.DLL 6460
C:/PEBLDR/I386/SYSTEM32/SFC.DLL 6450
C:/PEBLDR/I386/SYSTEM32/SFC_OS.DLL 6440
C:/PEBLDR/I386/SYSTEM32/WINTRUST.DLL 6430
C:/PEBLDR/I386/SYSTEM32/SERVICES.EXE 6420
C:/PEBLDR/I386/SYSTEM32/LSASS.EXE 6410
C:/PEBLDR/I386/SYSTEM32/SCESRV.DLL 6400
C:/PEBLDR/I386/SYSTEM32/UMPNPMGR.DLL 6390
C:/PEBLDR/I386/SYSTEM32/NCOBJAPI.DLL 6380
C:/PEBLDR/I386/SYSTEM32/LSASRV.DLL 6370
C:/PEBLDR/I386/SYSTEM32/SAMSRV.DLL 6360
C:/PEBLDR/I386/SYSTEM32/CRYPTDLL.DLL 6350
C:/PEBLDR/I386/SYSTEM32/DNSAPI.DLL 6340
C:/PEBLDR/I386/SYSTEM32/SAMLIB.DLL 6330
C:/PEBLDR/I386/SYSTEM32/NTDSAPI.DLL 6320
C:/PEBLDR/I386/SYSTEM32/SCHANNEL.DLL 6310
C:/PEBLDR/I386/SYSTEM32/WINDOWSLOGON.MANIFEST 6300
C:/PEBLDR/I386/SYSTEM32/IMM32.DLL 6290
C:/PEBLDR/I386/SYSTEM32/MSPRIVS.DLL 6280
C:/PEBLDR/I386/SYSTEM32/KERBEROS.DLL 6270
C:/PEBLDR/I386/WIN.INI 6260
C:/PEBLDR/I386/SYSTEM32/MSV1_0.DLL 6250
C:/PEBLDR/I386/SYSTEM32/NETLOGON.DLL 6240
C:/PEBLDR/I386/SYSTEM32/W32TIME.DLL 6230
C:/PEBLDR/I386/SYSTEM32/MSVCP60.DLL 6220
C:/PEBLDR/I386/SYSTEM32/IPHLPAPI.DLL 6210
C:/PEBLDR/I386/SYSTEM32/WDIGEST.DLL 6200
C:/PEBLDR/I386/SYSTEM32/RSAENH.DLL 6190
C:/PEBLDR/I386/SYSTEM32/WINSCARD.DLL 6180
C:/PEBLDR/I386/SYSTEM32/WTSAPI32.DLL 6170
C:/PEBLDR/I386/SYSTEM32/SCECLI.DLL 6160
C:/PEBLDR/I386/FONTS/ARIAL.TTF 6150
C:/PEBLDR/I386/SYSTEM32/NTKRNLPA.EXE 6140
C:/PEBLDR/I386/SYSTEM32/EVENTLOG.DLL 6130
C:/PEBLDR/I386/SYSTEM32/NETEVENT.DLL 6120
C:/PEBLDR/I386/SYSTEM32/SVCHOST.EXE 6110
C:/PEBLDR/I386/SYSTEM32/RPCSS.DLL 6100
C:/PEBLDR/I386/SYSTEM32/MSWSOCK.DLL 6090
C:/PEBLDR/I386/SYSTEM32/WSHTCPIP.DLL 6080
C:/PEBLDR/I386/SYSTEM32/WINRNR.DLL 6070
C:/PEBLDR/I386/SYSTEM32/RASADHLP.DLL 6060
C:/PEBLDR/I386/SYSTEM32/UXTHEME.DLL 6050
C:/PEBLDR/I386/SYSTEM32/DHCPCSVC.DLL 6040
C:/PEBLDR/I386/SYSTEM32/LOGONUI.EXE 6030
C:/PEBLDR/I386/SYSTEM32/CCEVTMGR.EXE 6020
C:/PEBLDR/I386/SYSTEM32/SHELL32.DLL 6010
C:/PEBLDR/I386/SYSTEM32/SPOOLSV.EXE 6000
C:/PEBLDR/I386/SYSTEM32/XPEINIT.EXE 5020
C:/PEBLDR/I386/SYSTEM32/PENETCFG.EXE 5010
C:/PEBLDR/I386/SYSTEM32/BARTPE.EXE 5000
C:/PEBLDR/I386/SYSTEM32/ 4000
C:/PEBLDR/I386/INF/ 3000
C:/PEBLDR/I386/FONTS/ 2000
C:/PEBLDR/I386/ 1000

Try it and help to improve it.

Posted by: mbarnes May 23 2004, 12:53 AM
I use Nu2menu & Geoshell V2a (for the task bar), I only start up Explorer when or if needed.
One thing which is slow is registering dll's, possibly 60 or 80 seconds out of 4 or 5 minutes boot up (for 36 dll's). I am going to have to find out if some dll's really need to be registered. (for USB , mmc & VBS plugins)
Running infcache builder (by Paraglider or Sherpya) makes a significant reduction in boot up time.

keep up the good work aec

regards
Mike Barnes

Posted by: aec Jun 21 2004, 11:38 PM
Follows a second version of the sorting list, slightly improved
CODE
C:/PEBLDR/BOOTSECT.BIN 8000
C:/PEBLDR/I386/SETUPLDR.BIN 7700
C:/PEBLDR/I386/BOOTFIX.BIN 7690
C:/PEBLDR/BOOTFONT.BIN 7680
C:/PEBLDR/I386/NTDETECT.COM 7670
C:/PEBLDR/I386/TXTSETUP.SIF 7660
C:/PEBLDR/I386/SYSTEM32/WINPEOEM.SIF 7658
C:/PEBLDR/I386/SPCMDCON.SYS 7655
C:/PEBLDR/I386/SYSTEM32/BIOSINFO.INF 7650
C:/PEBLDR/I386/SYSTEM32/NTKRNLMP.EXE 7640
C:/PEBLDR/I386/SYSTEM32/BOOTVID.DLL 7620
C:/PEBLDR/I386/SYSTEM32/KDCOM.DLL 7610
C:/PEBLDR/I386/SYSTEM32/HAL.DLL 7600
C:/PEBLDR/I386/SYSTEM32/CONFIG 7580
C:/PEBLDR/I386/SYSTEM32/SETUPREG.HIV 7570
C:/PEBLDR/I386/SYSTEM32/L_INTL.NLS 7540
C:/PEBLDR/I386/SYSTEM32/*.NLS 7535
C:/PEBLDR/I386/FONTS/*.FON 7530
C:/PEBLDR/I386/INF/INFCACHE.1 7525
C:/PEBLDR/I386/SYSTEM32/DRIVERS 7520
C:/PEBLDR/I386/SYSTEM32/SMSS.EXE 7510
C:/PEBLDR/I386/APPPATCH/DRVMAIN.SDB 7500
C:/PEBLDR/I386/SYSTEM32/AUTOCHK.EXE 7490
C:/PEBLDR/I386/SYSTEM32/SFCFILES.DLL 7480
C:/PEBLDR/I386/SYSTEM32/ADVAPI32.DLL 7470
C:/PEBLDR/I386/SYSTEM32/COMDLG32.DLL 7460
C:/PEBLDR/I386/SYSTEM32/GDI32.DLL 7450
C:/PEBLDR/I386/SYSTEM32/IMAGEHLP.DLL 7440
C:/PEBLDR/I386/SYSTEM32/KERNEL32.DLL 7430
C:/PEBLDR/I386/SYSTEM32/LZ32.DLL 7420
C:/PEBLDR/I386/SYSTEM32/OLE32.DLL 7410
C:/PEBLDR/I386/SYSTEM32/OLEAUT32.DLL 7400
C:/PEBLDR/I386/SYSTEM32/OLECLI32.DLL 7390
C:/PEBLDR/I386/SYSTEM32/OLECNV32.DLL 7380
C:/PEBLDR/I386/SYSTEM32/OLESVR32.DLL 7370
C:/PEBLDR/I386/SYSTEM32/OLETHK32.DLL 7360
C:/PEBLDR/I386/SYSTEM32/RPCRT4.DLL 7350
C:/PEBLDR/I386/SYSTEM32/SHELL32.DLL 7340
C:/PEBLDR/I386/SYSTEM32/URL.DLL 7330
C:/PEBLDR/I386/SYSTEM32/URLMON.DLL 7320
C:/PEBLDR/I386/SYSTEM32/USER32.DLL 7310
C:/PEBLDR/I386/SYSTEM32/VERSION.DLL 7300
C:/PEBLDR/I386/SYSTEM32/WININET.DLL 7290
C:/PEBLDR/I386/SYSTEM32/WLDAP32.DLL 7280
C:/PEBLDR/I386/SYSTEM32/SHLWAPI.DLL 7270
C:/PEBLDR/I386/SYSTEM32/COMCTL32.DLL 7260
C:/PEBLDR/I386/SYSTEM32/MSVCRT.DLL 7250
C:/PEBLDR/I386/SYSTEM32/MPR.DLL 7240
C:/PEBLDR/I386/SYSTEM32/NTVDM.EXE 7230
C:/PEBLDR/I386/SYSTEM32/WOW32.DLL 7220
C:/PEBLDR/I386/SYSTEM32/CRYPT32.DLL 7210
C:/PEBLDR/I386/SYSTEM32/APPHELP.DLL 7200
C:/PEBLDR/I386/SYSTEM32/USERENV.DLL 7190
C:/PEBLDR/I386/SYSTEM32/MSASN1.DLL 7180
C:/PEBLDR/I386/SYSTEM32/WIN32K.SYS 7170
C:/PEBLDR/I386/SYSTEM32/WATCHDOG.SYS 7160
C:/PEBLDR/I386/SYSTEM32/CSRSS.EXE 7150
C:/PEBLDR/I386/SYSTEM32/CSRSRV.DLL 7140
C:/PEBLDR/I386/SYSTEM32/BASESRV.DLL 7130
C:/PEBLDR/I386/SYSTEM32/WINSRV.DLL 7120
C:/PEBLDR/I386/SYSTEM32/UNICODE.NLS 7110
C:/PEBLDR/I386/SYSTEM32/LOCALE.NLS 7100
C:/PEBLDR/I386/SYSTEM32/SORTTBLS.NLS 7090
C:/PEBLDR/I386/SYSTEM32/FNTCACHE.DAT 7070
C:/PEBLDR/I386/SYSTEM32/NV4_DISP.DLL 7060
C:/PEBLDR/I386/SYSTEM32/VGA.DLL 7050
C:/PEBLDR/I386/SYSTEM.INI 7040
C:/PEBLDR/I386/SYSTEM32/WINLOGON.EXE 7030
C:/PEBLDR/I386/SYSTEM32/NDDEAPI.DLL 7020
C:/PEBLDR/I386/SYSTEM32/SECUR32.DLL 7010
C:/PEBLDR/I386/SYSTEM32/WINSTA.DLL 7000
C:/PEBLDR/I386/SYSTEM32/PROFMAP.DLL 6690
C:/PEBLDR/I386/SYSTEM32/NETAPI32.DLL 6680
C:/PEBLDR/I386/SYSTEM32/REGAPI.DLL 6670
C:/PEBLDR/I386/SYSTEM32/WS2_32.DLL 6650
C:/PEBLDR/I386/SYSTEM32/WS2HELP.DLL 6640
C:/PEBLDR/I386/SYSTEM32/AUTHZ.DLL 6630
C:/PEBLDR/I386/SYSTEM32/PSAPI.DLL 6620
C:/PEBLDR/I386/SYSTEM32/SETUPAPI.DLL 6610
C:/PEBLDR/I386/SYSTEM32/CTYPE.NLS 6600
C:/PEBLDR/I386/SYSTEM32/SORTKEY.NLS 6590
C:/PEBLDR/I386/SYSTEM32/KBDUS.DLL 6580
C:/PEBLDR/I386/FONTS/TREBUCBD.TTF 6570
C:/PEBLDR/I386/FONTS/TAHOMABD.TTF 6560
C:/PEBLDR/I386/FONTS/TAHOMA.TTF 6550
C:/PEBLDR/I386/FONTS/MARLETT.TTF 6540
C:/PEBLDR/I386/SYSTEM32/KBD*.DLL 6530
C:/PEBLDR/I386/SYSTEM32/MSGINA.DLL 6520
C:/PEBLDR/I386/SYSTEM32/ODBC32.DLL 6510
C:/PEBLDR/I386/SYSTEM32/SXS.DLL 6500
C:/PEBLDR/I386/WINSXS/ 6490
C:/PEBLDR/I386/WINDOWSSHELL.MANIFEST 6480
C:/PEBLDR/I386/SYSTEM32/ODBCINT.DLL 6470
C:/PEBLDR/I386/SYSTEM32/SHSVCS.DLL 6460
C:/PEBLDR/I386/SYSTEM32/SFC.DLL 6450
C:/PEBLDR/I386/SYSTEM32/SFC_OS.DLL 6440
C:/PEBLDR/I386/SYSTEM32/WINTRUST.DLL 6430
C:/PEBLDR/I386/SYSTEM32/SERVICES.EXE 6420
C:/PEBLDR/I386/SYSTEM32/LSASS.EXE 6410
C:/PEBLDR/I386/SYSTEM32/SCESRV.DLL 6400
C:/PEBLDR/I386/SYSTEM32/UMPNPMGR.DLL 6390
C:/PEBLDR/I386/SYSTEM32/NCOBJAPI.DLL 6380
C:/PEBLDR/I386/SYSTEM32/LSASRV.DLL 6370
C:/PEBLDR/I386/SYSTEM32/SAMSRV.DLL 6360
C:/PEBLDR/I386/SYSTEM32/CRYPTDLL.DLL 6350
C:/PEBLDR/I386/SYSTEM32/DNSAPI.DLL 6340
C:/PEBLDR/I386/SYSTEM32/SAMLIB.DLL 6330
C:/PEBLDR/I386/SYSTEM32/NTDSAPI.DLL 6320
C:/PEBLDR/I386/SYSTEM32/SCHANNEL.DLL 6310
C:/PEBLDR/I386/SYSTEM32/WINDOWSLOGON.MANIFEST 6300
C:/PEBLDR/I386/SYSTEM32/IMM32.DLL 6290
C:/PEBLDR/I386/SYSTEM32/MSPRIVS.DLL 6280
C:/PEBLDR/I386/SYSTEM32/KERBEROS.DLL 6270
C:/PEBLDR/I386/WIN.INI 6260
C:/PEBLDR/I386/SYSTEM32/MSV1_0.DLL 6250
C:/PEBLDR/I386/SYSTEM32/NETLOGON.DLL 6240
C:/PEBLDR/I386/SYSTEM32/W32TIME.DLL 6230
C:/PEBLDR/I386/SYSTEM32/MSVCP60.DLL 6220
C:/PEBLDR/I386/SYSTEM32/IPHLPAPI.DLL 6210
C:/PEBLDR/I386/SYSTEM32/WDIGEST.DLL 6200
C:/PEBLDR/I386/SYSTEM32/RSAENH.DLL 6190
C:/PEBLDR/I386/SYSTEM32/WINSCARD.DLL 6180
C:/PEBLDR/I386/SYSTEM32/WTSAPI32.DLL 6170
C:/PEBLDR/I386/SYSTEM32/SCECLI.DLL 6160
C:/PEBLDR/I386/FONTS/ARIAL.TTF 6150
C:/PEBLDR/I386/SYSTEM32/NTKRNLPA.EXE 6140
C:/PEBLDR/I386/SYSTEM32/EVENTLOG.DLL 6130
C:/PEBLDR/I386/SYSTEM32/NETEVENT.DLL 6120
C:/PEBLDR/I386/SYSTEM32/SVCHOST.EXE 6110
C:/PEBLDR/I386/SYSTEM32/RPCSS.DLL 6100
C:/PEBLDR/I386/SYSTEM32/MSWSOCK.DLL 6090
C:/PEBLDR/I386/SYSTEM32/WSHTCPIP.DLL 6080
C:/PEBLDR/I386/SYSTEM32/WINRNR.DLL 6070
C:/PEBLDR/I386/SYSTEM32/RASADHLP.DLL 6060
C:/PEBLDR/I386/SYSTEM32/UXTHEME.DLL 6050
C:/PEBLDR/I386/SYSTEM32/DHCPCSVC.DLL 6040
C:/PEBLDR/I386/SYSTEM32/LOGONUI.EXE 6030
C:/PEBLDR/I386/SYSTEM32/CCEVTMGR.EXE 6020
C:/PEBLDR/I386/SYSTEM32/SHELL32.DLL 6010
C:/PEBLDR/I386/SYSTEM32/SPOOLSV.EXE 6000
C:/PEBLDR/I386/SYSTEM32/XPEINIT.EXE 5020
C:/PEBLDR/I386/SYSTEM32/PENETCFG.EXE 5010
C:/PEBLDR/I386/SYSTEM32/BARTPE.EXE 5000
C:/PEBLDR/I386/INF/ 4000
C:/PEBLDR/I386/FONTS/ 3000
C:/PEBLDR/I386/SYSTEM32/ 2000
C:/PEBLDR/I386/ 1000
C:/PEBLDR/bin 900

Posted by: Triton Jun 23 2004, 04:57 AM
Anymore results?

Posted by: DigiWiz Jun 23 2004, 07:33 AM

First I want to say I think your project is a great idea, and appreciate the work you've put into it... but I am unable to duplicate your results.

I am usings Bart's patched version of mkisofs, and followed your instructions exactly. I created both a sorted and non-sorted version numerous times, but always had identical results.

Boot time for both is 87 seconds (62 seconds until the autoRAMsizer pops up - another 15 seconds until it's done for a total of 87s)... Finally, in desperation to find out why sorting did not sem to help, I did a file compare, and unfortunately, except for the time stamps in the first few sectors, the ISO builds were identical.

It would appear then, that perhaps mkisofs included with PE Builder does not support the sort function... any ideas or confirmations of this anomaly?

DW

Posted by: aec Jun 23 2004, 09:27 AM
@DigiWiz

QUOTE
I am usings Bart's patched version of mkisofs, and followed your instructions exactly. I created both a sorted and non-sorted version numerous times, but always had identical results.

I believe its only a problem of the correct combination of Upper/Lower case, together with slashes/backslashes. At the begining I had a lot of trouble with all these things and to check if the sort option was working I wasted several cds and finally resorted to hex file comparison.

I am using an unpached version of mkisofs on a directory tree where toplevel files and the "I386" folder/subfolders are uppercased. I checked that this procedure also works with the new win32 port of cdrtools that is not using cygwin1.dll and incorporates storage optimization (dfl is not needed any more) (link http://cdrtools.bootcd.ru/).

So far I have not tested it with Bart's patched version. I already have an idea of what may be wrong with Bart's patched version, but give me some time to check it first.

I think your CD is already loading very fast . I guess you are using Nu2Menu as shell and not doing much pnp detection while booting.

Posted by: bobby100 Jun 23 2004, 06:35 PM
@aec

Wud you give me the permission to include your sorting list with final version of The_GUI v2 ?

Posted by: aec Jun 23 2004, 07:41 PM
@bobby100

QUOTE
Wud you give me the permission to include your sorting list with final version of The_GUI v2 ?

Be my guest .

@DigiWiz
After some tests I have found how one can use the sort option with the patched mkisofs version.

Both mkisofs versions, patched and unpatched, are actually case sensitive as far as the sort option is concerned.
Bart's version, just stores filenames in uppercase (everything in the burned CD is uppercased).
However, sorting takes place before burning and therefore the filename case is important.

Practically this means that in the sorting list the filenames are written preserving their case
(propably mixed), turning backslashes to slashes.
E.g. the C:\pebldr\i386\system32 folder should be listed as C:/pebldr/i386/system32 and not as
C:/PEBLDR/I386/SYSTEM32

The rule is: Respect case and use slashes. So if you want to use Bart's version you have to modify appropriately the filenames in the sorting list so that they match the case used in your directory tree.
You may use @bobby100's program "The_GUI v2" to construct such lists.

Posted by: d4vr0s Jun 24 2004, 01:49 AM
Ok, after a little fight with the new mkisofs.exe and making the entire /I386 directory uppercase so it would boot again
I made 2 ISOs one with sorting and one without.
Testing with vmware, I found the one with sorting booted 20 to 25 seconds faster.

Posted by: Triton Jun 24 2004, 06:24 PM
Is there a link for The_GUI v2 and does this prog build lists?

Posted by: Ixel Jun 24 2004, 11:02 PM
QUOTE
I think your CD is already loading very fast . I guess you are using Nu2Menu as shell and not doing much pnp detection while booting.

I guess this is the case for me, too. This process only shaved off 2 seconds of the boot time for me (using bart's pathed mkisofs). Still, great investigative work aec. Thanks for sharing this info.

Ixel

Posted by: bobby100 Jun 25 2004, 01:33 AM
@Triton
Thread about The_GUI is here: http://www.911cd.net/forums/index.php?showtopic=7261

Posted by: aec Jun 25 2004, 06:55 AM
Here is a version of the sorting list that can be used with the patched mkisofs version included with pebuilder.
Actually the modifications affect only the filename case.
I created it while beta-testing @bobby100's "The_GUI_v2".

It is assumed that your pebuilder @OutDir directory is at C:\pebldr.
You should make below the obvious modifications to match your @OutDir.

The mkisofs command line (defined near the top of pebuilder.inf) should be modified from
CODE
exec="mkisofs.exe -iso-level 4 -volid ""BartPE"" -A PEBUILDER/MKISOFS -sysid ""Win32"" -b bootsect.bin -no-emul-boot -boot-load-size 4 -hide bootsect.bin -hide boot.catalog -o ""@IsoFile@"" ""@OutDir@"""

to
CODE
exec="mkisofs.exe -sort ""pe_sort.lst"" -iso-level 4 -volid ""BartPE"" -A PEBUILDER/MKISOFS -sysid ""Win32"" -b bootsect.bin -no-emul-boot -boot-load-size 4 -hide bootsect.bin -hide boot.catalog -o ""@IsoFile@"" ""C:/pebldr"""

Create a text file named "pe_sort.lst" and put it in the pebuilder folder, where also mkisofs.exe is.

The contents of the pe_sort.lst are
CODE

C:/pebldr/bootsect.bin 8000
C:/pebldr/i386/setupldr.bin 7990
C:/pebldr/i386/bootfix.bin 7980
C:/pebldr/bootfont.bin 7975
C:/pebldr/i386/ntdetect.com 7970
C:/pebldr/i386/txtsetup.sif 7960
C:/pebldr/i386/system32/winpeoem.sif 7950
C:/pebldr/i386/spcmdcon.sys 7940
C:/pebldr/i386/system32/biosinfo.inf 7930
C:/pebldr/i386/system32/ntkrnlmp.exe 7920
C:/pebldr/i386/system32/bootvid.dll 7910
C:/pebldr/i386/system32/kdcom.dll 7900
C:/pebldr/i386/system32/hal.dll 7890
C:/pebldr/i386/system32/config 7880
C:/pebldr/i386/system32/setupreg.hiv 7870
C:/pebldr/i386/system32/l_intl.nls 7860
C:/pebldr/i386/system32/*.nls 7850
C:/pebldr/i386/system32/*.fon 7840
C:/pebldr/i386/inf/INFCACHE.1 7830
C:/pebldr/i386/system32/drivers 7820
C:/pebldr/i386/system32/smss.exe 7810
C:/pebldr/i386/AppPatch/drvmain.sdb 7800
C:/pebldr/i386/system32/autochk.exe 7790
C:/pebldr/i386/system32/sfcfiles.dll 7780
C:/pebldr/i386/system32/advapi32.dll 7770
C:/pebldr/i386/system32/comdlg32.dll 7760
C:/pebldr/i386/system32/gdi32.dll 7750
C:/pebldr/i386/system32/imagehlp.dll 7740
C:/pebldr/i386/system32/kernel32.dll 7730
C:/pebldr/i386/system32/lz32.dll 7720
C:/pebldr/i386/system32/ole32.dll 7710
C:/pebldr/i386/system32/OLEAUT32.DLL 7700
C:/pebldr/i386/system32/olecli32.dll 7690
C:/pebldr/i386/system32/olecnv32.dll 7680
C:/pebldr/i386/system32/olesvr32.dll 7670
C:/pebldr/i386/system32/olethk32.dll 7660
C:/pebldr/i386/system32/rpcrt4.dll 7650
C:/pebldr/i386/system32/shell32.dll 7640
C:/pebldr/i386/system32/url.dll 7630
C:/pebldr/i386/system32/urlmon.dll 7620
C:/pebldr/i386/system32/user32.dll 7610
C:/pebldr/i386/system32/version.dll 7600
C:/pebldr/i386/system32/wininet.dll 7590
C:/pebldr/i386/system32/wldap32.dll 7580
C:/pebldr/i386/system32/shlwapi.dll 7570
C:/pebldr/i386/system32/comctl32.dll 7560
C:/pebldr/i386/system32/msvcrt.dll 7550
C:/pebldr/i386/system32/mpr.dll 7540
C:/pebldr/i386/system32/ntvdm.exe 7530
C:/pebldr/i386/system32/wow32.dll 7520
C:/pebldr/i386/system32/crypt32.dll 7510
C:/pebldr/i386/system32/apphelp.dll 7500
C:/pebldr/i386/system32/userenv.dll 7490
C:/pebldr/i386/system32/msasn1.dll 7480
C:/pebldr/i386/system32/win32k.sys 7470
C:/pebldr/i386/system32/watchdog.sys 7460
C:/pebldr/i386/system32/csrss.exe 7450
C:/pebldr/i386/system32/csrsrv.dll 7440
C:/pebldr/i386/system32/basesrv.dll 7430
C:/pebldr/i386/system32/winsrv.dll 7420
C:/pebldr/i386/system32/unicode.nls 7410
C:/pebldr/i386/system32/locale.nls 7400
C:/pebldr/i386/system32/FONT.DAT 7390
C:/pebldr/i386/system32/nv4_disp.dll 7380
C:/pebldr/i386/system32/vga.dll 7370
C:/pebldr/i386/system.ini 7360
C:/pebldr/i386/system32/winlogon.exe 7350
C:/pebldr/i386/system32/nddeapi.dll 7340
C:/pebldr/i386/system32/secur32.dll 7330
C:/pebldr/i386/system32/winsta.dll 7320
C:/pebldr/i386/system32/profmap.dll 7310
C:/pebldr/i386/system32/netapi32.dll 7300
C:/pebldr/i386/system32/regapi.dll 7290
C:/pebldr/i386/system32/ws2_32.dll 7280
C:/pebldr/i386/system32/ws2help.dll 7270
C:/pebldr/i386/system32/authz.dll 7260
C:/pebldr/i386/system32/psapi.dll 7250
C:/pebldr/i386/system32/setupapi.dll 7240
C:/pebldr/i386/system32/ctype.nls 7230
C:/pebldr/i386/system32/sortkey.nls 7220
C:/pebldr/i386/system32/KBDUS.DLL 7210
C:/pebldr/i386/Fonts/trebucbd.ttf 7200
C:/pebldr/i386/Fonts/tahomabd.ttf 7190
C:/pebldr/i386/Fonts/tahoma.ttf 7180
C:/pebldr/i386/Fonts/marlett.ttf 7170
C:/pebldr/i386/system32/KBD*.DLL 7160
C:/pebldr/i386/system32/kbd*.dll 7160
C:/pebldr/i386/system32/msgina.dll 7150
C:/pebldr/i386/system32/odbc32.dll 7140
C:/pebldr/i386/system32/sxs.dll 7130
C:/pebldr/i386/WinSxS 7120
C:/pebldr/i386/WindowsShell.Manifest 7110
C:/pebldr/i386/system32/odbcint.dll 7100
C:/pebldr/i386/system32/shsvcs.dll 7090
C:/pebldr/i386/system32/sfc.dll 7080
C:/pebldr/i386/system32/sfc_os.dll 7070
C:/pebldr/i386/system32/wintrust.dll 7060
C:/pebldr/i386/system32/services.exe 7050
C:/pebldr/i386/system32/lsass.exe 7040
C:/pebldr/i386/system32/scesrv.dll 7030
C:/pebldr/i386/system32/umpnpmgr.dll 7020
C:/pebldr/i386/system32/ncobjapi.dll 7010
C:/pebldr/i386/system32/lsasrv.dll 7000
C:/pebldr/i386/system32/samsrv.dll 6990
C:/pebldr/i386/system32/cryptdll.dll 6980
C:/pebldr/i386/system32/dnsapi.dll 6970
C:/pebldr/i386/system32/samlib.dll 6960
C:/pebldr/i386/system32/ntdsapi.dll 6950
C:/pebldr/i386/system32/schannel.dll 6940
C:/pebldr/i386/system32/WindowsLogon.Manifest 6930
C:/pebldr/i386/system32/imm32.dll 6920
C:/pebldr/i386/system32/msprivs.dll 6910
C:/pebldr/i386/system32/kerberos.dll 6900
C:/pebldr/i386/win.ini 6890
C:/pebldr/i386/system32/msv1_0.dll 6880
C:/pebldr/i386/system32/netlogon.dll 6870
C:/pebldr/i386/system32/w32time.dll 6860
C:/pebldr/i386/system32/msvcp60.dll 6850
C:/pebldr/i386/system32/iphlpapi.dll 6840
C:/pebldr/i386/system32/wdigest.dll 6830
C:/pebldr/i386/system32/rsaenh.dll 6820
C:/pebldr/i386/system32/winscard.dll 6810
C:/pebldr/i386/system32/wtsapi32.dll 6800
C:/pebldr/i386/system32/scecli.dll 6790
C:/pebldr/i386/Fonts/arial.ttf 6780
C:/pebldr/i386/system32/ntkrnlmp.exe 7920
C:/pebldr/i386/system32/ntkrnlpa.exe 6770
C:/pebldr/i386/system32/eventlog.dll 6760
C:/pebldr/i386/system32/netevent.dll 6750
C:/pebldr/i386/system32/svchost.exe 6740
C:/pebldr/i386/system32/rpcss.dll 6730
C:/pebldr/i386/system32/mswsock.dll 6720
C:/pebldr/i386/system32/wshtcpip.dll 6710
C:/pebldr/i386/system32/winrnr.dll 6700
C:/pebldr/i386/system32/rasadhlp.dll 6690
C:/pebldr/i386/system32/uxtheme.dll 6680
C:/pebldr/i386/system32/dhcpcsvc.dll 6670
C:/pebldr/i386/system32/logonui.exe 6660
C:/pebldr/i386/system32/ccevtmgr.exe 6650
C:/pebldr/i386/system32/shell32.dll 7640
C:/pebldr/i386/system32/spoolsv.exe 6630
C:/pebldr/i386/system32/XPEInit.exe 6620
C:/pebldr/i386/system32/penetcfg.exe 6610
C:/pebldr/i386/system32/bartpe.exe 6600
C:/pebldr/i386/inf 4000
C:/pebldr/i386/Fonts 3000
C:/pebldr/i386/system32 2000
C:/pebldr/i386 1000
C:/pebldr/bin 900

I would like to remark that if you are using the patched version of mkisofs, it is very important to respect the filename cases. So if you rename your i386 folder to I386, then this list above will not work. You will have to make the appropriate modification in the list. This also means that you have to check yourself all the filename cases listed in the above list.

My advise, is to use the new unpached version of mkisofs, uppercase the full i386 tree and a few top level files, and the previous version of sorting list which mainly contains uppercased entries.

Posted by: daederatz Jun 30 2004, 02:05 PM
Hi there,

I followed this topic with great interest, but i have to wonder why none of
the posters have mentioned the obvious:

use cdimage instead of mkisofs for ISO creation.

cdimage.exe (v 2.47) is a tool made by MS for internal use that can be found
on the net, just google for it. Legally it may be marginal to use it, OTAH it's not sold, so there's no financial loss for anybody.

One of the programm options is
-y5
which means "write \i386 directory files first, in reverse sort order"

There are many more options, most notably the one to reduce the iso size by
removing duplicate files.

My complete build command is:
CODE
cdimage.exe -l<ISOName> -b<path to bootloader file> -e -yt7C0 -yd -y5 -c -h -oci -n -m <path to build directory> <path to iso file>

This works really great, resulting in visible faster boot time then with mkisofs (can't measure exactly now, being at work).

One thing though, out of precaution I use "filecase.exe" to make certain files on the CD uppercase. There should be other topics on this, here is just the code for my layout:

CODE
ECHO Upper/Lower case routine...
filecase.exe /u /h /q /d <PEBUILDERDIR>\i386
filecase.exe /u /h /q /d /s <PEBUILDERDIR>\i386\system32
filecase.exe /u /h /q /d /s <PEBUILDERDIR>\i386\system32\drivers
filecase.exe /l /h /q <PEBUILDERDIR>\i386\system32\autorun*.*"
ren "<PEBUILDERDIR>\i386\system32" SYSTEM32
ren "<PEBUILDERDIR>\i386\system32\drivers" DRIVERS

I remember that my CD worked even without the uppercase thing, but I read elsewhere that there could be problems with certain programs, so it's really just to be safe...

Note that inside my code snippets you must replace everything between < and > with your own variables / hardcoded paths respectively.

You may have to fiddle a bit to get it all right, but thats what we are here for, isn't ist?

Posted by: bobby100 Jun 30 2004, 03:28 PM
@daederatz
Mkisofs also can remove duplicated files

Posted by: daederatz Jun 30 2004, 05:45 PM
@bobby100

IIRC this needs another external program (dfl.exe?)
I tried this once and at first it seemend to work, but then I received weird errors on further runs. Could be because my CD consists of more than Bart's PE. I actually build a compilation with the best stuff from several BootCD's (Hiren, UBCD, some Antivirus apps and a lot more little proggies).
This other stuff changes less frequently then the PE part, so I usually run PEBuilder, then copy it's files & dirs over to the root of my BootCD and then build the ISO.
If I do so and run "dfl.exe", effectively for the 2nd time on the same directory tree, with only the PE dirs/files changed, it doesn't work any more (complains of "broken directory structure" or something).

So I really have given up on this method and switched to cdimage. Works great so far.

Or is there is another, build-in mechanism for this task in mkisofs?

---
Tim

Posted by: aec Jun 30 2004, 06:59 PM
@daederatz

There is a very new win32 port of mkisofs with internal storage optimization (same files stored once). dfl is not needed any more (link http://cdrtools.bootcd.ru/).

The other advantage of mkisofs sort option is that you can instruct the program to put this file first, the other next and so on.

I will try the cdimage -y5 option, which however only affects storing \I386 files in a predefined way. In other words, you dont have fine control on sorting.

Thanks for the cdimage info.

regards

Posted by: philon Jun 30 2004, 10:50 PM
@aec
Thanks for your effort to decrease booting time!

Gave it a test, here are my results:
CD-R/DVD drive:
unsorted 167 sec
sorted 155 sec
difference -12 sec

Also tested CD-RW drive:
unsorted 152 sec
sorted 139 sec
difference -13 sec

Never used the CD-RW drive as boot drive before and I'm happy to see a 25 sec difference now between CD-R unsorted and CD-RW sorted. I use a mini CDs filled up to the limit. For comparison purpose burned the same sorted content also on a maxi CD to see how much the outer circles are faster, but gained only 4 sec.
My CD is a multiboot CD (EasyBoot) so I had to modify the (patched) mkisofs accordingly (ezboot folder beeing in root):

CODE
mkisofs.exe -sort "pe_sort.lst" -iso-level 4 -volid "BartPE" -A PEBUILDER/MKISOFS -sysid "Win32" -b "ezboot/loader.bin" -no-emul-boot -boot-load-size 4 -hide loader.bin -hide boot.catalog -o "pebuilder.iso" "C:/pebldr"

In the sortlist I changed the first lines:
CODE
C:/pebldr/ezboot/loader.bin 8000
C:/pebldr/bootsect.bin 7995
.
.

philon

Posted by: daederatz Jul 1 2004, 08:26 AM
@aec

thanks for the info on the new mkisofs version, sounds very interesting and I'll run a few tests over the weekend. My actual BootCD really depends on storage optimization (would be 20% larger without it and > 800MB, according to cdimage).
I'll post my findings & boot-up times...

---
Tim

Posted by: paraglider Jul 1 2004, 02:06 PM
I use dfl and the -follow-links -cache-inodes options to mkisofs. It produces iso files about the same size as cdimage.

I would not use special versions of mkisofs as you will get left behind by the frequent updates to the cdrecord+ mkisofs package.

Posted by: daederatz Jul 1 2004, 04:06 PM
@paraglider

and you don't have any problems with dfl.exe? Any hints what I may have done wrong to receive the "broken directory structure" error on the 2nd run of dfl.exe (as described in my earlier post above)?

I also used -follow-links -cache-inodes with mkisofs.

Am I right to assume that it doesn't like to run more than once on the same directory tree and if so, do you know a solution?

I'll surely test the various methods during the weekend. If aec's sorting method with mkisofs really speeds things up for me, then it might be worth to fix the trouble with dfl.exe. Otherwise I'll probably stick with cdimage, seems a bit more straightforward to me...

Thanks for your help (and, BTW, for your great PE tools )

Posted by: paraglider Jul 1 2004, 05:25 PM
I haven't tried running it twice or moving the the files after creating the directories. For multiboot with ezboot I create ezboot as a plugin to pebuilder. That seems to work fine.

Posted by: daederatz Jul 1 2004, 06:23 PM
Ahhh... yes .

I must admit that the whole concept of creating a plugin of a Multiboot Programm for PE eludes me completely. Shouldn't this be the other way round, i.e. making PE work with the Multiboot Program?

I use BootCDWizard to multiboot and stumbled over a plugin for PE - didn't understand this either . I just use the standard BCDW (bcdw150z_en.zip) to boot all my apps, DOS, PE, WIN or Linux, from my CD.

Time to learn a few new tricks, maybe...

---
TIm

Posted by: Rickj Jul 1 2004, 10:42 PM
I have been making these multiboot CD's for a while as well. Using Bart's patched mkisofs+dfl and mkisofs(mingw32) seem to work about the same to me. M$ cdimage also works well, but creates a cd image about 1-2 MB larger.

Each program seems to have some minor downfalls.

mkisofs+dfl modifies the base directory structure and makes it difficult to add to your build directory.
mkisofs(mingw32) may not be updated as frequently but allows you to add to your build directory and use a sort list.
cdimage is very stable and dependable but doesn't allow for a sort list.

I'm testing different sorting methods and will post my results when I'm done.

Keep up the good work.

Thanks to All!

Posted by: daederatz Jul 2 2004, 02:47 PM
Here are my findings, comparing the various methods from this thread.

Setup:

- Iso's where written with NERO 5.5 (DAO/96)
- BootCD consists of PE & other stuff, multiboot with BCDW
- all files are uppercase
- time measured:
from hitting "Enter" on the PE entry in BCDW's boot selection screen
to the point when the Network Dialog of PE pops up
- PE Shell is nu2menu & Geoshell 2.0a, no plug&play detection
- ISO apps: mkisofs.exe (Win32/Mingw32) v2.01a32-3-w32 / cdimage v2.47
- storage optimization was always used with both apps

Result:

mkisofs without file-sorting 141 sec
mkisofs with file-sorting 136 sec
cdimage 145 sec

So, we have a winner

Seems that mkisofs does a better Job than cdimage and file sorting makes a
small difference too. Wasn't expecting this, I think I'll switch back to mkisofs...

The only thing left to try would be the "standard" version of mkisofs in
conjunction with "dfl.exe", maybe I'll do this later.

---
Tim

Posted by: nitro001 Jul 2 2004, 06:46 PM
I also am trying to optimize my CD, however, I started using the mkisofs that comes with PEBuilder.

I then tried the newer mkisofs from the web site, but when I build using that one, I get the message: CDBOOT: Couldn't find NTLDR. I have tried with/without sort, etc, although the new version on the site no longer supports the -follow-links -cache-inodes parameters, but now has a -duplicates-once switch. I have tried with and without this switch with no luck. Although it does create an ISO MUCH smaller than without it, almost 20MB.

The version that comes with bart, builds the disk fine if it is SP1, but with no compression. I do see references on this page about dfl.exe, where do I get that from? and is there a good description of what it does and how to use it with PEBuilder somewhere?

Also has anyone seen where you boot a PE disk on a pc with only 64MB ram, it will not create the Ram Drive?

Thanks,
Nathan

Posted by: paraglider Jul 2 2004, 10:34 PM
Just search on these forums for dfl. Make sure to search all dates not just the last 30 days. You also need to convert the i386 subtree to uppercase along with a few other files. Again its all been described in these forums.

Posted by: daederatz Jul 3 2004, 12:15 PM
Last update:

I'm afraid "dfl.exe" just doesn't work on my current cd-layout.
I suspect there are actually too many similar files, I keep getting "Can't create symbolic link: ..." & "Errors found, tree corrupted..." errors.

I set all the files up cleanly, i.e. removed all symbolic links that might
have been there from earlier runs, but still no luck.

So for the moment I'll use the http://cdrtools.bootcd.ru/ together with
aec's sort-list. I need the storage optimization of this special mkisofs version and sorting speeds the thing up a little bit.

Thanks to all, keep up the good work!

---
Tim

Posted by: aec Jul 3 2004, 01:48 PM
@daederatz

Thanks for your feedback.
QUOTE
Result:
mkisofs without file-sorting 141 sec
mkisofs with file-sorting 136 sec
cdimage 145 sec

Just a question. What was the type and the speed of the CD that you performed this test?
Have you tested your set of cd compilations in another machine with a slower or faster CD reader?

regards

Posted by: daederatz Jul 4 2004, 01:26 AM
@aec

The CD-Burner was a Lite-on 16x-speed, the reader (from which the CD's booted) was an LG drive 32x-speed.

Unfortunately I have already dumped the CD's, so no further tests on other machines are possible .

---
Tim

Posted by: samplempg Jul 4 2004, 04:18 AM
hello aec i have a silly question...how do you use regmon trace boot files and time into pe_sort.txt while machine is booting ? could you share the secret with us ?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)


The CD Forum [Powered by Invision Power Board]

Printable Version of Topic
Click here to view this topic in its original format
The CD Forum > Bootable CDs > The_gui 2 Beta

Posted by: bobby100 Jun 22 2004, 04:08 AM
Beta testers needed. PM for the link.
Beta tester agreement: you can be beta tester if you promise to report bugs and other results in period of one week.

Posted by: bobby100 Jun 23 2004, 12:06 PM
As I see, with the exception of midas, nobody is interested in beta testing. Yes, I know that the topic is posted just a couple of days ago, but I have now free time to develop this, after tomorrow I must concentrate on my exams.
According to the facts posted above, I make this beta version available for the public, and I hope that maybe this will work better then PM-ing for the link.

http://members.chello.at/bobby100/beta/

http://stud3.tuwien.ac.at/~e0227529/beta/ - mirror, use it in case that first link doesn't work

Best regards
Boban Spasic aka bobby100

Posted by: Stugpanzer Jun 23 2004, 10:25 PM
I'll test this. I presume that this is a front-end GUI for PE (like Geoshell, etc.)

Posted by: Rootman Jun 23 2004, 11:18 PM
QUOTE (Stugpanzer @ Jun 23 2004, 03:25 PM)
I'll test this. I presume that this is a front-end GUI for PE (like Geoshell, etc.)

@bobby100
Not to sound like a smart a$$ but if you perhaps explained what The_GUI IS you would have more takers and it would avoid questions like the one quoted above.

I DL'd it and tried it. It seems to work fine. I used the advanced tools to UPPERCASE a group of files to try and use the sort list feature of mkiso. The tool worked fine, the sort didn't net me any time savings as far as boot time.

Posted by: bobby100 Jun 24 2004, 01:06 AM
@Rootman
Sorry, my mistake...
QUOTE
...the sort didn't net me any time savings as far as boot time.

Sorry, didn't understand that, my lack of English knowledge...

@All
Short description of The_GUI:
This is a front-end for command-line tools like DFL, mkisofs, cdrecord... with addition of some stuff like Layout Sorting, Changing file/folder case (uppercase/lowercase) and attributes (needed in many cases).

To have better picture, take a look at following threads:
- http://www.911cd.net/forums/index.php?showtopic=5269
- http://www.911cd.net/forums/index.php?showtopic=6869
- http://www.911cd.net/forums/index.php?showtopic=4382
- http://www.911cd.net/forums/index.php?showtopic=6753

I apollogize once more.
Perhaps because I'm dealing with this program every day, I'v forgot that there is a lot of people that are not introduced with it.

Best regards
Boban Spasic aka bobby100

Posted by: bobby100 Jun 24 2004, 03:31 AM
I apologize to all, please wait for next beta.
AEC found a couple of bugs, two of them are serious.

Part of my transcription with AEC:

QUOTE
I have tested the iso creation and the layout sorter for both cygwin1 and mingw32 version.
The following are the first things that I noticed:

In the MakeISO dialog > Folders group:
--------------------------------------
1. If you select as output folder "c:\tmp" and as output filename "test.iso" then this results to an output filename
"c:\tmptest.iso". It misses the backslash. The same happens with Batch Folder and batch filename.
(should have a backslash as last char for the output folder and the batch folder).

2. The Root of CD: This is important!!! for the sort option. I checked that it only works if slashes are used
in the place of backslashes. E.g. a folder "C:\peblr" should be written in the command line as "C:/pebldr".
The corresponding entries in the sorting list should then look like "C:/pebldr/some_name some_weight".

So, at the time where the program uses the dialog info to construct the command line
it should make the appropriate adjustments.

MakeISO dialog > sort option:
---------------
Its is not clear how the user can use a sorting list.
I have used the "Other Parameters" field to add the appropriate option:
-sort 'sort_list_filename'
I think however that you should add a dedicated sortlist_selection field for this purpose.

The Layout Sorter
-----------------
It is now quite user friendly.
One thing that you could correct when you have some free time is to not allow the user to enter the same
selection twice (with the same or different weight). This however is ignored by the program.

QUOTE
QUOTE
In the MakeISO dialog > Folders group:
--------------------------------------
1. If you select as output folder "c:\tmp" and as output filename "test.iso" then this results to an output filename
"c:\tmptest.iso". It misses the backslash. The same happens with Batch Folder and batch filename.
(should have a backslash as last char for the output folder and the batch folder).

- this will be done in no time, I missed this because I have used root folder of a partition for testing so I didn't noticed this.

QUOTE
2. The Root of CD: This is important!!! for the sort option. I checked that it only works if slashes are used
in the place of backslashes. E.g. a folder "C:\peblr" should be written in the command line as "C:/pebldr".
The corresponding entries in the sorting list should then look like "C:/pebldr/some_name some_weight".

- do the mingw32 version also use slashes? I mean, should I make this modifications to both cygwin and mingw32 versions ? I also didn't tested sort_list with mingw32 version, what needs to be used here in lists - slashes or backslashes?

QUOTE
MakeISO dialog > sort option:
---------------
Its is not clear how the user can use a sorting list.
I have used the "Other Parameters" field to add the appropriate option:
-sort 'sort_list_filename'
I think however that you should add a dedicated sortlist_selection field for this purpose.

- sorry, I have simply forgot to add it, will be done tomorrow morning I think

QUOTE
The Layout Sorter
-----------------
It is now quite user friendly.
One thing that you could correct when you have some free time is to not allow the user to enter the same
selection twice (with the same or different weight). This however is ignored by the program.

- there is a option for that component I have used for that list, to have unique entries, but it is handled by throwing program exception, so I need to code exception handler for this (a bit complicated for me, takes a lot of time to do it in proper way). If this isn't so important, I would let that for latter.

Posted by: aec Jun 24 2004, 09:54 AM
@bobby100

QUOTE
- do the mingw32 version also use slashes? I mean, should I make this modifications to both cygwin and mingw32 versions ? I also didn't tested sort_list with mingw32 version, what needs to be used here in lists - slashes or backslashes?

Both versions work with slashes.

Posted by: bobby100 Jun 24 2004, 12:26 PM
Mingw32 version updated to beta2. Same links as in first post.

Question @all:
It isn't easy to work on couple of version (forks) because the source code of smallest version (mingw32) is more than 100kb, not to mention combo version. From this reason I'll be glad to know which one is your favorite in order to concentrate on developing just one of them:
- Cygwin version: huge, DFL as separate module, distribution archive is 1mb
- Mingw32 version: small, DFL is integrated in mkisofs and works faster, distro is about 650kb
- combo version: contains mingw32 version with addition of separate DFL module from Cygwin version and modified MakeISO module to work with both Cygwin and Mingw32 versions of mkisofs.exe. Distro is about 1.2mb.

My favorite is Mingw32 version.

Maybe I should make separate thread with pool for this question?

Posted by: xzanman02 Jun 25 2004, 07:45 AM
Bobby100

Very nice.

I am using the ming32 version beta2. It created an iso from files just fine. However, I am getting an error when trying to create an iso from a cd. I give the file a name and hit save. The error shows up on the captured console.

readcd: Target 'Documents\isos\test.ISO' is not a Number.

Under this heading there was a list of all the options. I tried a couple of the options added with the name to save as but still keeps quiting over the 'is not a number.'

running windows 98se. What number does it want? I checked the help file and it stated that this section was pretty self explanatory. I am a bit lost as to what it wants me to put in.

Suggestions and comments would be greatly appreciated.

Any version is fine with me. But, if the ming version is easier to work with and faster, it makes sense to stick with that one. After you get it to where you want it, you could always add the other versions later.

This is a very handy tool. Thanks for creating it.

Posted by: bobby100 Jun 25 2004, 09:37 AM
@xzanman02
I'm sorry to say, but this program wasn't intended for win9x, but maybe we can do something...
Open MS-DOS prompt and navigate to folder where The_GUI is located.
Type 'cdrecord -scanbus' (without quotas) and see if your result looks like this:

E:\projekti\The_GUI mingw32>cdrecord -scanbus
Cdrecord-Clone 2.01a32-bootcd.ru (i686-pc-mingw32) Copyright © 1995-2004 J÷rg
Schilling
NOTE: this version of cdrecord is an inofficial (modified) release of cdrecord
and thus may have bugs that are not present in the original version.
Please send bug reports and support requests to <cdrtools@bootcd.ru>.
The original author should not be bothered with problems of this version.

Using libscg version 'schily-0.8'.
scsibus0:
0,0,0 0) 'MAXTOR 6' 'L040J2 ' 'A93.' Disk
0,1,0 1) *
0,2,0 2) *
0,3,0 3) *
0,4,0 4) *
0,5,0 5) *
0,6,0 6) *
0,7,0 7) HOST ADAPTOR
scsibus1:
1,0,0 100) 'TEAC ' 'CD-W54E ' '1.1Y' Removable CD-ROM
1,1,0 101) 'SONY ' 'DVD-ROM DDU1611 ' 'GYS1' Removable CD-ROM
1,2,0 102) *
1,3,0 103) *
1,4,0 104) *
1,5,0 105) *
1,6,0 106) *
1,7,0 107) HOST ADAPTOR

Now, locate the SCSI_ID for your CD-ROM, DVD-ROM, burners... ( 1,0,0 and 1,1,0 in my case) and after that try: readcd dev=SCSI_ID f='C:Documents\isos\test.ISO'
If that gives you the same result like in The_GUI, then it's a matter of 'readcd' program (part of cdrtools from Joerg Schilling).
You say that Make ISO did make a ISO for you in Win98, because that is almost imposible in Win98. This program makes CMD batch files, not BAT batch files. If I'm not wrong, CMD batch files are specific for WinNT line of OS-es. Please, can you confirm once more that ISO creating was successful.
If 'CD to ISO' don't work in Win98, I'll include one more option in next beta for that (using ported dd command from linux).
One more thing, if CD to ISO doesn't work, then I beleive that Burn CD also don't work. Try Burn CD with Simulate option checked ( you must have blank CD in your cd-recorder).

Posted by: cdob Jun 25 2004, 12:42 PM
@bobby100
First, best of luck to your exams.

I used your gui with Alex's mingw32 version.

I selected a batch directory "d:\temp" and got a error message, I had to add "\", that's "d:\temp\". Iso Image directory is the same.

One feature request, please include used command to the output window.
e.g. "mkisofs -iso-level 4 -duplicates-once -o d:/cd.iso d:/cd". If I get a mkisofs error message, I need to see used command.

BTW: My CD-W54E writes still, too.

Posted by: bobby100 Jun 25 2004, 04:37 PM
@cdob
Thanks, I'v passed my Technical English exam today. Guess what, my esay was about Bootable CDs . Still have two more exams, Technical Informatics tomorrow and Theoretical Informatics next Friday.

About bugs you'v reported: seems that you use beta1, because it's a reported bug from beta1 (hopeful resolved in beta2).

About feature request: on ToDo list (until then, you can see the command options in batch file generated by MakeISO, the name of the file is BUILD.CMD located in folder that you have specified in Batch Folder edit box)

Question: do we need log files in The_GUI for mkisofs, cdrecord and readcd output? This could perhaps help in reporting bugs?

Posted by: midas Jun 25 2004, 07:26 PM
yes a log output would be helpful, perhaps add an option to create one (output log is created when wanted)

Posted by: xzanman02 Jun 25 2004, 07:51 PM
Bobby100

Best of luck on your exams. I didn't realize you were studying. This can wait till a later date. School comes first with me.

Yes you are right, it did make a .cmd file. I forgot to mention that I renamed the file to .bat and double clicked. It created the iso. I did not burn the iso so I can't verify that it worked 100%. I can if you need me to, just let me know.

cdrecord -scanbus worked. I got the same printout that you did with the exception of different hardware and one less host. scsibus0 only. No scsibus1.

the readcd command line worked. It copied the disk and put the test.iso in the folder.

Thank you for your help. If you need me to do anything else, just let me know.

Good luck with the rest of your exams.

Posted by: bobby100 Jun 25 2004, 10:48 PM
Beta3 here:
http://members.chello.at/bobby100/beta/

- added loging for couple of operations that seems to have bugs
- resolved a bug in Burning CDs if ISO's folder/file name contains spaces (I'm always forgeting to put those paths under quotas )

Posted by: xzanman02 Jun 26 2004, 12:06 AM
Bobby100

I just downloaded beta3 and noticed that you want to collect log files. Are you looking for something in particular or just in a general way? Should I post them here or do something else with them?

I will check back later.

If you want me to do certain tasks with beta3, just let me know. I can send the log files or post them or whatever.

Thank You

Posted by: bobby100 Jun 26 2004, 01:00 AM
Enable loging and try again CD to ISO, then post the log here. I'm realy interested what goes wrong there. It works fine in all the tests I did. Please post whole log, I think that my function that takes the results from 'cdrecord -scanbus' doesn't works fine in your case.
Try to use folder with and without spaces in its name, also try that for output file name. If something of that works for you, please let me know.

thanks in advance
Boban Spasic aka bobby100

Posted by: bobby100 Jun 30 2004, 10:29 AM
Beta4 is uploaded.

@xzanman02
use beta4 for debuging, it makes much smaller log files. If this version also don't works for you, please take a look at following: In CD operations module, are there the SCSI IDs ok in combo box where you select reading and recording device? Also, is SCSI ID ok on the label under that combo box after you select device? SCSI ID must have 3 numbers (e.g 1,1,0). If that isn't the case, let me know. In module Other you can find alternative way for making ISO images, this one must works, but I think it is slower method (at least for me).
P.S. forgot to ask: do you have ASPI drivers installed?

@all
I'm going in vacation for two weeks, I'll check the forum periodicaly, but I can't make any modifications to my program until I come back.

Regards
Boban Spasic aka bobby100

Posted by: aec Jun 30 2004, 05:23 PM
Hi Boban

I am on vacation for two weeks. I didn't have the opportunity to test your new versions but I intend to do so as soon as I'm back.

In the meanwhile, a propably cosmetic remark.
I noticed that you do not leave any margins in your window, propably because you want to take advantage of the full window area. However, when I tried to run your program on a machine with windowblinds there were several marginal controls covered by the window frame that windowblinds added. I think that you should add a margin of at least 10 pixels. Everything would then look better.

Regards

Posted by: xzanman02 Jul 1 2004, 04:29 PM
Bobby100

Hope that you are having a good time while on vaction.

Creating an iso from cd works.

Read speed: 9173 kB/s (CD 52x, DVD 6x).
Write speed: 0 kB/s (CD 0x, DVD 0x).
Capacity: 42736 Blocks = 85472 kBytes = 83 MBytes = 87 prMB
Sectorsize: 2048 Bytes
Copy from SCSI (0,0,0) disk to file 'C:\My Documents\isos\test.iso'
Time total: 35.420sec
Read 85472.00 kB at 2413.1 kB/sec.

I skipped the individual sector reads to keep it shorter. It worked fine. Thank you.

With win98 bbie does not allow you to extract a boot image from the cd, you first must make an iso of the cd to the hard drive. This is not your fault. Bbie needs nt4 or greater to do this. No big deal since I can create an iso of the cd.

I can create an iso file with no problems. But if I try to create a bootable iso file, I get this

this file is generated by The_GUI
C:\Temp>"C:\TEMP2\THEGUI\mkisofs.exe" -J -l -r -iso-level 1 -o "C:/Temp/test.iso" -b "C:/Temp/Bootimg.img" -no-emul-boot "C:/xblst/"
C:\TEMP2\THEGUI\MKISOFS.EXE: Uh oh, I cant find the boot image 'C:/Temp/Bootimg.img' !
Press any key to continue . . .

Ok got that one solved. I was going to delete this before I sent it but it may help someone else. The problem was Bootimg.img. As you notice the B is capitalized. Win98 has troubles with what letters are capitalized and what letters are lower case. I renamed Bootimg.img to bootimg.img. It only looks like one letter change but I did them all in lower case and it worked.

It looks like everything works with win98. I have not found any part of you program that had troubles.

Thank You very much. It is a very nice program that works well.

Have a good vacation, you deserve it.

If you want the full logs, I can post them for any parts that you want. I can do that once you get back. Now is the time to relax.

Have fun

Posted by: Rickj Jul 4 2004, 12:44 AM
@xzanman02

The upper/lower case problem you are noting isn't a Win98 problem. It's a *nix problem. mkisofs/cdrecord was originally written for Unix/Linux which is VERY case sensitive. This is why Bart has to include cygwin1.dll with PEBuilder. Cygwin1.dll is incorporated in the mingw32 version of mkisofs.

Everybody should keep this in mind when building sort lists as well. The sort list is case sensitive and needs forward slashes "/", not backslashes "\", just like Unix/Linux.

Hope this helps.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)


The CD Forum [Powered by Invision Power Board]

Printable Version of Topic
Click here to view this topic in its original format
The CD Forum > General > Uppercase: Patched 'mkisofs' Unneccessary!

Posted by: xlerb Jan 21 2004, 07:08 AM
Hi all, dear Bart,

while working on a cygwin plugin, which requires mixed case file names, I discovered:
  • Bart is right: XP etc. seem to need UPPERCASE file names to boot from an ISO 9660:1999 CD, else a message 'NTLDR not found' appears and the CD boot is aborted.
  • It is NOT neccessary to patch 'mkisofs', just trust Mr. Joerg Schilling (the author and maintainer of mkisofs/cdrtools, seemingly good informed about standards). When 'mkisofs' does allow mixed case file names with -iso-level 4 aka ISO 9660:1999 then it IS allowed.
  • The problem is with Windows (as usual) consuming such a CD and the guys over there not understanding or ignoring standards and implementing buggy software.
  • To solve the conflict between knowledge and ignorance PEBuilder could jump in by just UPPERcasing any file name in the I386 branch, while copying to @OutDir@, leaving alone all other branches/directories and finally using an unpatched copy of 'mkisofs' (with slightly modified params, see below).

What I've done:
  1. got the cdrtools Version 2.01a25 from ftp://ftp.berlios.de/pub/cdrecord/alpha/
  2. unpacked and compiled as of the instructions (cygwin developer install required)
  3. replaced the patched 'mkisofs' by the fresh compiled one
  4. invoked PEBuilder, but unchecked 'Create ISO Image'
  5. manually changed the 'I386' directory in @OutDir@ (C:\pebldr) recursively to UPPERCASE. Also all files in the root.
  6. left alone all other dirs!
  7. made the ISO file (see below for the commandline)
  8. burned with Nero V5.5
And ... the CD boots! Case is preserved on all dirs! Cygwin works basically (making it working fully is another issue and my part of the story).

The commandline for 'mkisofs' I used is (must be given on one line, split up here for clarity):

CODE
mkisofs.exe
-iso-level 4
-f
-volid "BartPE"
-A PEBUILDER/MKISOFS
-sysid "Win32"
-b BOOTSECT.BIN
-no-emul-boot
-boot-load-size 4
-hide BOOTSECT.BIN
-hide boot.catalog
-o "D:/PEBuilder/pebuilder.iso"
"C:/pebldr"

The changes to the commandline as of Bart and specified in 'pebuilder.inf' are:
  • added -f (follow symbolic links aka store shortcuts on CD) [neccessary for cygwin]
  • changed case in -b from 'bootsect.bin' to uppercase
  • changed case in one -hide from 'bootsect.bin' to uppercase

@all: would you give this a try and test, if it works on your config too?
I can deliver the precompiled, unpatched W32 'mkisofs' (if you trust me, else compile it
yourself).

@Bart: do you consider enhancing PEBuilder to follow this approach? Would require
some lines of code to uppercase files/dirs in 'I386'.

best regards

Georg

Posted by: cdob Jan 21 2004, 02:45 PM
QUOTE (xlerb @ Jan 21 2004, 05:08 AM)
just UPPERcasing any file name in the I386 branch

That's wonderful news, that's a legal solution.

Do you use a uppercase shellscript and release it?

BTW: You don’t have to use Nero, you compiled a commandline burning programm. You don’t have to create a ISO image, just pipe mkisofs output to cdrecord. I'm compiling cdrtools regulary.

Maybe you can use -graft-points. PEBuilder don't have to copy all files, mkisofs read from different folder.
"mkisofs.exe -iso-level 4 -f ... -graft-points ""@OutDir@"" /cygwin/=c:/cygwin"

Posted by: paraglider Jan 21 2004, 03:25 PM
I would be surprised if its the whole of I386 that needs to be in uppercase. Maybe only the I386 directory name and SETUPLDR.BIN, TEXTSETUP.SIF and SETUPREG.HIV ? I will have to experiment.

Posted by: xlerb Jan 21 2004, 05:28 PM
QUOTE (cdob @ Jan 21 2004, 12:45 PM)
Do you use a uppercase shellscript and release it?

Dear cdob,

I used this perl script

CODE
#!/usr/bin/perl -w
#
# ucase.pl
# recursively UPPER case a path, usage:
# ucase.pl <file|dir> [ <file|dir> ... ]

use File::Find;

@ARGV or die "$0: you must give a path to convert to uppercase!\n";

finddepth(\&to_upper, @ARGV);

exit 0;

sub to_upper {
my $lowercase = $_;
$lowercase eq '.' and return;
my $uppercase = uc $lowercase;
# print $File::Find::dir . ": mv $lowercase $uppercase\n";
rename($lowercase, $uppercase) or die "Could not rename '$lowercase' to '$uppercase': $!\n";
}

Copy it into C:\pebldr and use it like:

cd C:\pebldr
perl ucase.pl i386 bootsect.bin bootfont.bin ...

It will recursively upper case all files and dirs EXCEPT the top level one (i386).
Rename the top level one manually.

I think, ALL files in I386 must be uppercase, because in my normal XP installation the whole I386 branch is also uppercase.

QUOTE (cdob @ Jan 21 2004, 12:45 PM)
BTW: You don’t have to use Nero, you compiled a commandline burning programm. You don’t have to create a ISO image, just pipe mkisofs output to cdrecord. I'm compiling cdrtools regulary.

Maybe you can use -graft-points. PEBuilder don't have to copy all files, mkisofs read from different folder.
"mkisofs.exe -iso-level 4 -f ... -graft-points ""@OutDir@"" /cygwin/=c:/cygwin"

I'll give that a try, thanks.

Posted by: cdob Jan 22 2004, 10:36 AM
QUOTE (xlerb @ Jan 21 2004, 03:28 PM)
I used this perl script

Thanks.

In the meanwhile I used -graft-points, it's case sensitive.

I'm building a Corporate Modboot including BartPE CD.

pebuilder.inf:
;exec="..\burn\mkBartPE.cmd"
exec="..\burn\mkBartPEISO.cmd"

CODE

@echo off
REM mkBartPEISO.cmd: create ISO image, don't burn CD
setlocal
cd /d %~dp0\..\..

set Option=-iso-level 4 -output-charset cp850 -volid "Service" ^
-A PEBUILDER/MKISOFS -sysid "Win32" -b isolinux/isolinux.bin ^
-no-emul-boot -boot-load-size 4 -boot-info-table -hide isolinux.bin ^
-hide boot.catalog -graft-points ^
-path-list pebuilder/burn/bartpe.lst ^
cds/corpmb/files ^
pebuilder/add ^
/source/pebuilder3026/=pebuilder/pebuilder3026 ^
/source/burn/=pebuilder/burn

mkisofs -o bartpe.iso %Option%

bartpe.lst
CODE

/win51=D:/Bcd/cds/pebldr/files/win51
/win51ip=D:/Bcd/cds/pebldr/files/win51ip
/win51ip.SP1=D:/Bcd/cds/pebldr/files/win51ip.SP1
/winbom.ini=D:/Bcd/cds/pebldr/files/winbom.ini
/I386/BIOSINFO.INF=D:/BCD/CDS/PEBLDR/FILES/I386/BIOSINFO.INF
/I386/EXPLORER.EXE=D:/BCD/CDS/PEBLDR/FILES/I386/EXPLORER.EXE
/I386/IEXPLORE.EXE=D:/BCD/CDS/PEBLDR/FILES/I386/IEXPLORE.EXE
/I386/NTDETECT.COM=D:/BCD/CDS/PEBLDR/FILES/I386/NTDETECT.COM
/I386/REGEDIT.EXE=D:/BCD/CDS/PEBLDR/FILES/I386/REGEDIT.EXE
/I386/SETUPLDR.BIN=D:/BCD/CDS/PEBLDR/FILES/I386/SETUPLDR.BIN
...
1500 lines uppercase

ISOBuster shows a good image. I burned and the CD boots.

Next Step:
CODE

/win51=d:/bcd/cds/pebldr/files/win51
/win51ip=d:/bcd/cds/pebldr/files/win51ip
/win51ip.sp1=d:/bcd/cds/pebldr/files/win51ip.sp1
/winbom.ini=d:/bcd/cds/pebldr/files/winbom.ini
/I386/biosinfo.inf=d:/bcd/cds/pebldr/files/i386/biosinfo.inf
/I386/NTDETECT.COM=d:/bcd/cds/pebldr/files/i386/ntdetect.com
/I386/SETUPLDR.BIN=d:/bcd/cds/pebldr/files/i386/setupldr.bin
/I386/SPCMDCON.SYS=d:/bcd/cds/pebldr/files/i386/spcmdcon.sys
/I386/TXTSETUP.SIF=d:/bcd/cds/pebldr/files/i386/txtsetup.sif
/I386/explorer.exe=d:/bcd/cds/pebldr/files/i386/explorer.exe
/I386/iexplore.exe=d:/bcd/cds/pebldr/files/i386/iexplore.exe
/I386/regedit.exe=d:/bcd/cds/pebldr/files/i386/regedit.exe
...
1500 lines in lowercase

WinPE dosn't boot: complains about missing "\i386\system32\biosinfo.inf"

I have to do more tests.

Posted by: xlerb Jan 23 2004, 07:12 AM
Hi all,

a short msg: CygWin essentially runs with the new concept of uppercasing
just I386 and top level files, leaving alone all other dirs and using an unpatched
version of mkisofs.

See this screenshot of BartPE running the CygWin X11 server and 4 programs on a remote Linux system:

- xterm
- oclock
- xeyes
- soffice

(reduced image size)

*screenshot removed*

http://www.osgev.de/other/bartpe/ScreenHunter_001.gif

2 more shots:

http://www.osgev.de/other/bartpe/ScreenHunter_002.gif

http://www.osgev.de/other/bartpe/ScreenHunter_003.gif

regards

Georg

Posted by: cdob Jan 23 2004, 01:51 PM
QUOTE (cdob @ Jan 22 2004, 08:36 AM)
WinPE dosn't boot: complains about missing "\i386\system32\biosinfo.inf"

Next trial:

/I386/SETUPLDR.BIN=d:/bcd/cds/pebldr/files/i386/setupldr.bin
/i386/system32/biosinfo.inf=d:/bcd/cds/pebldr/files/i386/SYSTEM32/biosinfo.inf

That's \I386 and \i386 on the burned CD. WinXP explorer.exe dosn't like this, don't show any files in \i386, but according to ISOBuster the files are there. WinPE dosn't boot.

One more trial:

/I386/NTDETECT.COM=d:/bcd/cds/pebldr/files/i386/ntdetect.com
/I386/SETUPLDR.BIN=d:/bcd/cds/pebldr/files/i386/setupldr.bin
/I386/SPCMDCON.SYS=d:/bcd/cds/pebldr/files/i386/spcmdcon.sys
/I386/TXTSETUP.SIF=d:/bcd/cds/pebldr/files/i386/txtsetup.sif
/I386/SYSTEM32/BIOSINFO.INF=d:/bcd/cds/pebldr/files/i386/SYSTEM32/biosinfo.inf
/I386/SYSTEM32/calc.exe=d:/bcd/cds/pebldr/files/i386/SYSTEM32/calc.exe
/I386/fonts/arial.ttf=d:/bcd/cds/pebldr/files/i386/fonts/arial.ttf

That's five files (NTDETECT.COM, SETUPLDR.BIN, SPCMDCON.SYS, TXTSETUP.SIF, SYSTEM32/BIOSINFO.INF) in uppercase. Folder \I386 and \I386\SYSTEM32 are in uppercase, all other folder and files are in lower case.

WinPE boot from CD.

Please test yourself.

Posted by: paraglider Jan 23 2004, 02:54 PM
@cdob

It worked for me with your 5 file list + 2 directories. I had to add BOOTFIX.BIN in uppercase for that to display the prompt.

Posted by: xlerb Jan 23 2004, 07:08 PM
Hi cdob and paraglider,

thanks for your experiments and reports.

I tested with paragliders 6 files and 2 dirs in uppercase, no luck!

1st try: \i386\system32\halaacpi.dll could not be found, code 14

And there are some other hal*.dll files too, don't know what these are (HAL = Hardware Abstraction Layer, possibly have to do with ACPI (Advanced Configuration and Power Interface) too).

Just uppercased halaacpi.dll, reburned and did the

2nd try: ntkrnlmp.exe could not be found, code 14

uppercasing that, reburned, then

3rd try: \i386\system32\KDCOM.DLL could not be found, code 14

I stopped the testing here and will stick with uppercasing ALL of I386 and all toplevel files. I don't know why it works for you and not for me, but I believe nobody cares about the I386 branch being UC anyway as long as all other dirs are left mixed case.

And that is what I will ask Bart for to implement in one of the next verions of PEBuilder.

regards

Georg

Posted by: paraglider Jan 23 2004, 09:32 PM
@Xlerb,

The first time I tried it I got the same problem as you - I kept having to add more and more dlls, sys files. Then I made everthing in the root, i386, system32 lowercase and then made only the 6 files and 2 directories uppercase. It then worked.

Posted by: xlerb Jan 24 2004, 12:58 AM
Hi paraglider,

thanks for the tip. But a short test shows, that simply making files in the root lowercase, then uppercasing the mentioned 6 files and 2 dirs did not work out for me. Might be, when I follow your hint fully and lowercase everything in the I386 branch first I could get it to work.

But I don't see the advantage of this, one had to use a script to lowercase all, then uppercase the right files. This is more complicated and errorprone than just uppercasing all files in the root and the whole I386 branch.

Am I missing the point? Who cares about case in the I386 branch for what reason?

regards

Georg

Posted by: this-is-me Jan 24 2004, 01:42 AM
For testing, if anyone here needs a batch win32 command line app to uppercase files/dirs recursively, check out "Win32 Console Toolbox" here: http://stevemiller.net/apps/

There is a program inside called FileCase. Usage to uppercase the i386 dir is as follows:

filecase.exe /u /s /h /q /d C:\pebldr\i386
filecase.exe /u /d /q C:\pebldr\i386

Posted by: xlerb Jan 24 2004, 03:22 PM
QUOTE (this-is-me @ Jan 23 2004, 11:42 PM)
... check out "Win32 Console Toolbox" here: http://stevemiller.net/apps/

There is a program inside called FileCase. Usage to uppercase the i386 dir is as follows:

filecase.exe /u /s /h /q /d C:\pebldr\i386
filecase.exe /u /d /q C:\pebldr\i386

Thanks for the link.

Strange, filecase.exe has the same deficiency as my script: all files/dirs inside i386 are changed, but the i386 dir itself remains lowercase.

Thus the correct sequence of commands to uppercase all neccessary files is:
CODE
REM all files/dirs inside i386
filecase.exe /u /s /h /q /d C:\pebldr\i386
REM all top level files
filecase.exe /u /q C:\pebldr
REM the i386 dir itself
ren C:\pebldr\i386 I386

Please note also, that Steve P. Miller (link above) has a free and very nice 'Dependency Walker' app. Very usefull to figure out, which DLLs are neccessary for any application.

regards

Posted by: cdob Jan 26 2004, 01:55 PM
QUOTE (xlerb @ Jan 23 2004, 05:08 PM)
1st try: \i386\system32\halaacpi.dll could not be found, code 14

I stopped the testing here and will stick with uppercasing ALL of I386 and all toplevel files. I don't know why it works for you and not for me, but I believe nobody cares about the I386 branch being UC anyway as long as all other dirs are left mixed case.

With -graft-points and booting isolinux bootsector WinPe CD boots. After renaming files, folder and booting W2k bootsektor I got also missing halacpi.dll.

Next I uppercasing all of I386, that's more stable. Hopefully Bart use this in a future release.

Posted by: Bart Lagerweij Feb 8 2004, 03:46 PM
@all

Hi,

I've read this thread and see how I can change pebuilder to make this work.

But I first need to finish my "penet" network support.
Could take a few releases before I get to change pebuilder for the "uppercase" change.

Thanks,
Bart.

Posted by: Bart Lagerweij Feb 8 2004, 03:47 PM
@all

Hi,

I've read this thread and see how I can change pebuilder to make this work.

But I first need to finish my "penet" network support.
Could take a few releases before I get to change pebuilder for the "uppercase" change.

Thanks,
Bart.

Posted by: rasa Feb 22 2004, 09:44 PM
@xlerb

Is your Cygwin plugin available?

I started to create one, but I don't want to duplicate your effort.

Posted by: cdob Feb 23 2004, 07:34 PM
QUOTE (rasa @ Feb 22 2004, 07:44 PM)

Is your Cygwin plugin available?

I'm using this. Thanks to xlerb and this-is-me.

pebuilder.inf
CODE

[BuildISO]
exec="mkBartPE.cmd ""@IsoFile@"" ""@OutDir@"" ""@SourcePath@"" ""@Build@"""

mkBartPE.cmd
CODE

@echo off
REM mkBartPE.cmd
REM create ISO image, don't burn
setlocal & echo %~n0 %*
path=%~dp0;%path%

set IsoFile=%~1
if "" == "%IsoFile%" set IsoFile=%~dp0.\BartPE.iso

set OutDir=%~2
if "" == "%OutDir%" set OutDir=C:\pebldr\i386

REM all files/dirs inside i386
filecase.exe /u /s /h /q /d "%OutDir%\i386"
REM all top level files
filecase.exe /u /q "%OutDir%"
REM the i386 dir itself
ren "%OutDir%\i386" I386

rem use local CodePage
set CodePage=HKLM\SYSTEM\CurrentControlSet\Control\Nls\CodePage
FOR /F "tokens=1-2*" %%a IN ('reg query "%CodePage%" /v "OEMCP"') DO (
set OEMCP=%%c)

rem -allow-lowercase only needed for mkisofs 2.01a17-Bart, but dosn’t harm original mkisofs
mkisofs -version

set option=-iso-level 4 -allow-lowercase -output-charset cp%OEMCP% ^
-volid ""BartPE"" -A PEBUILDER/MKISOFS -sysid "Win32" ^
-b BOOTSECT.BIN -no-emul-boot -boot-load-size 4 -hide BOOTSECT.BIN ^
-hide boot.catalog "%OutDir%"

echo mkisofs -o "%IsoFile%" %option%
mkisofs -o "%IsoFile%" %option%

rem start cdrecord blank=fast -dao -v "%IsoFile%"

Posted by: rasa Feb 23 2004, 08:08 PM
cdob,

That's informative, but I don't see any reference to cygwin in your reply.

I did create a *very* simple cygwin module, but it needs so much work, I'd rather use someone else's:

CODE
; cygwin.inf
; PE Builder v3 plug-in INF file for Cygwin
; cygwin homepage: http://cygwin.com/

[Version]
Signature= "$Windows NT$"

[PEBuilder]
Name="Cygwin (Bash Shell)"
Enable=0
Help="cygwin.htm"

[WinntDirectories]
a="Programs\cygwin",2

[SourceDisksFolders]
files=a,,1

[SourceDisksFiles]
cygwin.cmd=a,,1
setpath.cmd=a,,1

[Append]
nu2menu.xml, cygwin_nu2menu.xml

[Default.AddReg]
0x1, "Software\Microsoft\Command Processor", "AutoRun", "%SystemDrive%\Programs\cygwin\setpath.cmd"

CODE
<!-- cygwin_nu2menu.xml - Nu2Menu entry for unixutils -->

<!-- Cygwin does not require a menu entry at all
therefore this XML menu entry is intentionally left blank
feel free to populate this howver you want. May I suggest
though that you instead write scripts to do the job for you
and link to the scripts :) -->

<NU2MENU>
<MENU ID="Programs">
<MITEM TYPE="ITEM" DISABLED="@Not(@FileExists(@GetProgramDrive()\Programs\cygwin\cygwin.cmd))" CMD="RUN"
FUNC="@GetProgramDrive()\Programs\cygwin\cygwin.cmd">Bash Shell (Cygwin)</MITEM>
</MENU>
</NU2MENU>

CODE
@echo off
:: cygwin.cmd
set path=%PATH%;%SystemDrive%\Programs\cygwin
%SystemDrive%\Programs\cygwin\bash.exe --login -i

CODE
@echo off
:: setpath.cmd
set path=%PATH%;%SystemDrive%\Programs\cygwin

NOTE: To be able to boot, I had to uppercase the following files:

i386 (directory)
i386\*.*
i386\system32 (directory)
i386\system32\*.* (except *.exe)
i386\system32\ntkrlmp.exe
i386\system32\drivers\*.*

Why not just uppercase the entire i386 tree?

Well, since Cygwin is case sensitive, a script that calls 'cmd' would then fail,
if cmd.exe was renamed CMD.EXE

Posted by: cdob Feb 24 2004, 09:27 PM
QUOTE (rasa @ Feb 23 2004, 06:08 PM)
That's informative, but I don't see any reference to cygwin in your reply.

Ups, sorry. I read your message to fast and misundersood it.

A basic cygwin-Plugin is there included:
http://smithii.com/ross/pebuilder/pebuilder-makefile.zip

There is much to do. Copy /etc to ramdisk, create /home, mount /etc and /home and so on. Actually I use cygwin, but not with BartPE.

Posted by: compie Mar 12 2004, 04:05 PM
QUOTE (xlerb @ Jan 21 2004, 05:08 AM)
@all: would you give this a try and test, if it works on your config too?
I can deliver the precompiled, unpatched W32 'mkisofs' (if you trust me, else compile it yourself).

Could you upload your unpatched version of mkisofs somewhere?
Or could you email it to me? (compie <at> bigfoot <dot> com).

Posted by: compie Mar 13 2004, 02:00 PM
I found win32 binaries of cdrtools here: http://www.sbox.tugraz.at/home/t/tplank/

and here: http://www.geoshock.com/cdrtools/

Posted by: Bernd Blaauw Mar 13 2004, 09:06 PM
I wish a smaller Cygwin would be available. Kind of big for those functions that MKISOFS uses.

Posted by: xlerb Mar 14 2004, 06:38 AM
Hi all,

sorry, I was offline for a long time because of other work to do.

@Bart

Thanks for reviewing this thread and considering to change pebuilder.
Take your time to finish current work.

@compie

I sent the unpatched 'mkisofs.exe' and tried to send my version of
'cygwin1.dll' (the one I compiled against) too, but maybe the latter fails
on hotmail size limits. If so and you need the dll, then send me another
message (propose a variant of splitting the dll you can handle).

@rasa

Yes, I'm nearly finished with my 'cygwin' plugin. I will publish it soon,
as my 'other work' now gives me some more time. My focus is on basic
cygwin functionality (bash, vi, sort, grep etc.) and the cygwin X server.
But I will have to look at the reference provided by 'cdob'.

@cdob

Yes, there is much to do, you mentioned important parts already. There
are some additional prerequisite tasks to carry out, e.g. fixing some
cygwin symbolic links. I'll look at the link you provided and will try to
combine efforts with the author of that plugin.

Best regards

xlerb

Posted by: compie Mar 14 2004, 11:42 PM
I get this warning from mkisofs:
mkisofs 2.01a24 (i686-pc-cygwin)
mkisofs -o "D:\bartpe\build\pebuilder.iso" -iso-level 4 -allow-lowercase -output-charset cp437 -volid ""BartPE"" -A PEBUILDER/MKISOFS -sysid "Win32" -b BOOTSECT.BIN -no-emul-boot -boot-load-size 4 -hide BOOTSECT.BIN -hide boot.catalog "c:\pebldr"
Warning: creating filesystem that does not conform to ISO-9660.
Warning: Creating ISO-9660:1999 (version 2) filesystem.

Is that bad? Everything else works by the way. The cd boots ok.

Posted by: Bernd Blaauw Mar 15 2004, 06:14 AM
about the warnings: not a problem

Posted by: Bart Lagerweij Mar 15 2004, 10:06 AM
I'm not sure if I change PE Builder for this.
I am prepairing for writing my own ISO build routine, embedded in pebuilder.

Bart.

Posted by: cdob Mar 15 2004, 01:47 PM
QUOTE (Bart Lagerweij @ Mar 15 2004, 08:06 AM)
I am prepairing for writing my own ISO build routine, embedded in pebuilder.

Thats fine, for most circumstances a included build routine gets lower difficulties. But please allow to choose mkisofs instead.
I like burning on the fly, without image: 'mkisofs | cdrecord -'. Next, there exist somewhere a japanse mkisofs version, supporting ISO9660:1999.

Posted by: xlerb Mar 16 2004, 07:05 AM
Dear Bart,

QUOTE
I am prepairing for writing my own ISO build routine, embedded in pebuilder.

Wouldn't that put even more stress on your part?
And, as 'cdob' pointed out already, the mkisofs/cdrtools package has several
additional features (e.g. batch burning, fine control over many features).

And many, if not most, users of your nice tool are sysadmins ... able to get hands
on cygwin and compiling cdrtools for their own needs.

I think your initial approach to use cdrtools/mkisofs is the 'correct' decision:
please continue to support it.

Best regards

xlerb

Posted by: Bernd Blaauw Mar 16 2004, 09:24 PM
I hope Bart's version will be as powerful as MKISOFS then!

Bart, people at this forum found out that you could store the ISO in the c:\pebldr without problems. MKISOFS does not try to scan it (unless the iso file is already present).

are you writing an ISO creation program to decrease PeBuilder size?
or more advanced options?

does the EXEC line in pebuilder.inf support multiple commands?
EXEC1=
EXEC2=

or simply EXEC=
?

Above scenario of storing the ISO in the @OutDir@ would mean first check if ISO exists, if it exists, delete it (so MKISOFS will not scan it), then run MKISOFS

Posted by: helig Mar 18 2004, 10:21 AM
@Bart

In case you still have to modifiy directory or file names in future versions, then you can maybe also take care of character set conversion, e.g. for german umlauts.
The windows API function AnsiToOem (or CharToOem) might be quite useful for that purpose.

Thank you!
Helmut

Posted by: cdob Mar 18 2004, 01:54 PM
QUOTE (helig @ Mar 18 2004, 08:21 AM)
character set conversion, e.g. for german umlauts.

Try "mkisofs -iso-level 4 -output-charset cp850 ..."

Posted by: helig Mar 18 2004, 09:36 PM
@cdob
That works, thank you!

There is just a small drawback left, the german umlaut characters ar not uppercased. But I think there is no setting for changing that, right?

Anyway, thank you for this great hint.
Helmut

Posted by: cdob Mar 19 2004, 01:38 PM
QUOTE (helig @ Mar 18 2004, 07:36 PM)
the german umlaut characters ar not uppercased. But I think there is no setting for changing that, right?

Yep, but read the title: here we only uppercase \I386 and some other files. These names are ASCII chars.

Original mkisofs dosn't uppercase ISO9660:1999 file system, because lowercase characters are leagal. There are only some characters legal with older ISO9660 and therefore mkisofs uppercase 7-bit characters.

Do you use a patched mkisofs?

Posted by: helig Mar 21 2004, 06:35 PM
@cdob

I'm using mkisofs from the BartPE "distribution".

I have double-checked my files with the published information from this thread and found some errors on my side, so now my BartPE boots smoothly while having german umlauts and lower case filenames within my data directory.

Thanks for your help!
Helmut

Posted by: allens Mar 24 2004, 04:16 PM
I have just discovered this thread & would like to try these ideas.

Could someone PM to me the unmodified (unpatched) version of mkisofs, I do not mind admitting that I am not sure how to compile it myself.

Thanks in advance.

Posted by: paraglider Mar 24 2004, 04:20 PM
Scroll up and you will find the post by Compie on March 13th.

Posted by: cdob Mar 24 2004, 04:29 PM
QUOTE (allens @ Mar 24 2004, 02:16 PM)
Could someone PM to me the unmodified (unpatched) version of mkisofs

Scroll up, and read "-allow-lowercase only needed for mkisofs 2.01a17-Bart".

Posted by: Bernd Blaauw Mar 24 2004, 09:41 PM
http://www.sbox.tugraz.at/home/t/tplank/

contains recent MKSIFOS (2.01a27), even works with old Cygwin1.dll
(the newer one is larger).

Posted by: allens Mar 25 2004, 01:28 PM
Thanks for all the MKISOFS location info.

Posted by: Ixel Apr 3 2004, 02:10 AM
I'm using mkisofs and cygwin1.dll packaged with pebuilder 3.0.31. When i run this,

mkisofs -o "D:\pe.iso" -iso-level 4 -allow-lowercase -output-charset cp409 -volid ""BartPE"" -A PEBUILDER/MKISOFS -sysid "Win32" -b BOOTSECT.BIN -no-emul-boot -boot-load-size 4 -hide BOOTSECT.BIN -hide boot.catalog "c:\PEFinal"

I get an error message about an incorrect level ISO 9660; use 1...3.

I'm baffled. Can anyone tell me what this means?

Ixel

Posted by: Ixel Apr 5 2004, 01:24 AM
Doh! Once again, I fail to notice my carelessness. Somehow, I had overwritten the mkisofs and cygwin1 files in my pebuilder dir. Reextracting them and running the above command again worked.

Ixel

Posted by: cdob Apr 5 2004, 12:59 PM
QUOTE (Ixel)
I get an error message about an incorrect level ISO 9660; use 1...3.

That's only a waring: maybe some old OS won't read ISO9660:1999, aka level 4. WinPE and cygwin does read this. Don't worry about that message. Bart disabled this message in his mkisofs.

Posted by: joshudson Apr 10 2004, 07:00 PM
Try this C program to correctly uppercase the i386 subdir.
It has the advantage of depending on nothing. Building with
MinGW results in a 5K binary.

#include <windows.h>
#include <stdlib.h>
#include <string.h>
#include <stdio.h>

int lc = 0;

char wx[MAX_PATH];
char opath[MAX_PATH * 2];

void UpperWalk(char *where)
{
WIN32_FIND_DATA *fd = malloc(sizeof(WIN32_FIND_DATA));
HANDLE hWalk = FindFirstFile(where, fd);
char *path = malloc(MAX_PATH + 5);
char *ptr;
if (hWalk != INVALID_HANDLE_VALUE)
do {
strcpy(wx, fd->cFileName);
if (lc)
strlwr(wx);
else
strupr(wx);
strcpy(path, where);
ptr = strrchr(path, '\\');
if (ptr)
strcpy(ptr + 1, wx);
else
strcpy(path, wx);
if (strcmp(fd->cFileName, wx))
{
strcpy(opath, where);
ptr = strrchr(opath, '\\');
if (ptr)
strcpy(ptr + 1, fd->cFileName);
else
strcpy(opath, fd->cFileName);
/*printf("%s -> %s\n", opath, path);*/
MoveFile(opath, path);
}
if (fd->dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{
if (strcmp(fd->cFileName, ".") && strcmp(fd->cFileName, ".."))
{
strcat(path, "\\*.*");
UpperWalk(path);
}
}
} while (FindNextFile(hWalk, fd));
free(fd);
}

int usage(void)
{
fputs("Usage: upprcase [/l] filespec [filespec ...]\n\n", stderr);
return 1;
}

int main(int argc, char **argv)
{
if (argv[1] && (argv[1][0] == '-' || argv[1][0] == '/'))
switch(*++*++argv)
{
case '-': break;
case 'l': case 'L': lc = 1; break;
default: return usage();
}
if (!argv[1])
return usage();
while (*++argv)
UpperWalk(*argv);
return 0;
}

Posted by: joshudson Apr 11 2004, 08:38 PM
QUOTE (Bernd Blaauw @ Mar 16 2004, 07:24 PM)
Above scenario of storing the ISO in the @OutDir@ would mean first check if ISO exists, if it exists, delete it (so MKISOFS will not scan it), then run MKISOFS

This is not necessary. PE Builder will wipe and recreate the out directory
every time it creates an image.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)


Introduction
Hi to all users of The_GUI. This program is my contribution to CD Forum, the place where I'v learned a lot about making bootable cds. My own interest was on making simple bootable cd with a couple of tools like FDISK, Partition Magic, etc... but once involved - forever involved with bootable cds. Now, I'm a maniac that have briefcase full with bootable cds, one for multimedia (movix, womp, slax...), one for recovery, one for this, one for that... If you wan't to understand what is this all about - read the forum articles included in this help file.

I really hate to write help files and user's manuals....

The_GUI v2 is a GUI for couple of command-line tools with addition of some useful functions that should help you making ISO files.
Why to make ISO files if you can use your favorite cd-burning app to burn cds without intermediate steps?
If you are developing your own boot cds you'll find this intermediate step very useful, you can test your ISO in virtual machines before burning, optimize your ISO for faster loading, optimize your ISO for space (in case you have duplicated files), etc, etc...

Author's homepage:
http://members.chello.at/bobby100/

Author's e-mail:
spasic7@hotmail.com

If you have any request about the next version of The_GUI or you have to report a bug, please feel free to mail me.

Legal stuff:
This program comes without any kind of warranty. Inproper use of this program can cause lost or damage of your data. The author of this program don't take any responsability for the problems that may occur while using this program.
This program is free to use and free to redistribute without need to pay any fee. In the case that this program is redistributed in mass media (web-pages, magazines, etc...), the author of the program must be noticed.
Author will be very thankful to be noticed about any review of this program.

Happy ISO-ing :-)

Boban Spasic aka bobby100


mkisofs mingw32

cdrtools (cdrecord, mkisofs, readcd, cdda2wav) by Jörg Schilling
with storage optimization (mkisofs) and without cygwin1.dll (Win32/Mingw32 version)

NOTE:
This version of cdrtools is an inofficial (modified) release of cdrtools
and thus may have bugs that are not present in the original version.
Please send bug reports and support requests to cdrtools#bootcd.ru.
The original author should not be bothered with problems of this version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.

Differences with original Win32/Cygwin32 version:

all tools:

- cygwin1.dll is not required

mkisofs:

- New option:

-duplicates-once Optimize storage by encoding duplicate files once

- Option -cache-inodes is ignored (Windows has no inodes)

- Option -follow-links is ignored (Windows has no symlinks)

- Option -rock have same effect as option -rational-rock

cdda2wav:

- Option -echo now works

Differences with original MS-DOS/DJGPP version:

mkisofs:

- New option:

-duplicates-once Optimize storage by encoding duplicate files once

Note: -duplicates-once can be combined with -cache-inodes and -follow-links

- Time zone information can be specified using TZ environment variable, e.g.:

set TZ=UTC-3

Binaries:

Win32/Mingw32 version: cdrtools-2.01a32-1-w32.zip (465kb)
MS-DOS/DJGPP version: cdrtools-2.01a32-1-dos.zip (750kb)

Sources:

cdrtools sources: cdrtools-2.01a32-1-src.zip (2.7mb), diff (22kb)
Mingw32 runtime sources: mingw-runtime-3.1-src.tar.gz (257kb)
DJGPP runtime sources: djlsr204.zip (1.8mb)
CWSDPMI sources: csdpmi5s.zip (86kb)


cdrecord

SYNOPSIS

       cdrecord [ general options ] dev=device [ track options  ]
       track1...trackn

DESCRIPTION

       Cdrecord  is used to record data or audio Compact Discs on
       an Orange Book CD-Recorder.

       The  device  refers  to  scsibus/target/lun  of  the   CD-
       Recorder.  Communication  on  SunOS  is done with the SCSI
       general driver scg.  Other operating systems are  using  a
       library  simulation  of  this driver.  Possible syntax is:
       dev= scsibus,target,lun or dev= target,lun.  In the latter
       case,  the  CD-Recorder has to be connected to the default
       SCSI bus of the machine.   Scsibus,  target  and  lun  are
       integer numbers.  Some operating systems or SCSI transport
       implementations may require to specify a filename in addi-
       tion.   In this case the correct syntax for the device is:
       dev= devicename:scsibus,target,lun or dev= devicename:tar-
       get,lun.   If  the  name  of the device node that has been
       specified on such a system  refers  to  exactly  one  SCSI
       device,  a shorthand in the form dev= devicename:@ or dev=
       devicename:@,lun may  be  used  instead  of  dev=  device-
       name:scsibus,target,lun.

       To  access  remote  SCSI  devices, you need to prepend the
       SCSI device name by a remote device indicator. The  remote
       device   indicator   is   either   REMOTE:user@host:  or
       REMOTE:host:
       A valid remote SCSI device name may be:  REMOTE:user@host:
       to     allow     remote     SCSI     bus    scanning    or
       REMOTE:user@host:1,0,0 to access the SCSI device  at  host
       connected to SCSI bus # 1,target 0 lun 0.

       To access SCSI devices via alternate transport layers, you
       need to prepend the SCSI device name by a transport  layer
       indicator.  The transport layer indicator may be something
       like USCSI: or ATAPI:.  To get a list of supported  trans-
       port layers for your platform, use dev= HELP:

       To  make cdrecord portable to all UNIX platforms, the syn-
       tax dev= devicename:scsibus,target,lun is preferred as  is
       hides  OS  specific  knowledge about device names from the
       user.  A specific OS must not necessarily support a way to
       specify a real device file name nor a way to specify scsi-
       bus,target,lun.

       On SVr4 compliant systems, cdrecord uses the the real time
       class to get the highest scheduling priority that is  pos-
       sible (higher than all kernel processes).  On systems with
       POSIX  real  time  scheduling  cdrecord  uses  real   time
       scheduling  too,  but  may  not be able to gain a priority
       that is higher than all kernel processes.

       In Track At Once mode, each track corresponds to a  single
       file  that  contains the prepared data for that track.  If
       the argument is `-',  standard  input  is  used  for  that
       track.  Only one track may be taken from stdin.

GENERAL OPTIONS

       General  options  must  be  before  any track file name or
       track option.

       -version
              Print version information and exit.

       -v     Increment the level of general  verbosity  by  one.
              This  is  used  e.g. to display the progress of the
              writing process.

       -V     Increment the verbose level in respect of SCSI com-
              mand  transport  by one.  This helps to debug prob-
              lems during the writing process, that occur in  the
              CD-Recorder.   If  you  get  incomprehensible error
              messages you should  use  this  flag  to  get  more
              detailed output.  -VV will show data buffer content
              in addition.  Using -V or -VV slows down  the  pro-
              cess and may be the reason for a buffer underrun.

       debug=#, -d
              Set  the  misc  debug  value to # (with debug=#) or
              increment the misc debug level by one (with -d). If
              you  specify -dd, this equals to debug=2.  This may
              help to find problems while opening  a  driver  for
              libscg  as  well  as  with  sector sizes and sector
              types.  Using -debug slows down the process and may
              be the reason for a buffer underrun.

       kdebug=#, kd=#
              Tell  the  scg-driver  to  modify  the kernel debug
              value while SCSI commands are running.

       -silent, -s
              Do not print out a status report  for  failed  SCSI
              commands.

       -force Force  to  continue on some errors. Be careful when
              nect.  These systems will freeze while blanking  or
              fixating  a CD/DVD or while a DVD writer is filling
              up a session to the  minimum  amount  (approx.  800
              MB).  Setting the -immed flag will request the com-
              mand to return immediately while the operation pro-
              ceeds  in background, making the bus usable for the
              other devices and avoiding the system freeze.  This
              is  an  experimental feature which may work or not,
              depending on the model of  the  CD/DVD  writer.   A
              correct  solution  would  be  to  set  up a correct
              cabling but there seem to be notebooks around  that
              have been set up the wrong way by the manufacturer.
              As it is impossible to fix this  problem  in  note-
              books, the -immed option has been added.

              A second experimental feature of the -immed flag is
              to tell cdrecord to try to wait  short  times  wile
              writing  to the media. This is expected to free the
              IDE bus if the CD/DVD writer and  the  data  source
              are  connected to the same IDE cable. In this case,
              the CD/DVD writer would otherwise usually block the
              IDE  bus for nearly all the time making it impossi-
              ble to fetch data from the source drive.  See  also
              minbuf= and -v option.

              Use  both  features  at your own risk.  It it turns
              out that it would make sense  to  have  a  separate
              option  for  the  the  wait  feature,  write to the
              author and convince him.

       minbuf=value
              The # minbuf= options allows to define the  minimum
              drive  buffer fill ratio for the experimental ATAPI
              wait mode that is intended to free the IDE  bus  to
              allow hard disk and CD/DVD writer to be on the same
              IDE cable.  As the wait mode currently  only  works
              when  the  verbose  option  -v  has been specified,
              cdrecord implies the verbose  option  in  case  the
              -immed  or  minbuf=  option  have  been  specified.
              Valid values for minbuf= are between 25 and 95  for
              25%...95% minimum drive buffer fill ratio.

       -dummy The  CD-Recorder  will  go through all steps of the
              recording process, but the laser is turned off dur-
              ing  this procedure.  It is recommended to run sev-
              eral tests before actually  writing  to  a  Compact
              Disk  or  Digital Versatile Disk, if the timing and
              load response of the system is not known.

       -dao   Set SAO (Session At Once)  mode  which  is  usually
              called  Disk  At  Once  mode.   This currently only
              works with MMC drives that support Session At  Once
              -raw96r or -raw16 mode, you should give it  a  try.
              There are several CD writers with bad firmware that
              result in broken disks when writing in TAO  or  SAO
              mode.  Writing data disks in raw mode needs signif-
              icantly more CPU time than other  write  modes.  If
              your  CPU  is  too  slow, this may result in buffer
              underruns.

       -raw96p
              Select Set RAW writing mode with 2352 byte  sectors
              plus 96 bytes of packed P-W subchannel data result-
              ing in a sector size of 2448 bytes.   This  is  the
              less  preferred  raw  writing  mode  as  only a few
              recorders support it and some  of  these  recorders
              have  bugs  in  the firmware implementation.  Don't
              use this mode if your recorder supports -raw96r  or
              -raw16.   Writing data disks in raw mode needs sig-
              nificantly more CPU time than other write modes. If
              your  CPU  is  too  slow, this may result in buffer
              underruns.

       -raw16 Select Set RAW writing mode with 2352 byte  sectors
              plus  6 bytes of P-Q subchannel data resulting in a
              sector size of 2368 bytes.  If a recorder does  not
              support  -raw96r, this is the preferred raw writing
              mode.  It  does  not  allow  to  write  CD-Text  or
              CD+Graphics  but it is the only raw writing mode in
              cheap CD writers.  As these cheap writers  in  most
              cases  do  not  support  -dao mode.  Don't use this
              mode if your recorder  supports  -raw96r.   Writing
              data disks in raw mode needs significantly more CPU
              time than other write modes. If  your  CPU  is  too
              slow, this may result in buffer underruns.

       -multi Allow  multi  session  CD's  to  be made. This flag
              needs to be present on all sessions of a multi ses-
              sion disk, except you want to create a session that
              will be the last session on the media.   The  fixa-
              tion  will  be  done  in  a way that allows the CD-
              Recorder to append additional sessions later.  This
              is done by generation a TOC with a link to the next
              program area. The so generated media  is  not  100%
              compatible   to   manufactured   CD's  (except  for
              CDplus).  Use only for recording of  multi  session
              CD's.  If this option is present, the default track
              type is CD-ROM XA mode 2.  The Sony drives have  no
              hardware support for CD-ROM XA mode 2.  You have to
              specify the -data option in order to  create  multi
              session disks on these drives.  As long as cdrecord
              does not have a coder for converting  data  sectors
              to  audio sectors, you need to force CD-ROM sectors
              by including the -data option if you like to record
              of a CD.  With this option, cdrecord will work with
              CD-R drives and with CD-ROM drives.

       -atip  Retrieve and print out the ATIP (absolute  Time  in
              Pregroove)  info  of  a CD/DVD recordable or CD/DVD
              rewritable media.  With this option, cdrecord  will
              try  to retrieve the ATIP info. If the actual drive
              does not support to read the ATIP info, it  may  be
              that  only  a reduced set of information records or
              even nothing is displayed. Only a limited number of
              MMC compliant drives support to read the ATIP info.

              If cdrecord is able to retrieve the  lead-in  start
              time  for  the first session, it will try to decode
              and print the manufacturer  info  from  the  media.
              DVD  media  dos not have atip information but there
              is equivalent prerecorded information that is  read
              out and printed.

       -fix   The disk will only be fixated (i.e. a TOC for a CD-
              Reader will be written).  This may be used, if  for
              some  reason the disk has been written but not fix-
              ated. This option currently does not work with  old
              TEAC drives (CD-R50S and CD-R55S).

       -nofix Do  not  fixate  the disk after writing the tracks.
              This may be used to create an audio disk in  steps.
              An un-fixated disk can usually not be used on a non
              CD-writer type drive but there are audio CD players
              that will be able to play such a disk.

       -waiti Wait  for  input  to  become  available on standard
              input before trying to open the SCSI  driver.  This
              allows cdrecord to read it's input from a pipe even
              when writing additional sessions to a multi session
              disk.  When writing another session to a multi ses-
              sion disk, mkisofs needs to read  the  old  session
              from the device before writing output.  This cannot
              be done if cdrecord opens the SCSI  driver  at  the
              same time.

       -load  Load  the  media  and  exit. This only works with a
              tray loading mechanism but seems to be useful  when
              using the Kodak disk transporter.

       -eject Eject  disk  after  doing  the  work.  Some Devices
              (e.g. Philips) need to eject the medium before cre-
              ating  a  new disk. Doing a -dummy test and immedi-
              ately creating a real disk would not work on  these
              devices.

       speed=#
              Set  the  speed factor of the writing process to #.
              # is an integer, representing  a  multiple  of  the
              audio speed.  This is about 150 KB/s for CD-ROM and
              about 172 KB/s for CD-Audio.  If no speed option is
              present,  cdrecord  will try to get the speed value
              from the CDR_SPEED environment.  If your drive  has
              problems  with  speed=2  or speed=4, you should try
              speed=0.

       blank=type
              Blank a CD-RW and exit  or  blank  a  CD-RW  before
              writing. The blanking type may be one of:

              help        Display  a  list  of  possible blanking
                          types.

              all         Blank the entire disk. This may take  a
                          long time.

              fast        Minimally  blank the disk. This results
                          in erasing the PMA,  the  TOC  and  the
                          pregap.

              track       Blank a track.

              unreserve   Unreserve a reserved track.

              trtail      Blank the tail of a track.

              unclose     Unclose last session.

              session     Blank the last session.
       Not  all drives support all blanking types. It may be nec-
       essary to use blank=all if a  drive  reports  a  specified
       command  as  being  invalid.   If  used  together with the
       -force flag, this option may be used to blank CD-RW  disks
       that  otherwise  cannot be blanked. Note that you may need
       to specify blank=all because some drives will not continue
       with  certain  types  of  bad  CD-RW disks. Note also that
       cdecord does it's best if the -force flag is used  but  it
       finally depends on the drive's firmware whether the blank-
       ing operation will succeed or not.

       fs=#   Set the fifo (ring buffer) size to #.  You may  use
              the  same  method  as  in dd(1), sdd(1) or star(1).
              The number representing the size is taken in  bytes
              unless  otherwise  specified.   If a number is fol-
              lowed directly by the letter `b', `k', `m', `s'  of
              `f',   the   size   is  multiplied  by  512,  1024,
              1024*1024, 2048 or 2352.  If the size  consists  of
              numbers  separated by `x' or `*', multiplication of
              the two numbers is performed.  Thus fs=10x63k  will
              specify a fifo size of 630 kBytes.

              The size specified by the fs= argument includes the
              shared memory that is  needed  for  administration.
              This  is  at  least  one page of memory.  If no fs=
              option is present, cdrecord will  try  to  get  the
              fifo  size value from the CDR_FIFOSIZE environment.
              The default fifo size is currently 4 MB.

              The fifo is used to increase buffering for the real
              time writing process.  It allows to run a pipe from
              mkisofs directly into cdrecord.   If  the  fifo  is
              active  and  a  pipe  from mkisofs into cdrecord is
              used to create a CD, cdrecord will abort  prior  to
              only  MMU page table entries for 16 MBytes per pro-
              cess. Using more than 14 MBytes for  the  fifo  may
              cause  the  operating  system in this case to spend
              much time to  constantly  reload  the  MMU  tables.
              Newer  machines from Sun do not have this MMU hard-
              ware problem. I have no information on  PC-hardware
              reflecting this problem.

              If  you  have  buffer underruns or similar problems
              and observe a zero fifo empty count, you have hard-
              ware problems. The fifo size in this case is suffi-
              cient.

       dev=target
              Sets the SCSI target for the CD-Recorder, see notes
              above.  A typical device specification is dev=6,0 .
              If a filename must be provided  together  with  the
              numerical  target  specification,  the  filename is
              implementation specific.  The correct  filename  in
              this case can be found in the system specific manu-
              als of the target operating system.  On  a  FreeBSD
              system  without  CAM  support,  you need to use the
              control device (e.g.   /dev/rcd0.ctl).   A  correct
              device   specification   in   this   case   may  be
              dev=/dev/rcd0.ctl:@ .

              On Linux,  drives  connected  to  a  parallel  port
              adapter are mapped to a virtual SCSI bus. Different
              adapters are mapped to different  targets  on  this
              virtual SCSI bus.

              If  no  dev option is present, cdrecord will try to
              get the device from the CDR_DEVICE environment.

              If the argument to the dev= option does not contain
              the  characters  ',', '/', '@' or ':', it is inter-
              preted as an label name that may be  found  in  the
              file /etc/default/cdrecord (see FILES section).

       gracetime=#
              Set  the  grace  time before starting to write to #
              seconds.  Values below 2 seconds are not allowed.

       timeout=#
              Set the default SCSI command  timeout  value  to  #
              seconds.   The  default SCSI command timeout is the
              minimum timeout used for sending SCSI commands.  If
              a  SCSI command fails due to a timeout, you may try
              to raise the default SCSI command timeout above the
              timeout  value  of the failed command.  If the com-
              mand runs correctly with a raised command  timeout,
              please report the better timeout value and the cor-
              driver  is that the -speed or -dummy will not work.

              There are two special driver entries in  the  list:
              cdr_simul  and dvd_simul.  These driver entries are
              designed to make timing tests at any speed or  tim-
              ing tests for drives that do not support the -dummy
              option.  The simulation drivers implement  a  drive
              with  a  buffer size of 1MB that can be changed via
              the CDR_SIMUL_BUFSIZE  environment  variable.   The
              simulation driver correctly simulates even a buffer
              underrun condition.  If the -dummy option  is  pre-
              sent,  the  simulation  is not aborted in case of a
              buffer underrun.

       driveropts=option list
              Set driver specific options. The options are speci-
              fied  a  comma  separated  list.   To get a list of
              valid options use driveropts=help together with the
              -checkdrive  option.   Currently implemented driver
              options are:

              burnfree
                     Turn the support for  Buffer  Underrun  Free
                     writing on.  This only works for drives that
                     support  Buffer  Underrun  Free  technology.
                     This  may be called: Sanyo BURN-Proof, Ricoh
                     Just-Link, Yamaha Lossless-Link or  similar.

                     The   default  is  to  turn  BURN-Free  off,
                     regardless of the defaults of the drive.

              noburnfree
                     Turn the support for  Buffer  Underrun  Free
                     writing off.

              varirec=value
                     Turn  on  the  Plextor VariRec writing mode.
                     The mandatory parameter value is  the  laser
                     power  offset  and currently may be selected
                     from -2, -1, 0, 1, 2.  In addition, you need
                     to  set  the  write  speed  to 4 in order to
                     allow VariRec to work.

              audiomaster
                     Turn on the Yahama Audio Master Q. R.   fea-
                     ture  which  usually  should  result in high
                     quality CDs that have less reading  problems
                     in  HiFi players.  As this is implemented as
                     a variant of the Session at Once write mode,
                     it  will  only  work if you select SAO write
                     mode and there is no need to  turn  it  off.
                     The  Audio Master mode will work with a lim-
                     Yamaha)  allow to force the drive to use the
                     selected speed even if the medium is so  bad
                     that  the  write quality would be poor. This
                     option tells such a drive to  force  to  use
                     the  selected speed regardless of the medium
                     quality.

                     Use this option with extreme care  and  note
                     that  the  drive  should  know  better which
                     medium will work at full speed.  The default
                     is to turn forcespeed off, regardless of the
                     defaults of the drive.

              noforcespeed
                     Turn off the force speed feature.

              tattooinfo
                     Use this option together with -checkdrive to
                     retrieve  the image size information for the
                     Yamaha DiskT@2 feature.  The  images  always
                     have a line length of 3744 pixel.  Line num-
                     ber 0 (radius 0) is mapped to the center  of
                     the  disk.   If you know the inner and outer
                     radius you will be able to create a pre dis-
                     torted  image  that  later may appear undis-
                     torted on the disk.

              tattoofile=name
                     Use this option together with -checkdrive to
                     write  an  image  prepared  for  the  Yamaha
                     DiskT@2 feature to  the  medium.   The  file
                     must  be a file with raw image B&W data (one
                     byte per pixel) in a size as retrieved by  a
                     previous  call  to tattoofile=name .  If the
                     size of the image equals the maximum  possi-
                     ble  size  (3744 x 320 pixel), cdrecord will
                     use the first part of the file.  This  first
                     part  then  will  be written to the leftover
                     space on the CD.

                     Note that the image must be mirrored  to  be
                     readable from the pick up side of the CD.

       -checkdrive
              Checks if a driver for the current drive is present
              and exit.  If the drive is a known drive,  cdrecord
              uses exit code 0.

       -prcap Print the drive capabilities for SCSI-3/mmc compli-
              ant drives as obtained from mode page 0x2A.  Values
              marked  with kB use 1000 bytes as kilo-byte, values
              marked with KB use 1024 bytes as Kilo-byte.

       -overburn
              Allow cdrecord to write more than the official size
              of  a  medium. This feature is usually called over-
              burning and depends on the  fact  that  most  blank
              media  may  hold more space than the official size.
              As the official size of the lead-out  area  on  the
              disk  is  90 seconds (6750 sectors) and a disk usu-
              ally works if there are at  least  150  sectors  of
              lead  out,  all media may be overburned by at least
              88 seconds (6600 sectors).  Most CD recorders  only
              do overburning in SAO or RAW mode. Known exceptions
              are TEAC CD-R50S, TEAC CD-R55S  and  the  Panasonic
              CW-7502.   Some  drives do now allow to overburn as
              much as you might like and limit the size of  a  CD
              to  e.g.  76  minutes.  This problem may be circum-
              vented by writing the CD in RAW mode  because  this
              way the drive has no chance to find the size before
              starting to burn.  There is no guarantee that  your
              drive  supports overburning at all.  Make a test to
              check if your drive implements the feature.

       -ignsize
              Ignore the known size of the medium.  This  options
              should  be  used  with extreme care, it exists only
              for debugging purposes don't use it for other  rea-
              sons.   It  is  not needed to write disks with more
              than the nominal  capacity.   This  option  implies
              -overburn.

       -useinfo
              Use  *.inf  files  to  overwrite audio options.  If
              this option is used, the pregap size information is
              read  from  the  *.inf file that is associated with
              the file that contains the audio data for a  track.

       defpregap=#
              Set  the default pre-gap size for all tracks except
              track number 1.  This option currently  only  makes
              sense  with  the TEAC drive when creating track-at-
              once disks without the 2 second silence before each
              track.
              This option may go away in future.

       -packet
              Set  Packet  writing mode.  This is an experimental
              interface.

       pktsize=#
              Set the packet size to #, forces fixed packet mode.
              This is an experimental interface.

       -noclose
              files. If you like to write your own CD-Text infor-
              mation, edit the *.inf files with a text editor and
              change the field that are relevant for CD-Text.

       textfile=filename
              Write CD-Text based on  information  found  in  the
              binary  file  filename.   This  file  must  contain
              information in a data format defined in the  SCSI-3
              MMC-2  standard  and in the Red Book. The four byte
              size header that is defined in the SCSI standard is
              optional and allows to make the recognition of cor-
              rect data less ambiguous.  This is the best  option
              to  be  used to copy CD-Text data from existing CDs
              that already carry CD-Text information. To get data
              in  a  format suitable for this option use cdrecord
              -vv -toc to extract the information from disk.

TRACK OPTIONS

       Track options may be mixed with track file names.

       isrc=ISRC_number
              Set the International Standard Recording Number for
              the next track to ISRC_number.

       index=list
              Sets  an  index  list for the next track.  In index
              list is a comma separated list of numbers that  are
              counting from index 1. The first entry in this list
              must contain a 0, the following numbers must be  an
              ascending  list  of  numbers (counting in 1/75 sec-
              onds) that represent the start of the  indices.  An
              index  list  in the form: 0,7500,15000 sets index 1
              to the start of the track, index 2 100 seconds from
              the start of the track and index 3 200 seconds from
              the start of the track.

       -audio If this flag is present, all subsequent tracks  are
              written  in  CD-DA (similar to Red Book) audio for-
              mat.  The file with data  for  this  tracks  should
              contain  stereo,  16-bit  digital  audio with 44100
              samples/s.  The byte order should be the following:
              MSB  left, LSB left, MSB right, LSB right, MSB left
              and so on. The track should be a multiple  of  2352
              bytes.  It  is not possible to put the master image
              of an audio track on a raw disk because  data  will
              be  read  in  multiple  of  2352  bytes  during the
              recording process.

              If a filename ends in .au or .wav the file is  con-
              sidered   to  be  a  structured  audio  data  file.
              Cdrecord assumes that the file in this  case  is  a
              16-bit  stereo  samples in PCM coding at 44100 sam-
              ples/second.

              Using other structured audio data formats as  input
              to  cdrecord  will usually work if the structure of
              the data is the structure described above (raw  pcm
              data  in  big-endian  byte order).  However, if the
              data format includes a  header,  you  will  hear  a
              click at the start of a track.

              If  neither  -data  nor -audio have been specified,
              cdrecord defaults to -audio for all filenames  that
              end  in  .au  or  .wav  and  to -data for all other
              files.

       -swab  If this flag is present, audio data is  assumed  to
              be  in  byte-swapped  (little-endian)  order.  Some
              types of CD-Writers e.g. Yamaha, Sony and  the  new
              SCSI-3/mmc  drives  require  audio  data to be pre-
              sented in little-endian order, while other  writers
              require  audio  data  to  be  presented in the big-
              endian (network) byte order normally  used  by  the
              SCSI  protocol.   Cdrecord  knows  if a CD-Recorder
              needs audio data in big-  or  little-endian  order,
              and  corrects  the byte order of the data stream to
              match the needs of the recorder.  You only need the
              -swab flag if your data stream is in Intel (little-
              endian) byte order.

              Note that the verbose output of cdrecord will  show
              you if swapping is necessary to make the byte order
              of the input data fit the required  byte  order  of
              the  recorder.   Cdrecord  will not show you if the
              -swab flag was actually present for a track.

       -data  If this flag is present, all subsequent tracks  are
              written  in CD-ROM mode 1 (Yellow Book) format. The
              data is a multiple of 2048 bytes.   The  file  with
              track data should contain an ISO-9660 or Rock Ridge
              filesystem image (see mkisofs for more details). If
              the track data is an ufs filesystem image, fragment
              size should be set to 2 KB or  more  to  allow  CR-
              drives  with  2  KB  sector  size to to be used for
              reading.

              -data is the default, if no other flag is  present.

              If  neither  -data  nor -audio have been specified,
              cdrecord defaults to -audio for all filenames  that
              end  in  .au  or  .wav  and  to -data for all other
              files.

              2048 bytes.

       -isosize
              Use the ISO-9660 file system size as  the  size  of
              the  next track.  This option is needed if you want
              cdrecord to directly read the image of a track from
              a  raw  disk  partition or from a TAO master CD. In
              the first case the option  -isosize  is  needed  to
              limit  the  size  of  the CD to the size of the ISO
              filesystem.  In the second case the option -isosize
              is  needed to prevent cdrecord from reading the two
              run out  blocks  that  are  appended  by  each  CD-
              recorder  in  track at once mode. These two run out
              blocks cannot be read  and  would  cause  a  buffer
              under  run  that  would cause a defective copy.  Do
              not use this option on files created by mkisofs and
              in  case  cdrecord reads the track data from stdin.
              In the first case, you would prevent cdrecord  from
              writing   the  amount  of  padding  that  has  been
              appended by mkisofs and in the latter case, it will
              not work because stdin is not seekable.

              If  -isosize  is  used  for  a track, cdrecord will
              automatically add padding for this track as if  the
              -pad option has been used but the amount of padding
              may be less than the padding  written  by  mkisofs.
              Note  that if you use -isosize on a track that con-
              tains Sparc boot information, the boot  information
              will be lost.

              Note also that this option cannot be used to deter-
              mine the size of a file system if the multi session
              option is present.

       -pad   If  the track is a data track, 15 sectors of zeroed
              data will be added to the end of this and each sub-
              sequent  data track.  In this case, the -pad option
              is superseded  by  the  padsize=  option.  It  will
              remain  however as a shorthand for padsize=15s.  If
              the -pad option refers to an audio track,  cdrecord
              will  pad  the  audio data to be a multiple of 2352
              bytes.  The audio data padding is done with  binary
              zeroes which is equal to absolute silence.

              -pad remains valid until disabled by -nopad.

       padsize=#
              Set the amount of data to be appended as padding to
              the next track to #.  Opposed to  the  behavior  of
              the -pad option, the value for padsize= is reset to
              zero for each new track.  Cdrecord assumes a sector
              size  of  2048 bytes for the padsize= option, inde-
              much overburning is possible with a specific media.

       -nopad Do not pad the following tracks - the default.

       -shorttrack
              Allow  all  subsequent  tracks  to violate the Read
              Book track length standard which requires a minimum
              track  length  of  4  seconds.  This option is only
              useful when used in  SAO  or  RAW  mode.   Not  all
              drives  support  this  feature.  The  drive must be
              accept the resulting CUE sheet or support RAW writ-
              ing.

       -noshorttrack
              Re-enforce  the  Red  Book  track  length standard.
              Tracks must be at least 4 seconds.

       pregap=#
              Set the  pre-gap size for  the  next  track.   This
              option  currently  only  makes  sense with the TEAC
              drive when creating track-at-once disks without the
              2 second silence before each track.
              This option may go away in future.

       -preemp
              If this flag is present, all TOC entries for subse-
              quent audio tracks will  indicate  that  the  audio
              data  has been sampled with 50/15 µsec preemphasis.
              The data, however is not modified during  the  pro-
              cess  of  transferring  from  file  to  disk.  This
              option has no effect on data tracks.

       -nopreemp
              If this flag is present, all TOC entries for subse-
              quent  audio  tracks  will  indicate that the audio
              data has been mastered with linear data -  this  is
              the default.

       -copy  If this flag is present, all TOC entries for subse-
              quent audio tracks of the resulting CD  will  indi-
              cate  that  the  audio  data  has  permission to be
              copied without limit.  This option has no effect on
              data tracks.

       -nocopy
              If this flag is present, all TOC entries for subse-
              quent audio tracks of the resulting CD  will  indi-
              cate  that  the  audio  data  has  permission to be
              copied only once for personal use  -  this  is  the
              default.

       -scms  If this flag is present, all TOC entries for subse-
              the TEAC programming interface, even  in  Track  at
              Once  mode, cdrecord needs to know the size of each
              track before starting to write the disk.   Cdrecord
              now  checks  this  and  aborts  before  starting to
              write.  If  this  happens  you  will  need  to  run
              mkisofs -print-size before and use the output (with
              `s' appended) as an argument to the  tsize=  option
              of cdrecord (e.g. tsize=250000s).
              See fs= option for possible arguments.

EXAMPLES

       For  all  examples  below, it will be assumed that the CD-
       Recorder is connected to  the  primary  SCSI  bus  of  the
       machine. The SCSI target id is set to 2.

       To  record  a pure CD-ROM at double speed, using data from
       the file cdimage.raw:

           cdrecord -v speed=2 dev=2,0 cdimage.raw

       To create an image for a ISO  9660  filesystem  with  Rock
       Ridge extensions:

           mkisofs -R -o cdimage.raw /home/joerg/master/tree

       To  check  the  resulting  file  before  writing  to CD on
       Solaris:

           mount -r -F  fbk  -o  type=hsfs  /dev/fbk0:cdimage.raw
       /mnt

       On Linux:

           mount cdimage.raw -r -t iso9660 -o loop /mnt

       Go on with:
           ls -lR /mnt
           umount /mnt

       If  the  overall speed of the system is sufficient and the
       structure of the filesystem is not too  complex,  cdrecord
       will  run  without  creating  an  image  of  the  ISO 9660
       filesystem. Simply run the pipeline:

           mkisofs -R /master/tree | cdrecord  -v  fs=6m  speed=2
       dev=2,0 -

       The   recommended  minimum  fifo  size  for  running  this
       pipeline is 4 MBytes.  As the default fifo size is  4  MB,
       the  fs= option needs only be present if you want to use a
       different fifo size.  If your system is loaded, you should
       Cdrecord  runs  at  priority 59 on Solaris, you should run
       mkisofs at no more than priority 58. On other systems, you
       should run mkisofs at no less than nice --18.

       Creating  a  CD-ROM  without file system image on disk has
       been tested on a Sparcstation-2 with a Yamaha CDR-400.  It
       did work up to quad speed when the machine was not loaded.
       A faster machine may be able to handle quad speed also  in
       the loaded case.

       To  record a pure CD-DA (audio) at single speed, with each
       track  contained  in   a   file   named   track01.cdaudio,
       track02.cdaudio, etc:

           cdrecord -v speed=1 dev=2,0 -audio track*.cdaudio

       To  check  if  it  will  be ok to use double speed for the
       example above.  Use the dummy write option:

           cdrecord -v -dummy speed=2 dev=2,0 -audio track*.cdau-
       dio

       To record a mixed-mode CD with an ISO 9660 filesystem from
       cdimage.raw on the first track,  the  other  tracks  being
       audio tracks from the files track01.cdaudio, track02.cdau-
       dio, etc:

           cdrecord  -v   -dummy   dev=2,0   cdimage.raw   -audio
       track*.cdaudio

       To  handle  drives  that  need to know the size of a track
       before starting to write, first run

           mkisofs -R -q -print-size /master/tree

       and then run

           mkisofs -R /master/tree  |  cdrecord  speed=2  dev=2,0
       tsize=XXXs -

       where XXX is replaced by the output of the previous run of
       mkisofs.

       To copy an audio CD in the most accurate way, first run

           cdda2wav -vall cddb=0 -D2,0 -B -Owav

       and then run

           cdrecord -v dev=2,0 -dao -useinfo -text  *.wav

       This will try copy  track  indices  and  to  read  CD-Text
              -speed option).

       CDR_FIFOSIZE
              Sets  the  default  size of the FIFO (see also fs=#
              option).

       CDR_FORCERAWSPEED
              If this environment variable is set, cdrecord  will
              allow you to write at the full RAW encoding speed a
              single CPU supports.  This will create high  poten-
              tial of buffer underruns. Use with care.

       RSH    If  the RSH environment is present, the remote con-
              nection will not be  created  via  rcmd(3)  but  by
              calling  the  program  pointed to by RSH.  Use e.g.
              RSH=/usr/bin/ssh to create a secure  shell  connec-
              tion.

              Note  that this forces cdrecord to create a pipe to
              the  rsh(1)  program  and  disallows  cdrecord   to
              directly  access  the  network socket to the remote
              server.  This makes it impossible to set up perfor-
              mance parameters and slows down the connection com-
              pared to a root initiated rcmd(3) connection.

       RSCSI  If the RSCSI environment  is  present,  the  remote
              SCSI    server    will    not    be   the   program
              /opt/schily/sbin/rscsi but the program  pointed  to
              by RSCSI.  Note that the remote SCSI server program
              name will be ignored if you log in using an account
              that  has  been  created  with a remote SCSI server
              program as login shell.

FILES

       /etc/default/cdrecord
              Default values can be set for the following options
              in  /etc/default/cdrecord.  For example: CDR_FIFOS-
              IZE=8m or CDR_SPEED=2

              CDR_DEVICE
                     This may either  hold  a  device  identifier
                     that  is  suitable  to  the open call of the
                     SCSI transport library or  a  label  in  the
                     file  /etc/default/cdrecord  that  allows to
                     identify a specific drive on the system.

              CDR_SPEED
                     Sets the default  speed  value  for  writing
                     (see also -speed option).

              CDR_FIFOSIZE
                     values for speed and fifosize may be set  to
                     -1  to  tell  cdrecord  to  use  the  global
                     defaults.  A typical line may look this way:

                     teac1= 0,5,0   4    8m

                     yamaha= 1,6,0  -1   -1

                     This tells cdrecord that a drive named teac1
                     is at scsibus 0, target 5, lun 0 and  should
                     be  used  with  speed 4 and a FIFO size of 8
                     MB.  A second drive may be found at  scsibus
                     1,  target  6,  lun  0  and uses the default
                     speed and the default FIFO size.

SEE ALSO

       cdda2wav(1),  readcd(1),   scg(7),   fbk(7),   mkisofs(8),
       rcmd(3), ssh(1).

NOTES

       On  Solaris  you need to stop the volume management if you
       like to use the USCSI fallback SCSI transport  code.  Even
       things  like cdrecord -scanbus will not work if the volume
       management is running.

       Disks made in Track At Once mode are  not  suitable  as  a
       master  for  direct  mass  production by CD manufacturers.
       You will need the disk  at  once  option  to  record  such
       disks.   Nevertheless the disks made in Track At Once will
       normally be read in all CD  players.  Some  old  audio  CD
       players however may produce a two second click between two
       audio tracks.

       The minimal size of a track is 4 seconds or  300  sectors.
       If  you  write  smaller  tracks,  the CD-Recorder will add
       dummy blocks. This is not an error, even though the  SCSI-
       error message looks this way.

       Cdrecord  has  been  tested on an upgraded Philips CDD-521
       recorder at single and  double  speed  on  a  SparcStation
       20/502  with  no  problems, slower computer systems should
       work also.  The newer Philips/HP/Plasmon/Grundig drives as
       well  as Yamaha CDR-100 and CDR-102 work also. The Plasmon
       RF-4100 work, but has not  tested  in  multi  session.   A
       Philips  CDD-521 that has not been upgraded will not work.
       The Sony CDU-924 has been tested, but does not support XA-
       mode2  in hardware.  The sony therefore cannot create con-
       forming multi session disks.  The  Ricoh  RO-1420C  works,
       but  some  people  seem  to have problems to use them with
       speed=2, try speed=0 in this case.
       sible  while  writing a CD.  If you want to make sure that
       buffer underruns are not caused by your source  disk,  you
       may use the command

           cdrecord -dummy dev=2,0 padsize=600m /dev/null

       to  create  a  disk  that  is entirely made of dummy data.
       Cdrecord needs to  run  as  root  to  get  access  to  the
       /dev/scg?  device nodes and to be able to lock itself into
       memory.

       If you don't want to allow users to become  root  on  your
       system,  cdrecord  may safely be installed suid root. This
       allows all users or a group of users with no  root  privi-
       leges  to  use cdrecord.  Cdrecord in this case checks, if
       the real user would have been able to read  the  specified
       files.  To give all user access to use cdrecord, enter:

            chown root /usr/local/bin/cdrecord
            chmod 4711 /usr/local/bin/cdrecord

       To  give  a  restricted  group of users access to cdrecord
       enter:

            chown root /usr/local/bin/cdrecord
            chgrp cdburners /usr/local/bin/cdrecord
            chmod 4710 /usr/local/bin/cdrecord

       and add a group cdburners on your system.

       Never give write permissions for non  root  users  to  the
       /dev/scg?   devices  unless  you  would  allow  anybody to
       read/write/format all your disks.

       You should not connect old drives that do not support dis-
       connect/reconnect to either the SCSI bus that is connected
       to the CD-Recorder or the source disk.

       A Compact Disc can have no more than 99 tracks.

       When creating a disc with both audio and data tracks,  the
       data  should  be  on track 1 otherwise you should create a
       CDplus disk which is a multi session disk with  the  first
       session containing the audio tracks and the following ses-
       sion containing the data track.

       Many operating systems are not able to read  more  than  a
       single data track, or need special software to do so.

       More  information  on  the  SCSI  command  set of a HP CD-
       Recorder can be found at:

       Unfortunately, the sg driver on Linux has  several  severe
       bugs:

       o      It  cannot  see if a SCSI command could not be sent
              at all.

       o      It cannot get the SCSI status byte.   Cdrecord  for
              that  reason cannot report failing SCSI commands in
              some situations.

       o      It cannot get real DMA count of transfer.  Cdrecord
              cannot  tell you if there is an DMA residual count.

       o      It cannot get number of bytes valid in  auto  sense
              data.  Cdrecord cannot tell you if device transfers
              no sense data at all.

       o      It fetches  to  few  data  in  auto  request  sense
              (CCS/SCSI-2/SCSI-3 needs >= 18).

       The  fifo percent output is computed just after a block of
       data has been written to the CD-Recorder. For this reason,
       there  will  never be 100% fifo fill, while the fifo is in
       streaming mode.

DIAGNOSTICS

       You have 9 seconds to type ^C to abort cdrecord after  you
       see the message:

       Starting  to  write  CD at speed %d in %s mode for %s ses-
       sion.

       A typical error message for a SCSI command looks like:

              cdrecord: I/O error. test unit ready: scsi sendcmd: no error
              CDB:  00 20 00 00 00 00
              status: 0x2 (CHECK CONDITION)
              Sense Bytes: 70 00 05 00 00 00 00 0A 00 00 00 00 25 00 00 00 00 00
              Sense Key: 0x5 Illegal Request, Segment 0
              Sense Code: 0x25 Qual 0x00 (logical unit not supported) Fru 0x0
              Sense flags: Blk 0 (not valid)
              cmd finished after 0.002s timeout 40s

       The first line gives information about  the  transport  of
       the  command.   The  text  after the first colon gives the
       error text for the system call from the view of  the  ker-
       nel.  It  usually is: I/O error unless other problems hap-
       pen. The next words contain a short  description  for  the
       SCSI command that fails. The rest of the line tells you if
       there were any problems for the transport of  the  command
       over the SCSI bus.  fatal error means that it was not pos-
       available,  followed  by  the  segment number that is only
       valid if the command was a copy command. If the error mes-
       sage  is  not directly related to the current command, the
       text deferred error is appended.

       The sixth line is the error text for the  sense  code  and
       the  sense  qualifier  if  available.   If the type of the
       device is known, the sense data is decoded from tables  in
       scsierrs.c  .  The text is followed by the error value for
       a field replaceable unit.

       The seventh line prints the block number that  is  related
       to  the  failed  command and text for several error flags.
       The block number may not be valid.

       The eight line reports the timeout set up for this command
       and the time that the command really needed to complete.

       The following message is not an error:
              Track 01: Total bytes read/written: 2048/2048 (1 sectors).
              cdrecord: I/O error. flush cache: scsi sendcmd: no error
              CDB:  35 00 00 00 00 00 00 00 00 00
              status: 0x2 (CHECK CONDITION)
              Sense Bytes: F0 00 05 80 00 00 27 0A 00 00 00 00 B5 00 00 00 00 00
              Sense Key: 0x5 Illegal Request, Segment 0
              Sense Code: 0xB5 Qual 0x00 (dummy data blocks added) Fru 0x0
              Sense flags: Blk -2147483609 (valid)
              cmd finished after 0.002s timeout 40s

       It  simply notifies, that a track that is smaller than the
       minimum size has been expanded to 300 sectors.


misc

Hiding files on a CD
=====================

This document attempts to show how to hide files from being seen by an
operating system accessing a CD as an ISO9660/Rock Ridge, Joliet or HFS
CD. It also highlights some of the limitations ...

Note: this document is about the various -hide options - not be confused with
the -hidden options.

The -hidden options set the 'EXISTENCE' bit in the directory entry which
means the file or directory will be invisible - unless some special option
is used to mount or view the CD - Linux has the 'unhide' mount option to
make these files visible. i.e. the directory entry exists on the CD.

With hindsight, to avoid confusion with the -hidden option, it would have
been better to chose an option name like '-omit' instead of '-hide'...

The various -hide options actually exclude the relevant directory entry
from the directory tree. Therefore, it is not possible to access a file
or directory that has be hidden with the -hide option when the ISO9600/Rock
Ridge directory is mounted - because the directory entry does not exist on the
CD (but the file data does). You would probably be able to access this file
or directory when mounted as a Joliet or HFS CD (depending on other options
used). Similarly, a directory entry hidden with the -hide-joliet option
will not be accessible when mounted as an Joliet CD. Similarly for -hide-hfs
etc.

If you don't want a file or directory to appear on the CD at all, then use the
-exclude options, not the -hide options (mkisofs completely ignores any
file/directory excluded with the -exclude options).

========================================
Some thoughts on Joliet

- why it is a dumb idea to have a CD
with Joliet enhancements but without Rock Ridge.
It also helps you to understand why it it not possible to append
a new session to a multi-session Joliet CD when Rock Ridge is
missing.

- Joliet is not an accepted independant international standard
like ISO-9660 or Rock Ridge (IEEE-P1282).
Joliet has been created in 1995 - Rock Ridge in 1990.
Rock Ridge became a IEEE standard around 1992.

Joliet is an unjustified addition to ISO-9660.

- The Joliet tree has no relation to the
ISO-9660 tree. Files from the ISO-9660 tree and from the
Joliet tree only share content. In general, it is not
possible to find the ISO-9660 name from a Joliet name
and vice versa if you check both trees on a CD.

Rock Ridge extensions are located at the end of each
ISO-9660 directory record. This makes the Rock Ridge
tree closely coupled to the ISO-9660 tree.

- Joliet does not allow all characters too, so the
Joliet filenames are not identical to the filenames
on disk.

As the ISO-9660 tree is the standard reference tree
on a CD and the ISO-9660 filenames don't allow all
characters and there is a length limitation, the
ISO-9660 names cannot be mapped to the filenames on the
OS reference tree on disk for doing multi-session.

Due to different limitations, the short ISO-9660 name
is in most cases not equal to the Joliet name or the
Rock Ridge name.

- Joliet has a filename length limitation of 64 chars (independent
from the character coding and type e.g. European vs. Japanese)
This is annoying as modern filesystems all allow 255 chars
per path name component.

Joliet uses UTF-16 coding while Rock Ridge uses ISO-8859 or
UTF-16 based chars and allows 255 octets. Using UTF-8,
Rock Ridge allows 85 Japanese characers or 255 US-ASCII chars.

Other than slightly longer filenames, Joliet offers no new properties
over plain ISO 9660. Rock Ridge is an open extendable standard and
there is no filesystem property on Win32 that could not be implemented
using Rock Ridge.

Except Linux and FreeBSD, there is no POSIX-like like OS that supports
Joliet. Never create Joliet only CD's for that reason.


mkisofs

SYNOPSIS

       mkisofs [ options ] [ -o  filename  ]  pathspec  [pathspec
       ...]

DESCRIPTION

       mkisofs is effectively a pre-mastering program to generate
       an ISO9660/JOLIET/HFS hybrid filesystem.

       mkisofs is capable of generating the  System  Use  Sharing
       Protocol records (SUSP) specified by the Rock Ridge Inter-
       change 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,  symbolic links, block and character devices.

       If Joliet or HFS hybrid command line  options  are  speci-
       fied,  mkisofs will create additional filesystem meta data
       for Joliet or HFS.  The file content in this  case  refers
       to  the same data blocks on the media.  It will generate a
       pure ISO9660 filesystem unless the Joliet  or  HFS  hybrid
       command line options are given.

       mkisofs  can  generate  a  true  (or  shared)  HFS  hybrid
       filesystem. The same files are  seen  as  HFS  files  when
       accessed  from  a  Macintosh  and  as  ISO9660  files when
       accessed from other machines. HFS stands for  Hierarchical
       File  System  and is the native file system used on Macin-
       tosh computers.

       As an alternative, mkisofs can generate the  Apple  Exten-
       sions  to  ISO9660 for each file. These extensions provide
       each file with CREATOR, TYPE and certain Finder Flags when
       accessed from a Macintosh. See the HFS MACINTOSH FILE FOR-
       MATS section below.

       mkisofs takes a snapshot of a given  directory  tree,  and
       generates  a  binary  image  which  will  correspond to an
       ISO9660 or HFS filesystem when written to a block  device.

       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
       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 cdrecord utility is a utility capable  of  burning  an
       actual  disc.  The latest version of cdrecord is available
       from ftp://ftp.berlios.de/pub/cdrecord

       Also you should know that most cd writers are very partic-
       ular  about  timing.   Once  you start to burn a disc, you
       cannot let their buffer empty before you are done, or  you
       will end up with a corrupt disc.  Thus it is critical that
       you be able to maintain an uninterrupted  data  stream  to
       the  writer  for  the  entire  time that the disc is being
       written.

       pathspec is the path of the directory tree  to  be  copied
       into the iso9660 filesystem.  Multiple paths can be speci-
       fied, and mkisofs will merge the files found in all of the
       specified path components to form the cdrom image.

       If the option -graft-points has been specified, it is pos-
       sible to graft the paths at points  other  than  the  root
       directory,  and  it is possible to graft files or directo-
       ries onto the cdrom image with names different  than  what
       they  have  in  the source filesystem.  This is easiest to
       illustrate with a couple of  examples.    Let's  start  by
       assuming that a local file ../old.lis exists, and you wish
       to include it in the cdrom image.

            foo/bar/=../old.lis

       will include the  file  old.lis  in  the  cdrom  image  at
       /foo/bar/old.lis, while

            foo/bar/xxx=../old.lis

       will  include  the  file  old.lis  in  the  cdrom image at
       /foo/bar/xxx.  The same sort of syntax can  be  used  with
       directories  as well.  mkisofs will create any directories
       required such that the graft points  exist  on  the  cdrom
       image  -  the  directories do not need to appear in one of
       the paths.  By default, any directories that  are  created
       on the fly like this will have permissions 0555 and appear
       to be owned by the person running mkisofs.   If  you  wish
       other  permissions  or owners of the intermediate directo-
       ries, see -uid, -gid, -dir-mode, -file-mode and  -new-dir-
       mode.

       mkisofs  will also run on Win9X/NT4 machines when compiled
              the volume header.  This should describe the appli-
              cation that will be on the disc.  There is space on
              the disc for 128 characters of  information.   This
              parameter  can  also  be set in the file .mkisofsrc
              with APPI=id.  If specified  in  both  places,  the
              command line version is used.

       -allow-lowercase
              This options allows lower case characters to appear
              in iso9660 filenames.
              This violates the ISO9660 standard, but it  happens
              to work on some systems.  Use with caution.

       -allow-multidot
              This  options allows more than one dot to appear in
              iso9660 filenames.  A leading dot is  not  affected
              by  this option, it may be allowed separately using
              the -L option.
              This violates the ISO9660 standard, but it  happens
              to work on many systems.  Use with caution.

       -biblio FILE
              Specifies the bibliographic file name.  This param-
              eter can also be set in the  file  .mkisofsrc  with
              BIBLO=filename.   If  specified in both places, the
              command line version is used.

       -cache-inodes
              Cache inode and device numbers to find  hard  links
              to  files.   If  mkisofs  finds a hard link (a file
              with multiple  names),  then  the  file  will  only
              appear  once on the CD. This helps to save space on
              the CD.  The option  -cache-inodes  is  default  on
              UNIX like operating systems.  Be careful when using
              this option on a filesystem  without  unique  inode
              numbers  as  it  may result in files containing the
              wrong content on CD.

       -no-cache-inodes
              Do not cache inode and device numbers.  This option
              is  needed  whenever  a  filesystem  does  not have
              unique inode numbers. It is the default on  Cygwin.
              As  the  Microsoft operating system that runs below
              Cygwin is not POSIX compliant,  it  does  not  have
              unique  inode  numbers.   Cygwin creates fake inode
              numbers from a hash algorithm that is not 100% cor-
              rect.   If mkisofs would cache inodes on Cygwin, it
              would  believe  that  some  files   are   identical
              although  they are not. The result in this case are
              files that contain the wrong content if a  signifi-
              cant  amount  of  different  files  (> ~5000) is in
              inside the tree that is to be archived.  This  does
              assumed that the first 512 byte  sector  should  be
              read from the boot image (it is essentially emulat-
              ing a normal floppy drive).  This  will  work,  for
              example,  if  the  boot  image is a LILO based boot
              floppy.

              If the boot image is not an image of a floppy,  you
              need  to add one of the options: -hard-disk-boot or
              -no-emul-boot.  If the system should not  boot  off
              the emulated disk, use -no-boot.

       -eltorito-alt-boot
              Start  with  a  new set of "El Torito" boot parame-
              ters.  This allows to have more than one El  Torito
              boot  on  a  CD.   A  maximum  of 63 El Torito boot
              entries may be put on a single CD.

       -B img_sun4,img_sun4c,img_sun4m,img_sun4d,img_sun4e
              Specifies a comma separated  list  of  boot  images
              that  are  needed  to  make a bootable CD for sparc
              systems.  There may be empty fields  in  the  comma
              separated  list.  This option is required to make a
              bootable CD for Sun sparc systems.  If  the  -B  or
              -sparc-boot  option  has  been specified, the first
              sector of the resulting image will  contain  a  Sun
              disk  label.  This disk label specifies slice 0 for
              the iso9660 image and slice 1 ... slice 7  for  the
              boot  images  that  have  been  specified with this
              option. Byte offset 512 ... 8191 within each of the
              additional  boot images must contain a primary boot
              that works for the appropriate sparc  architecture.
              The  rest of each of the images usually contains an
              ufs filesystem that is  used  primary  kernel  boot
              stage.

              The  implemented  boot  method  is  the boot method
              found with SunOS 4.x and SunOS  5.x.   However,  it
              does  not  depend  on  SunOS  internals but only on
              properties of the Open Boot prom. For this  reason,
              it  should  be  usable  for any OS that boots off a
              sparc system.

              If the special filename ...  is  used,  the  actual
              and all following boot partitions are mapped to the
              previous partition. If mkisofs is  called  with  -G
              image -B ...  all boot partitions are mapped to the
              partition  that  contains  the  iso9660  filesystem
              image and the generic boot image that is located in
              the first 16 sectors of the disk is  used  for  all
              architectures.

       -G generic_boot_image
              that contains a single partition.

       -no-emul-boot
              Specifies that the boot image used  to  create  "El
              Torito" bootable CDs is a 'no emulation' image. The
              system will load and  execute  this  image  without
              performing any disk emulation.

       -no-boot
              Specifies that the created "El Torito" CD should be
              marked as not bootable. The system will provide  an
              emulated  drive  for the image, but will boot off a
              standard boot device.

       -boot-load-seg segment_address
              Specifies the load  segment  address  of  the  boot
              image for no-emulation "El Torito" CDs.

       -boot-load-size load_sectors
              Specifies  the  number of "virtual" (512-byte) sec-
              tors to load in no-emulation mode.  The default  is
              to load the entire boot file.  Some BIOSes may have
              problems if this is not a multiple of 4.

       -boot-info-table
              Specifies that a 56-byte table with information  of
              the CD-ROM layout will be patched in at offset 8 in
              the boot file.  If this option is given,  the  boot
              file  is modified in the source filesystem, so make
              sure to make a copy if this file cannot  be  easily
              regenerated!   See  the  EL  TORITO BOOT INFO TABLE
              section for a description of this table.

       -C last_sess_start,next_sess_start
              This option is needed when mkisofs is used to  cre-
              ate a CDextra or the image of a second session or a
              higher level session for a multi session disk.  The
              option  -C takes a pair of two numbers separated by
              a comma. The first number is the sector  number  of
              the  first  sector  in the last session of the disk
              that should be appended to.  The second  number  is
              the starting sector number of the new session.  The
              expected pair of numbers may be retrieved by  call-
              ing  cdrecord -msinfo ...  If the -C option is used
              in conjunction with the  -M  option,  mkisofs  will
              create  a filesystem image that is intended to be a
              continuation of the previous session.   If  the  -C
              option  is used without the -M option, mkisofs will
              create a filesystem image that is  intended  to  be
              used  for  a second session on a CDextra. This is a
              multi session CD that holds audio data in the first
              session and a ISO9660 filesystem in the second ses-

       -check-oldnames
              Check  all  filenames imported from old session for
              compliance with actual mkisofs iso9660 file  naming
              rules.   It  his  option is not present, only names
              with a length > 31 are checked as these files are a
              hard violation of the iso9660 standard.

       -check-session FILE
              Check  all  old sessions for compliance with actual
              mkisofs iso9660 file naming rules.  This is a  high
              level  option that is a combination of the options:
              -M FILE -C 0,0 -check-oldnames  For  the  parameter
              FILE see description of -M option.

       -copyright FILE
              Specifies  the Copyright file name.  This parameter
              can  also  be  set  in  the  file  .mkisofsrc  with
              COPY=filename.   If  specified  in both places, the
              command line version is used.

       -d     Omit trailing period from files that do not have  a
              period.
              This  violates the ISO9660 standard, but it happens
              to work on many systems.  Use with caution.

       -D     Do not use deep directory relocation,  and  instead
              just pack them in the way we see them.
              This  violates the ISO9660 standard, but it happens
              to work on many systems.  Use with caution.

       -dir-mode mode
              Overrides the mode of directories  used  to  create
              the image to mode.  Specifying this option automat-
              ically enables Rock Ridge extensions.

       -dvd-video
              Generate DVD-Video compliant UDF file system.  This
              is  done by sorting the order of the content of the
              appropriate files and by adding padding between the
              files if needed.

       -f     Follow  symbolic links when generating the filesys-
              tem.  When this option  is  not  in  use,  symbolic
              links  will be entered using Rock Ridge if enabled,
              otherwise the file will be ignored.

       -file-mode mode
              Overrides the mode of regular files used to  create
              the image to mode.  Specifying this option automat-
              ically enables Rock Ridge extensions.

       -gid gid
              points has been specified.

       -hide glob
              Hide  glob  from  being seen on the ISO9660 or Rock
              Ridge directory.  glob is a  shell  wild-card-style
              pattern that must match any part of the filename or
              path.  Multiple  globs  may  be  hidden.   If  glob
              matches  a  directory,  then  the  contents of that
              directory will be hidden.   In  order  to  match  a
              directory  name,  make  sure  the pathname does not
              include a trailing '/' character.  All  the  hidden
              files  will still be written to the output CD image
              file.  Should be used with the -hide-joliet option.
              See README.hide for more details.

       -hide-list file
              A  file  containing a list of globs to be hidden as
              above.

       -hidden glob
              Add  the  hidden  (existence)   ISO9660   directory
              attribute  for  glob.   This attribute will prevent
              glob from being listed on DOS based systems if  the
              /A  flag  is  not  used for the listing.  glob is a
              shell wild-card-style pattern that must  match  any
              part  of the filename or path.  In order to match a
              directory name, make sure  the  pathname  does  not
              include  a  trailing '/' character.  Multiple globs
              may be hidden.

       -hidden-list file
              A file containing a list of globs to get the hidden
              attribute as above.

       -hide-joliet glob
              Hide  glob from being seen on the Joliet directory.
              glob is a shell wild-card-style pattern  that  must
              match  any  part of the filename or path.  Multiple
              globs may be hidden.  If glob matches a  directory,
              then the contents of that directory will be hidden.
              In order to match a directory name, make  sure  the
              pathname does not include a trailing '/' character.
              All the hidden files will still be written  to  the
              output  CD  image  file.   Should  be used with the
              -hide option. See README.hide for more details.

       -hide-joliet-list file
              A file containing a list of globs to be  hidden  as
              above.

       -hide-joliet-trans-tbl
              Hide  the  TRANS.TBL  files  from  the Joliet tree.
              been  specified,  the  resulting  filesystem is not
              ISO9660 level-1 compliant and will not be  readable
              on  MS-DOS.  See also NOTES section for more infor-
              mation on the RR_MOVED directory.

       -l     Allow full 31 character  filenames.   Normally  the
              ISO9660  filename will be in an 8.3 format which is
              compatible with MS-DOS,  even  though  the  ISO9660
              standard  allows  filenames of up to 31 characters.
              If you use this option, the disc may  be  difficult
              to  use on a MS-DOS system, but this comes in handy
              on some other systems (such  as  the  Amiga).   Use
              with caution.

       -input-charset charset
              Input  charset  that defines the characters used in
              local file names.  To get a list of  valid  charset
              names,  call mkisofs -input-charset help.  To get a
              1:1 mapping, you may use default as  charset  name.
              The  default  initial values are cp437 on DOS based
              systems and iso8859-1 on all  other  systems.   See
              CHARACTER SETS section below for more details.

       -output-charset charset
              Output  charset  that  defines  the characters that
              will be used in Rock Ridge file names. Defaults  to
              the input charset. See CHARACTER SETS section below
              for more details.

       -iso-level level
              Set the iso9660 conformance  level.  Valid  numbers
              are 1..3.

              With level 1, files may only consist of one section
              and filenames are restricted to 8.3 characters.

              With level 2, files may only consist  of  one  sec-
              tion.

              With level 3, no restrictions apply.

              With   all   iso9660   levels   all  filenames  are
              restricted to upper case letters, numbers  and  the
              underscore  (_).  The  maximum  filename  length is
              restricted to 31 characters, the directory  nesting
              level  is  restricted  to  8  and  the maximum path
              length is limited to 255 characters.

       -J     Generate Joliet directory records  in  addition  to
              regular iso9660 file names.  This is primarily use-
              ful when the discs are to be used on Windows-NT  or
              Windows-95  machines.   The  Joliet  filenames  are
              103  is  derived from: the maximum Directory Record
              Length (254), minus the length of Directory  Record
              (33), minus CD-ROM XA System Use Extension Informa-
              tion (14), divided by  the  UTF-16  character  size
              (2).

       -jcharset charset
              Same   as   using  -input-charset  charset  and  -J
              options. See CHARACTER SETS section below for  more
              details.

       -L     Allow  ISO9660  filenames  to  begin with a period.
              Usually, a leading dot is replaced with  an  under-
              score in order to maintain MS-DOS compatibility.
              This  violates the ISO9660 standard, but it happens
              to work on many systems.  Use with caution.

       -log-file log_file
              Redirect all error, warning and informational  mes-
              sages to log_file instead of the standard error.

       -m glob
              Exclude  glob from being written to CDROM.  glob is
              a shell wild-card-style  pattern  that  must  match
              part  of  the filename (not the path as with option
              -x).   Technically  glob  is  matched  against  the
              d->d_name  part  of  the directory entry.  Multiple
              globs may be excluded.  Example:

              mkisofs -o rom -m '*.o' -m core -m foobar

              would exclude all  files  ending  in  ".o",  called
              "core" or "foobar" to be copied to CDROM. Note that
              if you had a directory called "foobar" it too  (and
              of course all its descendants) would be excluded.

              NOTE:  The -m and -x option description should both
              be updated, they are wrong.  Both now work  identi-
              cal  and  use filename globbing. A file is excluded
              if either the last component matches or  the  whole
              path matches.

       -exclude-list file
              A  file containing a list of globs to be exclude as
              above.

       -max-iso9660-filenames
              Allow 37 chars in iso9660 filenames.   This  option
              forces  the  -N  option  as the extra name space is
              taken from the space reserved for ISO-9660  version
              numbers.
              This  violates the ISO9660 standard, but it happens
              be a new session which should get  written  to  the
              end  of  the image specified in -M.  Typically this
              requires multi-session capability for the  recorder
              and  cdrom  drive  that you are attempting to write
              this image to.  This option may  only  be  used  in
              conjunction with the -C option.

       -N     Omit version numbers from ISO9660 file names.
              This  violates  the  ISO9660  standard,  but no one
              really uses the version numbers anyway.   Use  with
              caution.

       -new-dir-mode mode
              Mode  to  use  when creating new directories in the
              iso fs image.  The default mode is 0555.

       -nobak

       -no-bak
              Do not include backup files files  on  the  iso9660
              filesystem.   If  the  -no-bak option is specified,
              files that contain the characters '~' or '#' or end
              in '.bak' will not be included (these are typically
              backup files for editors under unix).

       -force-rr
              Do not use  the  automatic  Rock  Ridge  attributes
              recognition  for  previous sessions.  This helps to
              show rotten iso9660 extension records as e.g.  cre-
              ated by NERO burning ROM.

       -no-rr Do  not use the Rock Ridge attributes from previous
              sessions.  This may  help  to  avoid  getting  into
              trouble  when mkisofs finds illegal Rock Ridge sig-
              natures on an old session.

       -no-split-symlink-components
              Don't split the SL components, but begin a new Con-
              tinuation  Area  (CE)  instead. This may waste some
              space, but the SunOS 4.1.4 cdrom driver has  a  bug
              in  reading split SL components (link_size = compo-
              nent_size instead of link_size +=  component_size).

       -no-split-symlink-fields
              Don't split the SL fields, but begin a new Continu-
              ation Area (CE) instead. This may waste some space,
              but  the SunOS 4.1.4 and Solaris 2.5.1 cdrom driver
              have a bug in reading split SL fields (a `/' can be
              dropped).

       -o filename
              is  the  name  of  the  file  to  which the iso9660

              The  padding  is  needed  as many operating systems
              (e.g. Linux) implement read  ahead  bugs  in  their
              filesystem I/O. These bugs result in read errors on
              one or more files that are located at the end of  a
              track.  They  are  usually  present  when the CD is
              written in Track at Once mode or when the  disk  is
              written  as mixed mode CD where an audio track fol-
              lows the data track.

              To avoid problems with I/O error on the  last  file
              on  the  filesystem,  the -pad option has been made
              the default.

       -no-pad
              Do not Pad the end of the  ISO9660  by  16  sectors
              (32kB).

       -path-list file
              A  file  containing  a list of pathspec directories
              and filenames to be added to the  ISO9660  filesys-
              tem. This list of pathspecs are processed after any
              that appear on the command line. If the argument is
              -, then the list is read from the standard input.

       -P publisher_id
              Specifies  a  text string that will be written into
              the volume header.  This should describe  the  pub-
              lisher of the CDROM, usually with a mailing address
              and phone number.  There is space on the  disc  for
              128  characters of information.  This parameter can
              also be set in the file .mkisofsrc with PUBL=.   If
              specified  in both places, the command line version
              is used.

       -p preparer_id
              Specifies a text string that will be  written  into
              the  volume  header.  This should describe the pre-
              parer of the CDROM, usually with a mailing  address
              and  phone  number.  There is space on the disc for
              128 characters of information.  This parameter  can
              also  be set in the file .mkisofsrc with PREP=.  If
              specified in both places, the command line  version
              is used.

       -print-size
              Print estimated filesystem size in multiples of the
              sector size (2048 bytes) and exit. This  option  is
              needed  for  Disk  At  Once mode and with some CD-R
              drives when piping directly into cdrecord.  In this
              case  it is needed to know the size of the filesys-
              tem before the actual  CD-creation  is  done.   The

       -quiet This  makes mkisofs even less verbose.  No progress
              output will be provided.

       -R     Generate SUSP and RR records using the  Rock  Ridge
              protocol  to  further  describe  the  files  on the
              iso9660 filesystem.

       -r     This is like the -R option, but file ownership  and
              modes  are  set to more useful values.  The uid and
              gid are set to zero, because they are usually  only
              useful  on  the  author's system, and not useful to
              the client.  All the file read bits are  set  true,
              so that files and directories are globally readable
              on the client.  If any execute bit  is  set  for  a
              file, set all of the execute bits, so that executa-
              bles are globally executable on the client.  If any
              search  bit  is set for a directory, set all of the
              search  bits,  so  that  directories  are  globally
              searchable  on  the  client.   All  write  bits are
              cleared, because the CD-Rom will be  mounted  read-
              only  in any case.  If any of the special mode bits
              are set, clear them, because  file  locks  are  not
              useful  on a read-only file system, and set-id bits
              are not desirable for uid 0 or gid 0.  When used on
              Win32, the execute bit is set on all files. This is
              a result of the lack of file permissions  on  Win32
              and  the  Cygwin  POSIX  emulation layer.  See also
              -uid -gid, -dir-mode, -file-mode and -new-dir-mode.

       -relaxed-filenames
              The  option -relaxed-filenames allows ISO9660 file-
              names to include digits, uppercase  characters  and
              all  other  7  bit ASCII characters (resp. anything
              except lowercase characters).
              This violates the ISO9660 standard, but it  happens
              to work on many systems.  Use with caution.

       -sort sort file
              Sort  file  locations on the media. Sorting is con-
              trolled by a file that contains pairs of  filenames
              and  sorting offset weighting.  If the weighting is
              higher, the file will  be  located  closer  to  the
              beginning  of the media, if the weighting is lower,
              the file will be located closer to the end  of  the
              media. There must be only one space or tabs charac-
              ter between the filename and  the  weight  and  the
              weight  must  be the last characters on a line. The
              filename is taken to include all the characters  up
              to, but not including the last space or tab charac-
              ter on a line. This is to allow for  space  charac-
              ters  to  be in, or at the end of a filename.  This
              option does not sort the order of  the  file  names
              be named: filename_00,filename_01,filename_02...

       -sysid ID
              Specifies the system ID.  This parameter  can  also
              be  set in the file .mkisofsrc with SYSI=system_id.
              If specified in both places, the command line  ver-
              sion is used.

       -T     Generate  a file TRANS.TBL in each directory on the
              CDROM, which can be used on non-Rock Ridge  capable
              systems  to  help establish the correct file names.
              There is also information present in the file  that
              indicates the major and minor numbers for block and
              character devices, and each symlink has the name of
              the link file given.

       -table-name TABLE_NAME
              Alternative   translation   table  file  name  (see
              above). Implies the -T option.  If you are creating
              a multi-session image you must use the same name as
              in the previous session.

       -ucs-level level
              Set Unicode conformance level in  the  Joliet  SVD.
              The  default  level  is  3.   It may be set to 1..3
              using this option.

       -udf   Include UDF support  in  the  generated  filesystem
              image.   UDF  support  is currently in alpha status
              and for this reason, it is not possible  to  create
              UDF only images.  UDF data structures are currently
              coupled to the Joliet structures, so there are many
              pitfalls  with the current implementation. There is
              no UID/GID support, there is  no  POSIX  permission
              support,  there  is  no support for symlinks.  Note
              that UDF wastes the space from sector ~20 to sector
              256 at the beginning of the disk in addition to the
              spcae needed for real UDF data structures.

       -uid uid
              Overrides the uid read from the source files to the
              value of uid.  Specifying this option automatically
              enables Rock Ridge extensions.

       -use-fileversion
              The option -use-fileversion allows mkisofs  to  use
              file  version  numbers from the filesystem.  If the
              option is not specified, mkisofs creates a  version
              if  1  for all files.  File versions are strings in
              the range ;1 to ;32767 This option is  the  default
              on VMS.

              systems.
              This violates the ISO9660 standard, but it  happens
              to work on many systems.  Use with caution.

       -V volid
              Specifies  the  volume ID (volume name or label) to
              be written into the master block.   This  parameter
              can  also  be  set  in  the  file  .mkisofsrc  with
              VOLI=id.  If specified in both places, the  command
              line  version  is  used.  Note that if you assign a
              volume ID, this is the name that will  be  used  as
              the  mount point used by the Solaris volume manage-
              ment system and the name that is  assigned  to  the
              disc on a Microsoft Win32 or Apple Mac platform.

       -volset ID
              Specifies  the  volset ID.  This parameter can also
              be set in the file .mkisofsrc with  VOLS=volset_id.
              If  specified in both places, the command line ver-
              sion is used.

       -volset-size #
              Sets the volume set size to #.  The volume set size
              is  the  number  of CD's that are in a CD set.  The
              -volset-size option may be used to create CD's that
              are  part  of  e.g. a Operation System installation
              set of CD's.  The option -volset-size must be spec-
              ified before -volset-seqno on each command line.

       -volset-seqno #
              Sets the volume set sequence number to #.  The vol-
              ume set sequence number is the index number of  the
              current  CD  in  a CD set.  The option -volset-size
              must be specified before -volset-seqno on each com-
              mand line.

       -v     Verbose  execution.  If  given twice on the command
              line, extra debug information will be printed.

       -x path
              Exclude path from being  written  to  CDROM.   path
              must  be  the  complete  pathname that results from
              concatenating the pathname given  as  command  line
              argument  and  the path relative to this directory.
              Multiple paths may be excluded.  Example:

              mkisofs -o cd -x /local/dir1 -x /local/dir2 /local

              NOTE: The -m and -x option description should  both
              be  updated, they are wrong.  Both now work identi-
              cal and use filename globbing. A file  is  excluded
              if  either  the last component matches or the whole

HFS OPTIONS

       -hfs   Create an ISO9660/HFS hybrid CD. This option should
              be used in conjunction with the -map, -magic and/or
              the various double dash options given below.

       -apple Create an ISO9660 CD with Apple's extensions. Simi-
              lar to the  -hfs  option,  except  that  the  Apple
              Extensions to ISO9660 are added instead of creating
              an HFS hybrid volume.

       -map mapping_file
              Use the mapping_file to set the  CREATOR  and  TYPE
              information  for  a  file  based  on the filename's
              extension. A filename is mapped only if it  is  not
              one  of  the  know Apple/Unix file formats. See the
              HFS CREATOR/TYPE section below.

       -magic magic_file
              The CREATOR and TYPE information is set by using  a
              file's magic number (usually the first few bytes of
              a file). The magic_file is only used if a  file  is
              not  one  of  the known Apple/Unix file formats, or
              the filename extension has not  been  mapped  using
              the  -map  option. See the HFS CREATOR/TYPE section
              below for more details.

       -hfs-creator CREATOR
              Set the default CREATOR  for  all  files.  Must  be
              exactly 4 characters. See the HFS CREATOR/TYPE sec-
              tion below for more details.

       -hfs-type TYPE
              Set the default TYPE for all files. Must be exactly
              4  characters.  See  the  HFS  CREATOR/TYPE section
              below for more details.

       -probe Search the contents of  files  for  all  the  known
              Apple/Unix  file  formats.   See  the HFS MACINTOSH
              FILE FORMATS section below  for  more  about  these
              formats.  However, the only way to check for MacBi-
              nary and AppleSingle files  is  to  open  and  read
              them. Therefore this option may increase processing
              time. It is better to use one or more  double  dash
              options  given  below  if the Apple/Unix formats in
              use are known.

       -no-desktop
              Do not create (empty) Desktop files. New HFS  Desk-
              top  files will be created when the CD is used on a
              Macintosh (and stored in the  System  Folder).   By

       -part  Generate  an  HFS  partition  table. By default, no
              partition table is generated, but some older Macin-
              tosh  CDROM  drivers need an HFS partition table on
              the CDROM to be able to recognize a hybrid CDROM.

       -auto AutoStart_file
              Make the HFS CD use  the  QuickTime  2.0  Autostart
              feature  to  launch an application or document. The
              given filename must be the name of  a  document  or
              application located at the top level of the CD. The
              filename must be less than 12 characters.  (Alpha).

       -cluster-size size
              Set  the size in bytes of the cluster or allocation
              units of PC Exchange files. Implies the  --exchange
              option.  See the HFS MACINTOSH FILE FORMATS section
              below.

       -hide-hfs glob
              Hide glob from the HFS volume. The file  or  direc-
              tory  will still exist in the ISO9660 and/or Joliet
              directory.  glob is a shell wild-card-style pattern
              that  must  match any part of the filename Multiple
              globs may be excluded.  Example:

              mkisofs -o rom -hfs -hide-hfs '*.o' -hide-hfs  foo-
              bar

              would  exclude  all  files ending in ".o" or called
              "foobar" from the HFS volume. Note that if you  had
              a  directory  called "foobar" it too (and of course
              all its descendants) would be excluded.   The  glob
              can  also  be  a  path  name relative to the source
              directories given on the command line. Example:

              mkisofs -o rom -hfs -hide-hfs src/html src

              would exclude just the  file  or  directory  called
              "html"  from the "src" directory. Any other file or
              directory called "html" in the  tree  will  not  be
              excluded.   Should  be  used  with the -hide and/or
              -hide-joliet options.  In order to match  a  direc-
              tory  name, make sure the pathname does not include
              a trailing '/' character. See README.hide for  more
              details.

       -hide-hfs-list file
              A  file  containing a list of globs to be hidden as
              above.

       -hfs-volid hfs_volid
              Volume name for the HFS partition. This is the name
              folder View etc. for the root folder of an HFS vol-
              ume.  See  README.rootinfo  for  more  information.
              (Alpha)

       -prep-boot FILE
              PReP  boot  image  file.  Up  to 4 are allowed. See
              README.prep_boot (Alpha)

       -input-hfs-charset charset
              Input charset that defines the characters  used  in
              HFS file names when used with the -mac-name option.
              The default charset is cp10000 (Mac Roman)  cp10000
              (Mac  Roman)  See  CHARACTER SETS and HFS MACINTOSH
              FILE NAMES sections below for more details.

       -output-hfs-charset charset
              Output charset that  defines  the  characters  that
              will be used in the HFS file names. Defaults to the
              input charset. See CHARACTER SETS section below for
              more details.

       -hfs-unlock
              By  default, mkisofs will create an HFS volume that
              is locked.  This option leaves the volume  unlocked
              so  that  other  applications  (e.g.  hfsutils) can
              modify the volume. See the HFS PROBLEMS/LIMITATIONS
              section below for warnings about using this option.

       -hfs-bless folder_name
              "Bless" the given directory (folder). This is  usu-
              ally  the System Folder and is used in creating HFS
              bootable CDs. The name of the directory must be the
              whole  path  name  as  mkisofs sees it. e.g. if the
              given pathspec is ./cddata and the required  folder
              is  called  System Folder, then the whole path name
              is "./cddata/System Folder" (remember to use quotes
              if the name contains spaces).

       -hfs-parms PARAMETERS
              Override  certain parameters used to create the HFS
              file system. Unlikely to be used in normal  circum-
              stances.  See  the  libhfs_iso/hybrid.h source file
              for details.

       --cap  Look for AUFS CAP Macintosh files. Search  for  CAP
              Apple/Unix  file  formats  only.  Searching for the
              other possible Apple/Unix file formats is disabled,
              unless other double dash options are given.

       --netatalk
              Look for NETATALK Macintosh files

       --xinet
              Look for XINET Macintosh files

       --macbin
              Look for MacBinary Macintosh files

       --single
              Look for AppleSingle Macintosh files

       --dave Look  for  Thursby  Software Systems DAVE Macintosh
              files

       --sfm  Look for Microsoft's Services for  Macintosh  files
              (NT only) (Alpha)

       --osx-double
              Look for MacOS X AppleDouble Macintosh files

       --osx-hfs
              Look for MacOS X HFS Macintosh files

CHARACTER SETS

       mkisofs  processes  file names in a POSIX compliant way as
       strings of 8-bit characters.  To represent all codings for
       all  languages,  8-bit characters are not sufficient. Uni-
       code or ISO-10646 define character codings  that  need  at
       least  21  bits to represent all known languages. They may
       be  represented  with  UTF-32,  UTF-16  or  UTF-8  coding.
       UTF-32  uses  a plain 32-bit coding but seems to be uncom-
       mon.  UTF-16 is used by Microsoft with Win32 with the dis-
       advantage  that it only supports a subset of all codes and
       that 16-bit characters are not compliant  with  the  POSIX
       filesystem interface.

       Modern  UNIX  operating  systems  may use UTF-8 coding for
       filenames. This coding allows to use the complete  Unicode
       code  set.  Each 32-bit character is represented by one or
       more  8-bit  characters.   If  a  character  is  coded  in
       ISO-8859-1  (used  in Central Europe and North America) is
       maps 1:1 to a UTF-32 or UTF-16  coded  Unicode  character.
       If  a  character  is coded in 7-Bit ASCII (used in USA and
       other countries with limted character set) is maps 1:1  to
       a  UTF-32, UTF-16 or UTF-8 coded Unicode character.  Char-
       acter codes that cannot be represented as a single byte in
       UTF-8  (typically  if  the  value  is  >  0x7F) use escape
       sequences that map to more than one 8-bit character.

       If all operating systems would use UTF-8  coding,  mkisofs
       would not need to recode characters in file names.  Unfor-
       tunately, Apple uses completely  nonstandard  codings  and
       Microsoft  uses  a  Unicode  coding that is not compatible
       only allow 0xa0-0xff for other characters.

       As there is a lot more than 256 characters/symbols in use,
       only  a  small  subset are represented in a character set.
       Therefore the same character code may represent a  differ-
       ent  character in different character sets. So a file name
       generated, say in central Europe, may not display the same
       character when viewed on a machine in, say eastern Europe.

       To make matters more complicated, different operating sys-
       tems  use  different character sets for the region or lan-
       guage. For example the character code for  "small  e  with
       acute  accent"  may  be  character code 0x82 on a PC, code
       0x8e on a Macintosh and code 0xe9 on a UNIX system.   Note
       while  the  codings  used  on a PC or Mac are nonstandard,
       Unicode codes this  character  as  0x00000000e9  which  is
       basically  the  same  value as the value used by most UNIX
       systems.

       As long as not all operating systems and applications will
       use  the Unicode character set as the basis for file names
       in a unique way, it may  be  necessary  to  specify  which
       character  set  your file names use in and which character
       set the file names should appear on the CD.

       There are four options to specify the character  sets  you
       want to use:

       -input-charset
              Defines  the  local  character set you are using on
              your host machine.  Any character  set  conversions
              that  take place will use this character set as the
              staring point. The default input character sets are
              cp437  on  DOS  based  systems and iso8859-1 on all
              other systems.

              If the -J option is given, then the Unicode equiva-
              lents  of  the  input character set will be used in
              the Joliet directory. Using the -jcharset option is
              the   same  as  using  the  -input-charset  and  -J
              options.

       -output-charset
              Defines the character set that will  be  used  with
              for the Rock Ridge names on the CD. Defaults to the
              input character set. Only likely to  be  useful  if
              used  on a non-Unix platform. e.g. using mkisofs on
              a Microsoft Win32 machine to create Rock Ridge CDs.
              If  you  are using mkisofs on a Unix machine, it is
              likely that the output character set  will  be  the
              same as the input character set.

       There  are a number of character sets built in to mkisofs.
       To get a listing, use mkisofs -input-charset help.

       Additional character sets can be read from file for any of
       the  character  set  options  by  giving a filename as the
       argument to the options. The given file will only be  read
       if  its  name does not match one of the built in character
       sets.

       The format of the character set files is the same  as  the
       mapping  files  available from http://www.unicode.org/Pub-
       lic/MAPPINGS The format of these files is:

            Column #1 is the input byte code (in hex as 0xXX)
            Column #2 is the Unicode (in hex as 0xXXXX)
            Rest of the line is ignored.

       Any blank line, line without two (or more) columns in  the
       above  format or comments lines (starting with the # char-
       acter) are ignored without any warnings. Any missing input
       code is mapped to Unicode character 0x0000.

       Note  that there is no support for 16 bit UNICODE (UTF-16)
       or 32 bit UNICODE (UTF-32) coding because this  coding  is
       not  POSIX  compliant.  There  should be support for UTF-8
       UNICODE coding which is compatible to POSIX filenames  and
       supported by moder UNIX implementations such as Solaris.

       A  1:1  character  set mapping can be defined by using the
       keyword default as the argument to any  of  the  character
       set  options.  This is the behaviour of older (v1.12) ver-
       sions of mkisofs.

       The ISO9660 file names generated from the input  filenames
       are  not  converted  from  the  input  character  set. The
       ISO9660 character set is a  very  limited  subset  of  the
       ASCII characters, so any conversion would be pointless.

       Any  character  that  mkisofs  can  not  convert  will  be
       replaced with a '_' character.

HFS CREATOR/TYPE

       A Macintosh file has two  properties  associated  with  it
       which  define which application created the file, the CRE-
       ATOR and what data the file contains, the TYPE.  Both  are
       (exactly)  4  letter strings. Usually this allows a Macin-
       tosh user to double-click on a file and launch the correct
       application etc. The CREATOR and TYPE of a particular file
       can be found by using something like ResEdit (or  similar)
       on a Macintosh.

       found  then  the  default CREATOR and TYPE for all regular
       files can be set by using entries in the  .mkisofsrc  file
       or using the -hfs-creator and/or -hfs-type options, other-
       wise the default CREATOR and TYPE are 'unix' and 'TEXT'.

       The format of the mapping file is the same afpfile  format
       as  used  by  aufs.   This  file  has five columns for the
       extension, file translation, CREATOR,  TYPE  and  Comment.
       Lines  starting  with  the '#' character are comment lines
       and are ignored. An example file would be like:

       # Example filename mapping file
       #
       # EXTN   XLate   CREATOR   TYPE     Comment
       .tif     Raw     '8BIM'    'TIFF'   "Photoshop TIFF image"
       .hqx     Ascii   'BnHq'    'TEXT'   "BinHex file"
       .doc     Raw     'MSWD'    'WDBN'   "Word file"
       .mov     Raw     'TVOD'    'MooV'   "QuickTime Movie"
       *        Ascii   'ttxt'    'TEXT'   "Text file"

       Where:

              The first column EXTN  defines  the  Unix  filename
              extension to be mapped. The default mapping for any
              filename extension that doesn't  match  is  defined
              with the "*" character.

              The  Xlate column defines the type of text transla-
              tion between the Unix  and  Macintosh  file  it  is
              ignored  by  mkisofs,  but is kept to be compatible
              with aufs(1).  Although mkisofs does not alter  the
              contents  of a file, if a binary file has it's TYPE
              set as 'TEXT', it may be read incorrectly on a Mac-
              intosh.  Therefore  a better choice for the default
              TYPE may be '????'

              The CREATOR and TYPE keywords must be 4  characters
              long and enclosed in single quotes.

              The comment field is enclosed in double quotes - it
              is ignored by mkisofs, but is kept to be compatible
              with aufs.

       The  format  of  the magic file is almost identical to the
       magic(4) file used by the Linux file(1) command - the rou-
       tines for reading and decoding the magic file are based on
       the Linux file(1) command.

       This file has four tab separated columns for the byte off-
       set,  type, test and message.  Lines starting with the '#'
       character are comment lines and are  ignored.  An  example
       file would be like:

       The  format  of  the file is described in the magic(4) man
       page. The only difference here is that for each  entry  in
       the magic file, the message for the initial offset must be
       4 characters for the CREATOR followed by 4 characters  for
       the TYPE - white space is optional between them. Any other
       characters on this line are ignored.   Continuation  lines
       (starting  with a '>') are also ignored i.e. only the ini-
       tial offset lines are used.

       Using the -magic option may  significantly  increase  pro-
       cessing  time  as each file has to opened and read to find
       it's magic number.

       In summary, for all files, the default CREATOR  is  'unix'
       and  the  default TYPE is 'TEXT'.  These can be changed by
       using entries in the .mkisofsrc file or by using the -hfs-
       creator and/or -hfs-type options.

       If  the  a  file is in one of the known Apple/Unix formats
       (and the format has been selected), then the  CREATOR  and
       TYPE  are  taken  from the values stored in the Apple/Unix
       file.

       Other files can have their CREATOR and TYPE set from their
       file name extension (the -map option), or their magic num-
       ber (the -magic option). If the default match is  used  in
       the  mapping  file, then these values override the default
       CREATOR and TYPE.

       A   full   CREATOR/TYPE   database   can   be   found   at
       http://www.angelfire.com/il/szekely/index.html

HFS MACINTOSH FILE FORMATS

       Macintosh  files  have  two  parts  called  the  Data  and
       Resource fork. Either may be empty. Unix (and  many  other
       OSs)  can  only cope with files having one part (or fork).
       To  add  to  this,  Macintosh  files  have  a  number   of
       attributes associated with them - probably the most impor-
       tant are the TYPE and CREATOR. Again Unix has  no  concept
       of these types of attributes.

       e.g.  a Macintosh file may be a JPEG image where the image
       is stored in the Data fork and a desktop thumbnail  stored
       in the Resource fork. It is usually the information in the
       data fork that is useful across platforms.

       Therefore to store a Macintosh file on a Unix  filesystem,
       a  way  has to be found to cope with the two forks and the
       extra attributes (which are  referred  to  as  the  finder
       info).   Unfortunately, it seems that every software pack-
              a file with same name  prefixed  with  "%".  Finder
              info  also  stored  in same "%" file. Netatalk uses
              the same format, but the  resource  fork/finderinfo
              stored  in subdirectory .AppleDouble with same name
              as data fork.

       AppleSingle
              Data structures similar to above, except both forks
              and finder info are stored in one file.

       Helios EtherShare
              Data  fork  stored  in  a  file.  Resource fork and
              finder info together  in  subdirectory  .rsrc  with
              same filename as data fork.

       IPT UShare
              Very  similar  to  the  EtherShare  format, but the
              finder info is stored slightly differently.

       MacBinary
              Both forks and finder info stored in one file.

       Apple PC Exchange
              Used by Macintoshes to store  Apple  files  on  DOS
              (FAT)  disks.  Data fork stored in a file. Resource
              fork    in    subdirectory     resource.frk     (or
              RESOURCE.FRK).  Finder  info  as one record in file
              finder.dat (or FINDER.DAT). Separate finder.dat for
              each data fork directory.

              Note:  mkisofs needs to know the native FAT cluster
              size of the disk that the PC Exchange files are  on
              (or  have  been copied from). This size is given by
              the -cluster-size option.  The cluster  or  alloca-
              tion  size  can  be  found by using the DOS utility
              CHKDSK.

              May not work with PC Exchange v2.2 or higher  files
              (available  with  MacOS 8.1).  DOS media containing
              PC Exchange files should be mounted as  type  msdos
              (not vfat) when using Linux.

       SGI/XINET
              Used  by  SGI  machines  when they mount HFS disks.
              Data fork stored in a file. Resource fork in subdi-
              rectory  .HSResource with same name. Finder info as
              one record in file .HSancillary. Separate .HSancil-
              lary for each data fork directory.

       Thursby Software Systems DAVE
              Allows  Macintoshes  to  store  Apple  files on SMB
              servers.  Data fork stored in a file. Resource fork
              name, then NT converts these characters to  Private
              Use Unicode characters. The characters are: " * / <
              > ?  | also a space or period if  it  is  the  last
              character of the file name, character codes 0x01 to
              0x1f (control characters) and Apple' apple logo.

              Unfortunately, these private Unicode characters are
              not  readable  by the mkisofs NT executable. There-
              fore any file or directory  name  containing  these
              characters will be ignored - including the contents
              of any such directory.

       MacOS X AppleDouble
              When HFS/HFS+ files are copied or saved by MacOS  X
              on  to  a non-HFS file system (e.g. UFS, NFS etc.),
              the files are stored in AppleDouble  format.   Data
              fork  stored  in  a file. Resource fork stored in a
              file with same name prefixed with "._". Finder info
              also stored in same "._" file.

       MacOS X HFS (Alpha)
              Not  really  an  Apple/Unix  encoding,  but  actual
              HFS/HFS+ files on  a  MacOS  X  system.  Data  fork
              stored  in a file. Resource fork stored in a pseudo
              file with the same name with  the  suffix  '/rsrc'.
              The  finderinfo  is  only  available  via a MacOS X
              library call.

              Notes: (also see README.macosx)

              Only works when used on MacOS X.

              If a file is found with a zero length resource fork
              and empty finderinfo, it is assumed not to have any
              Apple/Unix encoding - therefore a TYPE and  CREATOR
              can be set using other methods.

       mkisofs  will  attempt  to set the CREATOR, TYPE, date and
       possibly other flags from the finder  info.  Additionally,
       if  it  exists,  the  Macintosh  filename  is set from the
       finder info, otherwise the Macintosh name is based on  the
       Unix  filename  - see the HFS MACINTOSH FILE NAMES section
       below.

       When using the -apple option, the  TYPE  and  CREATOR  are
       stored  in  the  optional  System Use or SUSP field in the
       ISO9660 Directory Record - in much the  same  way  as  the
       Rock  Ridge attributes are. In fact to make life easy, the
       Apple extensions are added at the beginning of the  exist-
       ing  Rock  Ridge  attributes (i.e. to get the Apple exten-
       sions you get the Rock Ridge extensions as well).

       In most cases, it is better to use the -hfs option instead
       of  the  -apple  option, as the latter imposes the limited
       ISO9660 characters  allowed  in  filenames.  However,  the
       Apple  extensions do give the advantage that the files are
       packed on the disk more efficiently and it may be possible
       to  fit more files on a CD - important when the total size
       of the source files is approaching 650MB.

HFS MACINTOSH FILE NAMES

       Where possible, the HFS filename that is  stored  with  an
       Apple/Unix  file  is used for the HFS part of the CD. How-
       ever, not all the Apple/Unix encodings store the HFS file-
       name  with  the finderinfo. In these cases, the Unix file-
       name is used - with escaped  special  characters.  Special
       characters include '/' and characters with codes over 127.

       Aufs escapes these characters by using ":" followed by the
       character  code as two hex digits. Netatalk and EtherShare
       have a similar scheme, but uses "%" instead of a ":".

       If mkisofs can't find an HFS filename, then  it  uses  the
       Unix  name,  with any %xx or :xx characters (xx == two hex
       digits) converted to a single character code. If "xx"  are
       not  hex  digits ([0-9a-fA-F]), then they are left alone -
       although any remaining ":" is converted to "%" as colon is
       the  HFS  directory  separator.  Care must be taken, as an
       ordinary Unix file with %xx or :xx will also be converted.
       e.g.

       This:2fFile   converted to This/File

       This:File     converted to This%File

       This:t7File   converted to This%t7File

       Although  HFS  filenames appear to support upper and lower
       case letters, the filesystem is case insensitive. i.e. the
       filenames "aBc" and "AbC" are the same. If a file is found
       in a directory with the same HFS name, then  mkisofs  will
       attempt,  where  possible, to make a unique name by adding
       '_' characters to one of the filenames.

       If an HFS filename exists for a file, then mkisofs can use
       this  name  as  the starting point for the ISO9660, Joliet
       and Rock Ridge filenames using the -mac-name option.  Nor-
       mal  Unix  files  without an HFS name will still use their
       Unix name.  e.g.

       If a MacBinary (or PC Exchange) file is stored as  someim-
       age.gif.bin  on  the  Unix  filesystem, but contains a HFS
       file called someimage.gif, then  this  is  the  name  that
       The  character  set used to convert any HFS file name to a
       Joliet/Rock Ridge  file  name  defaults  to  cp10000  (Mac
       Roman).  The character set used can be specified using the
       -input-hfs-charset option. Other built  in  HFS  character
       sets   are:  cp10006  (MacGreek),  cp10007  (MacCyrillic),
       cp10029 (MacLatin2), cp10079 (MacIcelandandic) and cp10081
       (MacTurkish).

       Note:  the  character  codes  used by HFS file names taken
       from the various Apple/Unix formats will not be  converted
       as  they  are assumed to be in the correct Apple character
       set. Only the Joliet/Rock Ridge names derived from the HFS
       file names will be converted.

       The  existing  mkisofs  code  will  filter out any illegal
       characters for the ISO9660 and Joliet  filenames,  but  as
       mkisofs expects to be dealing directly with Unix names, it
       leaves the Rock Ridge names as is.  But as '/' is a  legal
       HFS  filename character, the -mac-name option converts '/'
       to a '_' in Rock Ridge filenames.

       If the Apple extensions are used, then  only  the  ISO9660
       filenames  will  appear  on the Macintosh. However, as the
       Macintosh ISO9660 drivers can use Level 2 filenames,  then
       you  can use options like -allow-multidot without problems
       on a Macintosh - still take care over the names, for exam-
       ple  this.file.name  will  be  converted to THIS.FILE i.e.
       only have one '.', also filename abcdefgh will be seen  as
       ABCDEFGH  but  abcdefghi  will be seen as ABCDEFGHI.  i.e.
       with a '.' at the end - don't know if this is a  Macintosh
       problem or mkisofs/mkhybrid problem. All filenames will be
       in uppercase  when  viewed  on  a  Macintosh.  Of  course,
       DOS/Win3.X  machines will not be able to see Level 2 file-
       names...

HFS CUSTOM VOLUME/FOLDER ICONS

       To give a HFS CD a custom icon, make sure  the  root  (top
       level)  folder  includes  a standard Macintosh volume icon
       file. To give a volume a custom icon on  a  Macintosh,  an
       icon  has  to be pasted over the volume's icon in the "Get
       Info" box of the volume. This creates  an  invisible  file
       called  'Icon\r' ('\r' is the 'carriage return' character)
       in the root folder.

       A custom folder icon is very similar - an  invisible  file
       called 'Icon\r' exits in the folder itself.

       Probably  the  easiest  way  to  create a custom icon that
       mkisofs can use, is to format a blank HFS floppy disk on a
       Mac,  paste  an icon to its "Get Info" box. If using Linux
       with the HFS module  installed,  mount  the  floppy  using
                  hmount /dev/fd0
                  hdir -a
                  hcopy -m Icon^V^M icon_dir/icon

       Where  '^V^M' is control-V followed by control-M. Then run
       mkisofs by using something like:

                  mkisofs --macbin -o output source_dir icon_dir

       The procedure for creating/using custom  folder  icons  is
       very  similar  -  paste an icon to folder's "Get Info" box
       and transfer the resulting 'Icon\r' file to  the  relevant
       directory in the mkisofs source tree.

       You  may  want to hide the icon files from the ISO9660 and
       Joliet trees.

       To give a custom icon to a Joliet CD, follow the  instruc-
       tions       found      at:      http://www.fadden.com/cdr-
       faq/faq03.html#[3-21]

HFS BOOT DRIVER

       It may be possible to make the hybrid  CD  bootable  on  a
       Macintosh.

       A bootable HFS CD requires an Apple CD-ROM (or compatible)
       driver, a bootable HFS partition and the necessary System,
       Finder, etc. files.

       A driver can be obtained from any other Macintosh bootable
       CD-ROM using the apple_driver utility. This file can  then
       be used with the -boot-hfs-file option.

       The  HFS partition (i.e. the hybrid disk in our case) must
       contain a suitable System Folder, again from  another  CD-
       ROM or disk.

       For  a  partition  to  be bootable, it must have it's boot
       block set. The boot block is in the first two blocks of  a
       partition.  For a non-bootable partition the boot block is
       full of zeros. Normally, when a System file is  copied  to
       partition  on  a  Macintosh disk, the boot block is filled
       with a number of required settings - unfortunately I don't
       know  the  full  spec  for the boot block, so I'm guessing
       that the following will work OK.

       Therefore, the utility apple_driver also extracts the boot
       block  from  the first HFS partition it finds on the given
       CD-ROM and this is used for the HFS partition  created  by
       mkisofs.

       The format of this table is as follows; all  integers  are
       in section 7.3.1 ("little endian") format.

         Offset    Name           Size      Meaning
          8        bi_pvd         4 bytes   LBA of primary volume descriptor
         12        bi_file        4 bytes   LBA of boot file
         16        bi_length      4 bytes   Boot file length in bytes
         20        bi_csum        4 bytes   32-bit checksum
         24        bi_reserved    40 bytes  Reserved

       The  32-bit checksum is the sum of all the 32-bit words in
       the boot file starting at  byte  offset  64.   All  linear
       block  addresses  (LBAs) are given in CD sectors (normally
       2048 bytes).

CONFIGURATION

       mkisofs looks for the .mkisofsrc file, first in  the  cur-
       rent working directory, then in the user's home directory,
       and then in the directory in which the mkisofs  binary  is
       stored.  This file is assumed to contain a series of lines
       of the form TAG=value, and in this  way  you  can  specify
       certain  options.  The case of the tag is not significant.
       Some fields in the volume header are not settable  on  the
       command  line,  but  can be altered through this facility.
       Comments may be placed in this  file,  using  lines  which
       start with a hash (#) character.

       APPI   The  application  identifier  should  describe  the
              application that will be on  the  disc.   There  is
              space  on  the  disc for 128 characters of informa-
              tion.  May be overridden using the -A command  line
              option.

       COPY   The copyright information, often the name of a file
              on the disc containing the copyright notice.  There
              is  space in the disc for 37 characters of informa-
              tion.  May be overridden using the -copyright  com-
              mand line option.

       ABST   The  abstract information, often the name of a file
              on the disc containing an abstract.  There is space
              in  the disc for 37 characters of information.  May
              be overridden  using  the  -abstract  command  line
              option.

       BIBL   The  bibliographic information, often the name of a
              file on the disc containing a bibliography.   There
              is  space in the disc for 37 characters of informa-
              tion.  May be overridden using the  -bilio  command
              line option.

              den using the -sysid command line option.

       VOLI   The  Volume Identifier.  There is space on the disc
              for 32 characters of information.  May be  overrid-
              den using the -V command line option.

       VOLS   The  Volume  Set  Name.  There is space on the disc
              for 128 characters of information.  May be overrid-
              den using the -volset command line option.

       HFS_TYPE
              The  default  TYPE  for  Macintosh  files.  Must be
              exactly 4 characters.  May be overridden using  the
              -hfs-type command line option.

       HFS_CREATOR
              The  default  CREATOR  for Macintosh files. Must be
              exactly 4 characters.  May be overridden using  the
              -hfs-creator command line option.

       mkisofs  can  also  be  configured  at  compile  time with
       defaults  for  many  of  these  fields.   See   the   file
       defaults.h.

EXAMPLES

       To  create a vanilla ISO-9660 filesystem image in the file
       cd.iso, where the directory cd_dir will  become  the  root
       directory if the CD, call:

       % mkisofs -o cd.iso cd_dir

       To  create  a  CD with Rock Ridge extensions of the source
       directory cd_dir:

       % mkisofs -o cd.iso -R cd_dir

       To create a CD with Rock Ridge extensions  of  the  source
       directory  cd_dir  where all files have at least read per-
       mission and all files are owned by root, call:

       % mkisofs -o cd.iso -r cd_dir

       To create a HFS hybrid CD with the Joliet and  Rock  Ridge
       extensions of the source directory cd_dir:

       % mkisofs -o cd.iso -R -J -hfs cd_dir

       To create a HFS hybrid CD from the source directory cd_dir
       that contains Netatalk Apple/Unix files:

       % mkisofs -o cd.iso --netatalk cd_dir
               cd_dir another_dir

       The following example puts different files on the CD  that
       all have the name README, but have different contents when
       seen as a ISO9660/RockRidge, Joliet or HFS CD.

       Current directory contains:

       % ls -F
       README.hfs     README.joliet  README.unix    cd_dir/

       The following command puts the contents of  the  directory
       cd_dir  on  the CD along with the three README files - but
       only one will be seen from each of the three filesystems:

       % mkisofs -o cd.iso -hfs -J -r -graft-points \
               -hide README.hfs -hide README.joliet \
               -hide-joliet README.hfs -hide-joliet README.unix \
               -hide-hfs README.joliet -hide-hfs README.unix \
               README=README.hfs README=README.joliet \
               README=README.unix cd_dir

       i.e. the file README.hfs will be seen as README on the HFS
       CD and the other two README files will  be  hidden.  Simi-
       larly for the Joliet and ISO9660/RockRidge CD.

       There  are  probably all sorts of strange results possible
       with combinations of the hide options ...

AUTHOR

       mkisofs is not based on the standard mk*fs tools for unix,
       because  we  must generate a complete  copy of an existing
       filesystem on a disk in the  iso9660 filesystem.  The name
       mkisofs is probably a bit of a misnomer, since it not only
       creates the filesystem, but it also populates it as  well.
       However,  the  appropriate  tool name for a UNIX tool that
       creates populated filesystems -  mkproto  -  is  not  well
       known.

       Eric       Youngdale       <ericy@gnu.ai.mit.edu>       or
       <eric@andante.org> wrote  the  first  versions  (1993  ...
       1998)  of the mkisofs utility.  The copyright for old ver-
       sions of the mkisofs utility is held by Yggdrasil  Comput-
       ing,  Incorporated.  Joerg Schilling wrote the SCSI trans-
       port library and it's  adaptation  layer  to  mkisofs  and
       newer  parts  (starting  from  1999)  of the utility, this
       makes  mkisofs  Copyright  (C)  1999,  2000,  2001   Joerg
       Schilling.

       HFS  hybrid  code  Copyright (C) James Pearson 1997, 1998,
       1999, 2000, 2001
       not avoid this directory.

BUGS

       o      Any files that have hard links to files not in  the
              tree  being  copied  to the iso9660 filesystem will
              have an incorrect file reference count.

       o      Does not check for SUSP record(s) in "."  entry  of
              the  root directory to verify the existence of Rock
              Ridge enhancements.

              This problem is present when reading  old  sessions
              while adding data in multi-session mode.

       o      Does  not  properly  read  relocated directories in
              multi-session mode when adding data.

              Any relocated deep directory is  lost  if  the  new
              session does not include the deep directory.

              Repeat by: create first session with deep directory
              relocation then add new session with a  single  dir
              that differs from the old deep path.

       o      Does  not  re-use RR_MOVED when doing multi-session
              from TRANS.TBL

       o      Does not create whole_name entry  for  RR_MOVED  in
              multi-session mode.

       There  may be some other ones.  Please, report them to the
       author.

HFS PROBLEMS/LIMITATIONS

       I have had to make several assumptions on how I expect the
       modified  libhfs  routines  to  work, however there may be
       situations that either  I  haven't  thought  of,  or  come
       across  when  these  assumptions  fail.  Therefore I can't
       guarantee that mkisofs will work as expected  (although  I
       haven't had a major problem yet). Most of the HFS features
       work fine, however, some are not fully tested.  These  are
       marked as Alpha above.

       Although  HFS  filenames appear to support upper and lower
       case letters, the filesystem is case insensitive. i.e. the
       filenames "aBc" and "AbC" are the same. If a file is found
       in a directory with the same HFS name, then  mkisofs  will
       attempt,  where  possible, to make a unique name by adding
       '_' characters to one of the filenames.

       HFS file/directory names that share the first  31  charac-
       can  graft Apple/Unix encoded files or directories as long
       as you do not attempt to give them new names as above.

       When creating an HFS volume with the multisession options,
       -M  and  -C, only files in the last session will be in the
       HFS volume. i.e. mkisofs can not add existing  files  from
       previous sessions to the HFS volume.

       However, if each session is created with the -part option,
       then each session will appear  as  separate  volumes  when
       mounted  on  a Mac. In this case, it is worth using the -V
       or -hfs-volid option to give each session a unique  volume
       name,  otherwise  each "volume" will appear on the Desktop
       with the same name.

       Symbolic links (as with all other non-regular  files)  are
       not added to the HFS directory.

       Hybrid  volumes  may  be  larger than pure ISO9660 volumes
       containing the same data. In some cases  (e.g.  DVD  sized
       volumes) the hybrid volume may be significantly larger. As
       an HFS volume gets bigger, so does  the  allocation  block
       size  (the  smallest  amount  of space a file can occupy).
       For a 650Mb CD, the allocation block is 10Kb, for a  4.7Gb
       DVD it will be about 70Kb.

       The  maximum  number  of  files  in an HFS volume is about
       65500 - although the real limit will be somewhat less than
       this.

       The  resulting  hybrid  volume  can  be accessed on a Unix
       machine  by  using  the  hfsutils  routines.  However,  no
       changes  can be made to the volume as it is set as locked.
       The option -hfs-unlock will create an output image that is
       unlocked  -  however no changes should be made to the con-
       tents of the volume (unless you really know what  you  are
       doing) as it's not a "real" HFS volume.

       Using  the  -mac-name  option will not currently work with
       the -T option  -  the  Unix  name  will  be  used  in  the
       TRANS.TBL file, not the Macintosh name.

       Although mkisofs does not alter the contents of a file, if
       a binary file has it's TYPE set as 'TEXT', it may be  read
       incorrectly  on a Macintosh. Therefore a better choice for
       the default TYPE may be '????'

       The -mac-boot-file option may not work at all...

       May not work with PC Exchange v2.2 or higher files (avail-
       able  with  MacOS  8.1).  DOS media containing PC Exchange
       files should be mounted as  type  msdos  (not  vfat)  when
       cdrecord(1), mkzftree(1), magic(5), apple_driver(8).

FUTURE IMPROVEMENTS

       Some sort of gui interface.

AVAILABILITY

       mkisofs  is available as part of the cdrecord package from
       ftp://ftp.berlios.de/pub/cdrecord/

       hfsutils from ftp://ftp.mars.org/pub/hfs

       mkzftree is available as part of the zisofs-tools  package
       from ftp://ftp.kernel.org/pub/linux/utils/fs/zisofs/

MAILING LISTS

       If  you  want  to actively take part on the development of
       mkisofs, and/or mkhybrid, you may join the cdwriting mail-
       ing list by sending mail to:

                 other-cdwrite-request@lists.debian.org

       and  include  the  word  subscribe  in the body.  The mail
       address of the list is:

                 cdwrite@lists.debian.org

MAINTAINER

       Joerg Schilling
       Seestr. 110
       D-13353 Berlin
       Germany

HFS MKHYBRID MAINTAINER

       James Pearson

       j.pearson@ge.ucl.ac.uk

       If you have support questions, send them to:

       cdrecord-support@berlios.de
       or other-cdwrite@lists.debian.org

       Of you definitly found a bug, send a mail to:

       cdrecord-developers@berlios.de
       or schilling@fokus.fhg.de


readcd

Usage: readcd [options]
options:
-version print version information and exit
dev=target SCSI target to use
f=filename Name of file to read/write
sectors=range Range of sectors to read/write
speed=# set speed of drive (MMC only)
ts=# set maximum transfer size for a single SCSI command
-w Switch to write mode
-c2scan Do a C2 error scan
-fulltoc Retrieve the full TOC
-clone Retrieve the full TOC and all data
timeout=# set the default SCSI command timeout to #.
debug=#,-d Set to # or increment misc debug level
kdebug=#,kd=# do Kernel debugging
-quiet,-q be more quiet in error retry mode
-verbose,-v increment general verbose level by one
-Verbose,-V increment SCSI command transport verbose level by one
-silent,-s do not print status of failed SCSI commands
-scanbus scan the SCSI bus and exit
-noerror do not abort on error
-nocorr do not apply error correction in drive
-notrunc do not truncate outputfile in read mode
retries=# set retry count (default is 128)
-overhead meter SCSI command overhead times
meshpoints=# print read-speed at # locations
-factor try to use speed factor with meshpoints=# if possible

sectors=0-0 will read nothing, sectors=0-1 will read one sector starting from 0


sorting
Sort the order of file data on the CD
=====================================

Note: this option does not sort the order of the file names that appear
in the ISO9660 directory. It sorts the order in which the file data is
written to the CD image.

This option is useful in order to optimize the data layout on a CD.

To use, type something like:

mkisofs -o cdimage.iso -sort sort_file [other_options] cd_dir

The file 'sort_file' contains two columns of:

filename weight

where filename is the whole name of a file/directory as mkisofs will see it
and weight is a whole number between 2147483647

The files will be sorted with the highest weights first and lowest last.
The default weight is zero.

If the filename is a directory name, then all the files in that directory (and
sub-directories) will use its weight as their default weight.

e.g.

If the directory 'cd_dir' contains two directories called 'dir1' and 'dir2'
with files 'A', 'B' and 'C' in dir1 and 'X', 'Y' and 'Z', the the file
'sort_file' could look something like:

cd_dir/dir2 1000
cd_dir/dir2/Y 2000
cd_dir/dir1/B -2000
cd_dir/dir1/A -8000

Note: There must be only one space or tab character between the filename and
the weight and the weight must be the last characters on a line. The filename
is taken to include all the characters from the first in a line, up to, but
not including the last space or tab character on a line. This is to allow
for space characters to be in, or at the end of a filename.

The command:

mkisofs -o cdimage.iso -sort sort_file cd_dir

will sort the above file data as:

cd_dir/dir2/Y
cd_dir/dir2/X
cd_dir/dir2/Z
cd_dir/dir1/C
cd_dir/dir1/B
cd_dir/dir1/A

Note: files 'X' and 'Z' both have the weight 1000 - their sort order will then
be the normal ISO9660 sort order (i.e. alphabetical in this case).

File C will have the default weight of 0

Warning: the filenames in the sort list MUST match the whole path as seen by
mkisofs. i.e. in the above case, if the command line was:

mkisofs -o cdimage.iso -sort sort_file ./cd_dir

then the sort_file filename will have to changed as accordingly.

Notes
=====

CDs are written from the middle outwards. High weighted files will be nearer
the inside of the CD.

Wildcards in the filename list should work.

If a file appears more than once in the source directory tree, then the file
is only added once to the CD image - i.e. a hard linked file, or symbolic
link if using the -f option. The file will be sorted according to the
highest weighting given to any of the linked files.

Zero length files are not sorted - the 'start extent' *may* appear to be in
the middle of another file after sorting. This is because zero length files
are given the start extent after the last file added to the CD at that time.
This address is not changed by the sorting, so it may appear that the file
address is in another file - however as they are zero length, this will
not matter!

Directories are not sorted by this flag - directories HAVE to be in the
ISO9660 sort order - however, the files the directory entry points to, can be
anywhere on the CD.

Existing files from any previous sessions will not be sorted - they already
exist on the CD and can not be moved!

I have no idea if this is really useful ...

James Pearson 22-Nov-2001

Any comments/problems to j.pearson@ge.ucl.ac.uk


Case and Attributes

In some cases there is a need to change file/folder attributes, mostly to remove read-only attribute. You can do this in this module. You can also change file/folder name to uppercase or lowercase letters. Changing names to uppercase letters is needed in case of making BartPE cds (read the article from the forum).

Step 1: select folder in folder list
Step 2: select what to include (check boxes)
Step 3: press first ">>" button to fill the 2nd list with selected items
Step 4: select items (shift+left mouse, ctrl+left mouse, Select All button)
Step 5: press second ">>" button to fill last list with selected items
Step 6: now you can change files case, or change files attributes according to selected check boxes

Attenton: if some of the files or folders from last list are open or accessed from other application - they won't be renamed. If you remove all the attributes of files/folders they can be unaccessable from other apps.


CD operations

I bet you can figure it out in no time.
Finalize CD option will try to finalize un-finalized CDs (CDs without TOC) if you have CD than is burned unsuccessfully.
If "CD to ISO" function don't work for you - try similar function from Others module.
On Win9x platforms ASPI driver is required. I prefer this one: http://forceaspi18.w.interia.pl/ .
Don't interrupt "CD to ISO" operation. If you do, then use Task Manager and stop READCD process in order to have acces to unfinished ISO image file.


The_GUI 2.0

Start
Introduction
 Installation
First run
Modules
Case and Attr.
Layout Sorter
Make ISO
CD Operations
Other tools
Documents
mkisofs cygwin
 sorting
 mkisofs mingw32
 readcd
 cdrecord
 misc
Articles
The beginning
The first try
The 2nd try
 About sorting
 About uppercasing
Other
Links


Installing
There is no special installation process, you just need to put all the needed files in one folder.
Not all the needed files are included in the distribution, some of them because of licences, some because they are updated very often. Anyway, you need the following files:

- from The_GUI package http://members.chello.at/bobby100/:
- The_GUI.exe
- help.chm

- from Alex Kopylov's modified cdrtools package http://cdrtools.bootcd.ru/ (download Win32/Mingw32 version of cdrtools and unzip needed files):
- cdrecord.exe
- mkisofs.exe
- readcd.exe

- bbie.exe from Bart Lagerweij www.nu2.nu/bbie

- dd from http://unxutils.sourceforge.net/ . This one will be probably included in The_GUI distribution because the package is huge to download, and just a small file is needed.

Additionaly, in The_GUI package you can find sample files and The_GUI plugin for Bart's PEbuilder.

Make a folder and unzip all the files from the archives to that folder.

For Win9x series ASPI driver also needs to be installed: http://forceaspi18.w.interia.pl/ .


Layout sorter

Layout sorter makes sort lists for using with mkisofs. This lists explains to mkisofs in which order the files should be recorded to cd (sorted in ISO file).
Select folder in Folder list, now the files in that folder apears in File list. When you press Add to list button, if the file(s) is(are) selected (focused) - then file(s) will be added to the Weight edit list. If focus is on Folder list - folder will be added to Weight edit list.
Weight for first file to add is 0 by default. This can be changed in edit box under the File list. This Edit box is automaticaly updated according to weight of last file on the list and STEP parameter if specified. STEP parameter is also usefull by adding multiple files. STEP parameter can also have negative value.
Both fields in Edit list can be edited.
Function of the buttons on right side is obvious. Import/Export list works in conjuction with folder selected in Folder list.
By Export, select the root folder of your project and the drive letter and root folder name will be cuted down from exported list.
By Import, selected folder in Folder list will be added to begining of each line in list.

For more info and better understanding - read the article from the forum.


Links

Author's homepage:
http://members.chello.at/bobby100/
Mirror:
http://stud3.tuwien.ac.at/~e0227529/

Useful links:
http://syslinux.zytor.com - Isolinux/Syslinux by H. Peter Anvin
http://www.bootcd.narod.ru - Bootable CD Wizard by Reanimatolog
http://cdrtools.bootcd.ru/ - cdrtools Mingw32 port by Alex Kopylov
http://www.cdshell.org - CDShell by Michael K. Ter Louw
http://www.nu2.nu - PEBuilder and many other tools by Bart Lagerweij
http://unxutils.sourceforge.net/ - some unix utils ported to Win32 by K.M.Syring
http://www.911cd.net - 911 Boot CD by DoctorXP
http://www.911cd.net/forums/ - The CD Forum
http://www.msfn.org/board/ - MSFN forum


Make ISO

Use mkisofs documentation to find the meaning of options (see: Documents). This is too complicated to be explained here.
There was 3 versions of Make ISO module: for cygwin version of mkisofs, for mingw32 version of mkisofs and combo version.
Only difference was in making and handling linked (duplicated) files. In cygwin version you had to use DFL first, and then in Make ISO you had to select -cache inodes and -follow links. In mingw32 version from Alex Kopylov all this (DFL and corresponding options in Make ISO) is integrated in just one Make ISO option -duplicates-once. Cygwin version of mkisofs isn't supported in The_GUI anymore.

Batch file maded by this program isn't deleted after execution, you can find him in the folder where the root of your CD project is. The file is BUILD.BAT.


Other tools
Here you can extract boot sector from CD or from ISO image (bbie from Bart Lagerweij used). Boot sector will be saved in The_GUI folder.
You can also make 1:1 CD image (Win32 port of dd from Linux used).
Make floppy images and write them back to floppy (Win32 port of dd from Linux used). This option isn't very well implemented so only standard 1.44 mb floppy images can be written back to floppy (I'll try to improve this).


Where to start?
The_GUI is kind of application that needs some knowledge in order of get the most of the offered posibilities.
The_GUI don't pretend to be simple-to-use CD recording application. The_GUI's accent is on making bootable cds. Yes, you can do that with other applications, but the posibilities offered by mkisofs are unique, and they are not offered in any other application. The_GUI tries to bring those posibilities to you in the user-friendly manner.

Where to start?

Let's begin through an example.
First, make a folder that will be the root of your new CD. Use your favorite file manager for that. Now, put all the files you want to burn in that folder. If you are making bootable cd, then you have to follow folder structure rules for the kind of CD you are making, e.g. if you are making Isolinux bootable CD, you need to make folder named ISOLINUX and to put in isolinux.bin and isolinux.cfg files, etc... I don't want to go further with explanation on that, consult your bootloader's manual on folder structures and rules.
Now, start The_GUI and let's do something useful with it.
First, for some bootloaders you need to remove read-only attributes on some files, use "case and attributes" module for that.
If you are making WinPE (BartsPE) CDs, and you don't wan't to use original ISO-making tools, you may need to change file/folder names for some files/folders to uppercase. For this you can also use "case and attributes" module.
Next step would be optimization of files order on CD. If you are involved in making PE cds (WinPE, BartsPE), you have noticed long boot times. This can be optimized by telling to mkisofs.exe in which order to put the files in ISO file. If you know in which order the files are loaded from CD on boot, you can optimize the boot process by using "Layout sorter" module and SORT option in "Make ISO" module.
Next step in building your bootable cd would be making the ISO file. Use "Make ISO" module for that. This module is full with various options about filesystems you can use, infos that can be saved on CD, etc...
Explaining each option would take me my whole lifetime (because I'm bad in explaining, and specialy bad with English language). Please consult mkisofs documents included in this helpfile about mkisofs options. If that wasn't real help, please take a look at links section, you can find a couple of useful links there.
After building ISO file, you can burn it to the CD by using "CD operations" module. In this module you can also find a couple of other helpful functions. I hope I don't nees to explain them.
Last module is "Other". Here you can do some operations about boot sectors and boot images. You surely know that bootable cds are containing boot loaders or boot images (images of ordinary floppys). Here you can extract boot sectors, make images from floppys, write those images back to floppys, etc.

The_GUI modes:

Click on The_GUI icon to start program in normal mode. In normal mode no temporary files are used, so this mode can be used to start The_GUI from read-only media or from r/w media if no log files are needed.
There are also a couple of command line switches:
-win98 -- run The_GUI in Win9x compatibility mode. Temp files are used because Win9x cann't handle more than 64kb buffers for some components. For this mode The_GUI needs to be started from r/w media.
-debug -- run The_GUI in debug mode. Same as checking "Debug this session" on the program's first screen.
-win98debug -- run The_GUI in debug mode with Win9x compatibility. For this mode The_GUI needs to be started from r/w media.