Sunday, 23 March 2014

Easy2Boot and DOS-based ISOs

I was recently asked to get a DOS-based ISO to work with Easy2Boot. This ISO contained a DOS version of Ghost and an XP .gho image (amongst other things). It was also in Chinese which didn't help!

This was not easy to get working as an ISO because the DOS Autoexec.bat file was written to load a CD-ROM driver and map the 'CD-ROM' to a drive letter. If we boot from an ISO file however, there is no 'CD-ROM' drive with files on it and so the autoexec.bat file will fail.

The ISO file in question had a \boot folder that contained a DOS.IMA floppy image file. It was this file that was run when the ISO (or CD) was booted. To make it work, I extracted the DOS.IMA file and then edited the \boot\autoexec.bat file inside the DOS.IMA file to make the corrections show in green with yellow highlights below:

@ECHO OFF
SET DIRCMD=/O:N
set LglDrv=27 * 26 Z 25 Y 24 X 23 W 22 V 21 U 20 T 19 S 18 R 17 Q 16 P 15
set LglDrv=%LglDrv% O 14 N 13 M 12 L 11 K 10 J 9 I 8 H 7 G 6 F 5 E 4 D 3 C
call setramd.bat %LglDrv%
::LH SHSUCDX /D:?MSCD001
copy command.com %RAMD%:\>nul
set comspec=%RAMD%:\command.com
path=%RAMD%:\;A:\;A:\HD
SET TEMP=%RAMD%:
SET TMP=%RAMD%:
lh doskey>nul
lh mouse>nul
cls
::bcdw FindBootableCDLetter
::if errorlevel 1 goto END
set bcdw_cdrom=B
prompt CD=%bcdw_cdrom%:_RAM=%RAMD%:_$p$g
path=%PATH%;%bcdw_cdrom%:\
%bcdw_cdrom%:
bcdw GetBootImageCommandLine
if errorlevel 1 goto END
call %bcdw_cl%
r
goto END
:END
m

This simply sets the CD-ROM drive letter to B:.  I then overwrote the DOS.IMA file into the original ISO file and copied the ISO file to \_ISO\MAINMENU and ensured the file extension was .isoDOS01.

Here is how I did it in detail (of course your ISO will not be the same, but this will give you a flavour of what to do!):
  1. Download and install WinImage 30-day trial version ( £20 full version is here). If you work with disk images I highly recommend WinImage.
  2. Download and install UltraISO (there is a trial version here) - this is one of the few ISO editing packages that allowed me to save the 600MB ISO using the trial version. When the trial period expires, you will need to register it for $30 - or use this link to download the full version.
  3. Load the ISO using UltraISO and extract the DOS.IMA file to a temporary folder on your hard disk
  4. Load the DOS.IMA file in WinImage and extract the autoexec.bat file from the \boot folder
  5. Edit the autoexec.bat file using Notepad so that drive B: is the CD-ROM drive letter and save the file.
  6. Drag and drop the new autoexec.bat into the WinImage root folder and save the file as DOS.IMA
  7. Drag and drop the new DOS.IMA file into the UltraISO \boot folder to replace the existing DOS.IMA
  8. Save as a new ISO file
  9. Copy the ISO file to the E2B drive as \_ISO\MAINMENU\mynewiso.isoDOS01  (note: the last two characters are the numbers 'zero' and 'one')
You should now find that the new ISO file will create a virtual B: drive in memory and copy the contents of the whole ISO into the new virtual drive (this may take several minutes!). After that it should boot as normal.