Welcome to Multi-Bootable N-in-1 CD Howto

In this topic which is supposed to be of interest to a lot of people, I shall talk about what is N-in-1 CD, the cdimage and its simple use in making an ISO, cdimage advanced and its optimization magic, making CD Multi-Bootable with Loader and Disk-Emulator, editing boot sector of Windows XP, Windows 2000 and/or boot-image files, and finally guiding you to make a "Corporate XP Professional & Home Edition 2in1 CD". 

About N-in-1

My N-in-1 experience started 8 months ago when a friend came to me showing his new toy from China - A 3in1 CD which put Windows 2000 Professional, Server and Advanced Server together and integrate them into one single CD. I was very impressed on this amazing CD but did not understand why a single 650 MB normal CD can accommodate 1.5 GB (500 MB x 3) of contents of 3 CD's. Unfortunately, my friend did not understand neither. I was wondering in the next 2 months: What kind of magic compression programs was it made? 

CDIMAGE.EXE

I did not get the answer until another friend brought me a piece of proprietary pre-mastering utility CDIMAGE.EXE which was originated from Microsoft for internal use only. The basic purpose of CDIMAGE is simply to help generating an ISO CD-image for the contents which are previously put under a folder of a hard-drive or a CD-drive. There are options which can control various CD's properties like volume label, time stamp, long filename, boot sector file and more. All these sounds like the other CD Burning software can do it: CDRWIN, ECDC, Nero. But what makes the N-in-1 possible? It is the -o option, "optimize storage by encoding duplicate files only once"

 

Optimization Magics 

Starting from that moment, I understand the magic: It was not the Compression made the Windows 2000 3in1 CD, but the "optimization" process. It is true that when we extract the contents of the 3 Windows 2000 CD's onto the hard-drive, each of them will occupy about 500 MB adding up a total of around 1.5 GB of hard-drive space. However, when we run the CDIMAGE with the -o option to encode an ISO CD-image, it finds DRIVERS.CAB (a 50 MB file) exists in the i386 folder of all 3 individual versions (Professional, Server and Advanced Server) and these 3 files are duplicate files, so it store the 3 DRIVERS.CAB's only once in the final encoding CD-image and updating the file allocation table of the CD so that the 3 DRIVER.CAB's distributed in 3 individual directories will point to the same physical address on the CD. Now we save 100 MB of space by doing optimization on duplicate files of DRIVERS.CAB only, we should not be surprised that we can get 1.5 GB being squeezed into less than 650 MB after the whole optimization process is finished on the other duplicate files. 

Obviously, the optimization magic of CDIMAGE is particularly useful in making something like Windows 2000 3in1 and Windows XP 6in1 where more than 95% of the contents in different OS's are of duplicate files. Beyonds the N-in-1, the -o option is also a good tool to bind more different applications, or different versions of application from the same software vendor onto a single CD. Example 1: Symantec System Works 2002 contains a basic version of Winfax Pro, but a Deluxe version of Winfax Pro and Talkwork Pro are also available and will be more powerful, they can be re-packed to one CD with CDIMAGE -o option without taking much of additional space. Example 2: The Adobe Acrobat 5.0 does accompany with different Adobe's applications on the Adobe Utimate Collection CD, we can use -o option to optimize the CD once again so that more space can now be spared for more Goodies. With your imagination, you can think about more situation where optimization magic can be applied.

 

Cooking Time

Let us start our cooking (in several stages), targeting on a "Multi-Bootable Corporate Windows XP Professional/Home Edition 2in1 CD"! 

The following materials are needed in our warm-up stage: DevilsOwn (XP-Professional with Corporate Files), BOOT.BIN (WXP/W2K Boot-Sector), CDIMAGE.EXE, 2.5 GB of Hard-drive space. If you have my 6in1 CD, it is a good source of materials except the CDIMAGE.EXE. Please note that the DevilsOwn is contained in my 6in1 CD under \WXPVOL_EN. The warm-up stage aims to learn using CDIMAGE to encode an ISO CD-image of a bootable DevilsOwn (Volume License Version of XP Professional) CD. 

1. Extract or copy all files from your source of DevilsOwn to a directory (sourceroot) of the HD (e.g. E:\CORP2IN1_EN) 

2. Copy the popular WXP/W2K Boot-Sector file BOOT.BIN to the sourceroot. (BOOT.BIN can be found at \ of the 6in1) 

3. In a minute, we shall be using CDIMAGE.EXE (Version 2.39, 72,464 Bytes) which has been put in a path available to be run in DOS Window. Let us learn its Usage and Options: (To make it simple, I only have listed Options of GROUP1 here which are used more frequently, you can view the full content of CDIMAGE.TXT at http://members.rogers.com/khayftp1/cdimage.txt

Usage: CDIMAGE [options] sourceroot targetfile 

Available Options: 

GROUP1: 


-l volume label, no spaces (e.g. --lMYLABEL) 
-t time stamp for all files and diirectories, no spaces, any delimiter (e.g. -t12/31/91,15:01:00) 
-b "El Torito" boot sector file, nno spaces (e.g. -c:\location\cdboot.bin) 
-h include hidden files and directtories 
-n allow long filenames (longer thhan DOS 8.3 names) 
-m ignore maximum image size of 6881,984,000 bytes 
-o optimize storage by encoding duuplicate files only once 


4. In DOS Window, Enter the following command: 

cdimage -lCORP2IN1_EN -t08/23/2001,12:00:00 -bE:\CORP2IN1_EN\BOOT.BIN -h -n -m E:\CORP2IN1_EN E:\CORP2IN1.ISO 

In about 3 minutes, CDIMAGE will generate a CORP2IN1.ISO in the root directory of the E: drive. If you use something like DAEMON Tools (recommended), winimage or isobuster to check the generated CORP2IN1.ISO, you will find the following properties which were set by the options: Volume Label is CORP2IN1_EN (-lCORP2IN1_EN); Time Stamp is 02/23/2001 at 12:00:00 GMT time (-t08/23/2001,12:00:00); the CD is bootable because a boot-image was specified (-bE:\CORP2IN1_EN\BOOT.BIN); Options -h -n -m were selected as STANDARD. CDIMAGE looked at the sourceroot E:\CORP2IN1_EN and generate the target ISO as E:\CORP2IN1.ISO. Please note that when CDIMAGE is in the ENCODING process, it expects the target drive (where the targetfile is generated) has at least the same size of free-space as the size of contents under the sourceroot. 

Isn't it simpler to make a bootable ISO with CDIMAGE than all the other Burning software? 

 

Side-Orders

Before we go further, I would like to bring you some side orders. I have seen people who have obtained ISO CD-Image of a Bootable CD, they can easily extract all files/directories onto hard-drive with isobuster, winimage or DAEMON Tools and make changes to it. But when they come to the burning time, they do not find a proper boot-image to burn the CD Bootable. But the correct boot-image is already right there in your original ISO, can we locate it in the ISO and then take it out? The answer is YES, but with proper tools (freewares): mkbootcd.exe and dd.exe

Now you have got the tools, let us use the ISO we have just generated (E:\CORP2IN1.ISO, Bootable CD Image) to learn how the boot-image can be located and extracted. Ready? Let's go: 

In DOS Window, Enter the following command to locate the boot-image: 

mkbootcd E:\CORP2IN1.ISO 

This is the output from mkbootcd: 

mkbootcd - make bootable CD image(El Torito specification) 
30-Mar-98 gigo@yk.rim.or.jp|imaizumi@nisiq.net V1.02 
21-May-98 *BETA* Joliet Extensions petry@rbg.informatik.tu-darmstadt.de 
26-Oct-00 fix/eltorito emulator support by Bart Lagerweij, bart@nu2.nu V1.02c 

== Boot Record Volume Descriptor == 
Indicator:0 
Identifier:'CD001' 
Version:1 
BSIdentifier:'EL TORITO SPECIFICATION' 
BootCatLbn:0x00000013(Loc:0x00009800) 
*Warnning - Some Garbage in stab1. 

== Validation Entry == 
HeaderID:1 
PlatformID:0x00 - 80x86 
ID String:'Microsoft Corporation' 
CheckSum:0x494c 

== Default/Initial Boot Entry == 
BootIndicator:0x88 - Bootable 
MediaType:0x00 - No Emulation 
LoadSegment:0x0000 - 0x7C0 
SystemType:0x00 
SectorCount:4 
LoadRBA:0x00000014(Loc:0x0000a000) 

== Direct Mode Boot Image == 

1 Warning(s) 
=== Verification Success === 

Watch the "LoadRBA" entry. It says the boot-image is at "Relative Block Address" 0x14 hex (=20 Decimal) 

Now enter the following command to extract the boot-image from the ISO: 

dd if=E:\CORP2IN1.ISO of=E:\CORP2IN1_EN\BOOTWXP.BIN bs=2k count=1 skip=20 

Within seconds, a boot-image BOOTWXP.BIN is generated in E:\CORP2IN1_EN which is identical to the BOOT.BIN we previously used. In the above command, "bs' stands for Block Size, "count" stands for Total Number of Block occupied by the boot-image (1 for NT-type boot sector and 720 for Win9X-type floppy image) and skip is the Number of Block to Skip reading before the boot-image. 

With these 2 Side Orders, you should be able to have the most updated boot-image coming along with your downloaded ISO.

Hot-Temptation

Well, warm-up time is over, we soon shall be going to taste the Hot Stuffs (N-in-1). To free some hard-drive space, let us delete the E:\CORP2IN1.ISO which was generated in the previous stage, we shall generate a even tasteful one. 

We need to use some more materials in this Hot-Temptation stage: The untouched Windows XP Home Edition (contained in my 6in1 CD under \WXH_OEM_EN) and the 8 Corporate Files for Home Edition (setupreg.hiv, setupp.ini, pidgen.dll, dpcdll.dl_, oembios.ca_, oembios.da_, oembios.bi_ and oembios.si_) which are all in the i386 folder under our sourceroot (E:\CORP2IN1_EN\i386). The aim of our Hot-Temptation stage is to add one more OS (Corporated XP Home Edition) on the Top of the previous DevilsOwn (Corporated XP Professional) and use CDIMAGE with the -o option to generate our first 2in1 ISO CD-Image. 

1. Extract or copy all files from your source of untouched Home Edition to a sub-directory under the sourceroot of the HD (E:\CORP2IN1_EN\WXHVOL_EN) 

2. Copy the file WIN511C from root of Home Edition to sourceroot (Copy E:\CORP2IN1_EN\WXHVOL_EN\WIN511C E:\CORP2IN1_EN) 

3. Copy the 8 Corporate Files from the i386 folder of DevilsOwn (E:\CORP2IN1_EN\i386) to the i386 folder of Home Edition (E:\CORP2IN1_EN\WXHVOL_EN\i386), over-write existing files. 

4. In DOS Window, Enter the following command to play the optimization magic (-o option): 

cdimage -lCORP2IN1_EN -t08/23/2001,12:00:00 -bE:\CORP2IN1_EN\BOOT.BIN -h -n -m -o E:\CORP2IN1_EN E:\CORP2IN1.ISO 

In about 4 minutes, CDIMAGE will generate our first real 2in1 ISO CORP2IN1.ISO in the root directory of the E: drive. The new generated CORP2IN1.ISO is about 545 MB in size when it is compared with the total size of 1 GB under the sourceroot E:\CORP2IN1_EN, and this is the result of the optimization magic. 

Now try playing the ISO with DAEMON Tools or the likes, what do you feel? Is it hot enough? If not, what stuffs should be added to make it more spicy? 

Where are we?

Getting lost?  Let us take some more time to digest what we have cooked so far. (I mean to take a quick look-back.) 

In order to make a "Corporate Professional & Home Edition 2in1": 

1. We put DevilsOwn as our first OS under the SourceRoot Directory of our hard-drive (under E:\CORP2IN1_EN). Appeared under E:\CORP2IN1_EN now are folders i386, DOCS, SUPPORT, VALUEADD ... and files ... all from the DevilsOwn. 

2. We put Home Edition as our second OS under a directory WXHVOL_EN which is one level down from our SourceRoot (under E:\CORP2IN1_EN\WXHVOL_EN). Appeared under E:\CORP2IN1_EN\WXHVOL_EN now are folders i386, DOCS ... and files ... all from Home Edition. 

3. But the Home Edition is from an Untouched Version. In order to turn it to a Corporated Home Edition, we have to replace in the i386 folder (E:\CORP2IN1_EN\WXHVOL_EN\i386) with 8 Corporate Files. Where can we find the 8 files? The i386 folder of DevilsOwn (E:\CORP2IN1_EN\i386) contains them all. We therefore can simply copy them from E:\CORP2IN1_EN\i386 to E:\CORP2IN1_EN\WXHVOL_EN\i386. 

4. Now that we have both the Corporated Professional & Home Edition being put under the SourceRoot. We add 2 more files to the SourceRoot: BOOT.BIN which is a Boot-Image file; WIN511C from the Home Edition. (We need to have WIN51, WIN51IP and WIN51IC located in the root directory of our 2in1 CD to make multi-boot possible) 

5. After we have finished preparation on our SourceRoot Directory E:\CORP2IN1_EN, we use the CDIMAGE with -o option to generate an ISO CD-Image of the 2in1 CD: cdimage -lCORP2IN1_EN -t08/23/2001,12:00:00 -bE:\CORP2IN1_EN\BOOT.BIN -h -n -m -o E:\CORP2IN1_EN E:\CORP2IN1.ISO. -l option for Volume Label; -t option for Time Stamp; -b option for Boot Image; -h for hidden files; -n for long filename; -m to disable ISO Size-Limit; -o for optimize magics. 

6. The generated CORP2IN1.ISO is a CD-Image contains the DevilsOwn (i386 folder located under \ of the CD) and the Home Edition (i386 folder under \WXHVOL_EN of the CD). The CD is bootable to DevilsOwn (it runs \i386\setupldr.bin during boot). If you insert the CD under Win32, it will autorun the setup.exe of the DevilsOwn (\setup.exe) 

Traditional Boot Process of a WinXP-CD

We have just finished generating the CORP2IN1.ISO which will give you a Bootable 2in1 CD if you burn it. The only shortcomings are the missing 2in1 Multi-Boot Menu and Autorun Menu. 

Before we build Multi-Boot Menu, let us learn the Traditional Single Boot Process of the current 2in1 CD in our hand. I hope I can explain this process in simple words and you should pay attention to those important files names and location I highlighted: 

1. You boot your computer with the 2in1 CD, the BIOS search information on the CD which tells to run the BOOT.BIN

2. The BOOT.BIN is actually a Boot-Sector telling where to load and what to see. With a HexEditor like UltraEdit, you may see the following contents: 

00000470h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 53 45 ; ..............SE 
00000480h: 54 55 50 4C 44 52 2E 42 49 4E 42 4F 4F 54 46 49 ; TUPLDR.BINBOOTFI 
00000490h: 58 2E 42 49 4E 49 33 38 36 00 00 00 00 00 00 00 ; X.BINI386....... 

The BOOT.BIN said: "You go to the directory I386 where you can find SETUPLDR.BIN and BOOTFIX.BIN plus some other important files." 

3. Now the computer goes to the I386 (the i386 folder of our DevilsOwn), and starting to look into the contents of some important files which once again will tell where and what to to copy in the next setup step. You should pay full attention to the following 3 files which will be very important when we are going to build our Muti-Boot Menu: SETUPREG.HIV, SETUPLDR.BIN, TXTSETUP.SIF

4. The SETUPREG.HIV in the I386 folder tells that the system to be setup is a full retail version of Windows XP Professional and from now on an ID-Card is given to your final product even though it is not finished yet. 

5. The SETUPLDR.BIN in the I386 folder tells how to load, and even more important, where to load the minimum set of drivers and required files in the next DOS Setup stage. If you ASCII-search in the setupldr.ldr for I386, you will find 4 ocurrances of "I386". 

i.e. the SETUPLDR.BIN said: "You go to the I386 folder to load the minimum set of drivers and required files for DOS Setup Stage!" 

6. Now the minimum set of files have been loaded. But before it jumps to the DOS Setup Stage, it will also look into the TXTSETUP.SIF in the I386 folder for another piece of important information: setupsourcepath. The setupsourcepath tells the location of the SetupSourceRoot containing the i386 folder which have all the SourceFiles to be copied. By performing a ASCII-search in the TXTSETUP.SIF, it is able to find SetupSourcePath = "\"

i.e. TXTSETUP.SIF said: "Listen, in the next DOS Setup Stage, you should go to the i386 folder located under "\" of the CD and copy all those files as the listed in my body for the subsequent Graphical Setup Stage." 

The computer keep the words from TXTSETUP.SIF and then jump to the DOS Setup Stage, copying files as specified in TXTSETUP.SIF, followied by a Graphical Windows Setup Stage of the DevilsOwn Windows XP Professional. 

After you feel comfortable to understand the boot process of the current Single-Bootable 2in1 CD, we shall start to cook a more complicated Muti-Bootable CD in our next step. By the mean time, try to get the following stuffs from the links provided and add them to your sourceroot (E:\CORP2IN1_EN): 

wpro.rar

wpro.r01

wpro.r00

loader.bin

diskem1x.bin

diskemu.cmd

deload.bin

mkbootcd.exe


We shall be using them in the "Multi-Boot" time. 

 

Cooking the Multi-Bootable 2in1 CD

To make our 2in1 CD to be Multi-Bootable to setup any one of the 2 XP's (Professional & Home Editon), I use the "Diskemu - CD-Rom Disk Emulator" which was created by Bart Lagerweij (URL is at http://www.nu2.nu/diskemu/). loader.bin, disem1x.bin, diskemu.cmd you have downloaded act as our soul in the Multi-Boot Menu System. 4 Additional files and folders are needed to be added to our sourceroot: WPROSECT.DAT (Boot-Sector for Professional), WPRO (folder containing a minimum set of drivers and other required files for DOS Setup Stage of Professional); WPERSECT.DAT (Boot-Sector for Home Edition), WPER (folder containing a minimum set of drivers and other required files for DOS Setup Stage of Home Edition). 

In the next encoding process with CDIMAGE, we shall specify our -b option (for Boot Image) as -bE:\loader.bin instead of the previous -bE:\BOOT.BIN. Now let me briefly address how these things perform the functions of our 2in1 Multi-Boot process: 

1. You boot your computer with the 2in1 CD, the BIOS search information on the CD which tells to run the loader.bin

2. The loader.bin takes over the control and runs diskem1x.bin. Instead of calling a single Boot-Sector in the traditional single boot process, diskem1.bin open the diskemu.cmd and popup a Multi-Boot Menu asking for our Selection. Here is part of the content in the diskemu.cmd which I have custom made for our 2in1 CD: 

:start 
cls 
print 
print ------------------------------------------------------------------------------ 
print Bootable Corporated Windows XP Professional & Home Edition 2in1 CD 
print ------------------------------------------------------------------------------ 
print F1=Help 
print 
print 
print 1) Setup Windows XP Professioanl (DevilsOwn, VLK) 
print 2) Setup Windows XP Home Edition (Corporated, VLK) 
print 
print 
print d) Development-> 
print q) Quit to command prompt 
print r) Reboot 
print Esc) Boot first harddisk 
print 
print Hit the key of choice: 
:mainkey 
; timeout is 20 seconds, default key is escape 
getkey 20 esc 
onkey 1 goto wpro 
onkey 2 goto wper 
onkey d goto dev 
onkey q quit 
onkey r reboot 
onkey f1 goto help 
onkey esc boot 80 
; When no key found... 
goto mainkey 

... 
:wpro 
print Starting Windows XP Professional (DevilsOwn, Volume License Version) Setup 
run WPROSECT.DAT 
getkey 
goto start 

:wper 
print Starting Windows XP Home Edition (Corporated, Volume License Version) Setup 
run WPERSECT.DAT 
getkey 
goto start 

... 

3. If you hit 1, the diskemu.cmd will open and load the Boot-Sector WPROSECT.DAT; Similarly, hitting 2 will lead to WPERSECT.DAT. WPROSECT.DAT and WPERSECT.DAT are almost identical to our previous BOOT.BIN except that they do not point to the "I386" folder. Instead they point to their own corresponding folder WPRO or WPER which contain the minimum set of drivers and files. Please note that folder names WPRO and WPER are made in 4 charcters long by purpose because we want "I386" in some binary files to be replaced easily with "WPRO" or "WPER". 

4. Let us assume you hit 2 and continue our description. Since you hit 2, diskem1x.bin pass the result WPERSECT.DAT back to loader.bin resulting to get it being loaded and open. The WPERSECT.DAT is modified from BOOT.BIN in the way that the "I386" changed to "WPER": 

00000470h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 53 45 ; ..............SE 
00000480h: 54 55 50 4C 44 52 2E 42 49 4E 42 4F 4F 54 46 49 ; TUPLDR.BINBOOTFI 
00000490h: 58 2E 42 49 4E 57 50 45 52 00 00 00 00 00 00 00 ; X.BINWPER....... 

5. Now the computers goes to the WPER directory, checking its SETUPREG.HIV (from Home Edition E:\WXHVOL_EN\I386\SETUPREG.HIV), SETUPLDR.BIN[ ("I386" are replaced with "WPER" in all 4 ocurrances) & TXTSETUP.HIV (setupsourcepath="\" is replaced with setupsourcepath="\WXHVOL_EN\"). 

6. The 3 important files mentioned above under WPER are correctly modified to generate the following expected results: the SETUPREG.HIV gives a "Professional" ID-Card (not Home Edition because it was replaced by the one from Corporate Files); the modified SETUPLDR.BIN tells to load the minimum set of files (for DOS Setup Stage) from WPER instead of from I386; the modified TXTSETUP.SIF tells to copy files (for Graphical Setup Stage) from the i386 folder under "\WXHVOL_EN\" instead of under "\". 

7. Please note that we only modify the 3 files in in the WPER folder (or the WPRO folder in the Professional case), we do NOT or should NOT change anything in our I386 folder - our Source. 

Once again, you may need some more time to digest stuffs in this part. I have addressed how we can boot into Setup of Home Edition, now you try to describe how you can boot into Setup for Professional. It should be less complicated than mine. We are one step to our practical work, I just wait until you fully understand all the behind theories. This time we discuss before we cook! 

Just do it!

We have learnt the Multi-Bootable theories behind the N-in-1 CD, let us put it to work on our 2in1: 

1. Copy the following stuffs which you have downloaded earlier to the sourceroot (E:\CORP2IN1_EN): loader.bin, diskem1x.bin, diskemu.cmd, deload.bin and the uncompressed WPRO folder. 

2. Make a Professional Boot-Sector WPROSECT.DAT pointing to the WPRO folder: In sourceroot, copy boot.bin WPROSECT.DAT; Turn off the READ-ONLY Attribute; Edit WPROSECT.DAT (with UltraEdit or something alike), replace "I386" with "WPRO". 

3. Edit (or check) the 3 files in the WPRO foler: The WPRO folder which you got from download has been edited correctly on SETUPREG.HIV (with full retail Professional ID), SETUPLDR.BIN (4 "I386" entries replaced with "WPRO")& TXTSETUP.SIF (setupsourcepath="\"). Double check on them. 

4. Make a Home Edition Boot-Sector WPERSECT.DAT pointing to the WPER folder: In sourceroot, copy boot.bin WPERSECT.DAT; Turn off the READ-ONLY Attribute; Edit WPERSECT.DAT (with UltraEdit or something alike), replace "I386" with "WPER". 

5. In sourceroot, Creating the WPER folder by copying the WPRO folder. 

6. Copying the 3 files (setupreg.hiv, setupldr.bin, txtsetup.sif) from the i386 folder of Home Edition (E:\CORP2IN1_EN\WXHVOL_EN\i386) to the WPER folder (E:\CORP2IN1_EN\WPER). Overwriting those existings. 

7. Turn off the READ-ONLY Attribute; Edit (or check) the 3 files in the WPER foler: SETUPREG.HIV (with full retail Professional ID), SETUPLDR.BIN (4 "I386" entries replaced with "WPER")& TXTSETUP.SIF (setupsourcepath="\WXHVOL_EN\"). Double check on them. 

8. Now open the file diskemu.cmd with a text editor, try to understand its contents or change the wordings of the menu-section to whatever you like. Close it after it is done. 

9. Delete the previous 2in1 ISO (E:\CORP2IN1.ISO) to free up hard-drive space. 

10. In DOS Window, Enter the following command to create a Multi-Bootable 2in1 ISO with loader.bin as the Boot-Image: 


cdimage -lCORP2IN1_EN -t08/23/2001,12:00:00 -bE:\CORP2IN1_EN\loader.bin -h -n -m -o E:\CORP2IN1_EN E:\CORP2IN1.ISO 

11. In about 5 minutes, we can enjoy what we have just cooked: The generated CORP2IN1.ISO is a CD-Image contains the DevilsOwn (i386 folder located under \ of the CD) and the Home Edition (i386 folder under \WXHVOL_EN of the CD). The CD is multi-bootable to to a menu from which we can select to setup either DevilsOwn or Home Edition. If you insert the CD under Win32, it will auto-run the setup.exe of the DevilsOwn (\setup.exe) 

We are very close to the finishing touch. The only thing I have not talked about is the Autorun Menu. 

 

Finishing Touch

We have generated the Multi-Bootable 2in1 CD-Image (E:\CORP2IN1.ISO). Don't burn it yet because it is not our final and we have to add an Autorun Menu in our final touch. But I can show you what it will look like when you boot this 2in1 CD:


In the finishing touch for the Autorun Menu, I have decided to use a simple but yet very effective Autorun program. Here is the Autorun Menu of our 2in1 CD generated by this program:


Now get the compressed Autorun program from the following link and put all the uncompressed files into your sourceroot: 

autorun.rar


The Autorun program you have downloaded consists of 5 files: autorun.inf, autorun.exe, autorun.ini, autorun.bmp and autorun.ico. The operation is fairly easy to understand:

1. When you insert the CD under Win32, Windows will look into the autorun.inf which contains 3 lines:

[AutoRun]
open=autorun.exe
icon=autorun.ico

2. The autorun.inf redirects Windows to run the autoexec.exe which is a program written in VB. The autorun.exe looks into autorun.ini which contains control settings and can be edited easily with a text editor. Here is part of the content in autorun.ini:

...
[GENERAL]
prior install=true
show language=false
background=autorun.bmp
product logo=
mheight=1350
mborder=200
mfontsize=8
mfontbold=true
mfontitalics=false
mforecolor=16777215
mfontjustify=2
...
[LANG0] //Default (when language selection is not displayed)
numbutton=4
exit=E&xit
back=&Back

button1=Setup Windows XP &Professional
mess1=Setup Windows XP Professional 
type1=1
active1=1
action1=Setup.exe

button2=Setup Windows XP &Home Edition
mess2=Setup Windows XP Home Edition
type2=1
active2=1
action2=\WXHVOL_EN\Setup.exe

button3=&View the release notes
mess3=View the release notes
type3=1
active3=1
action3=Readme.htm

button4=Browse this &CD
mess4=Browse this CD
type4=1
active4=1
action4=

3. According to autorun.ini, the Autorun program uses autorun.bmp as the background picture. It puts onto the background a total of 4 buttons (numbutton=4) and each of them has the individual label, message and action being defined. Obviously, you can change the background bitmap, the number of buttonts and their properties by modifying the content of the autorun.ini.

Now your sourceroot contains all the necessary ingredients and it will give you a CD-Image of around 550 MB in size when the optimization magics are played. You still have around 100 MB of space to fill with your Value-Added stuffs before you reach a full-house condition. Fill it up if you like.

It is time for our final cook:

1. cdimage -lCORP2IN1_EN -t08/23/2001,12:00:00 -bE:\CORP2IN1_EN\loader.bin -h -n -m -o E:\CORP2IN1_EN E:\CORP2IN1.ISO
2. Burn the CORP2IN1.ISO onto a CD.


Congratulation! Your Multi-Bootable Corporate Windows XP Professional & Home Edition 2in1 CD is done. Now I can see a smile on your face when you are leaving the door of this classroom with this gift and I believe that you will be able to create a lot more other N-in-1 for your own in the future. Don't forget to share your good stuffs with others though!

by Michael K.H. Au-Yeung, on February 8, 2002.

 

Appendix:

Cooking the Multi-Boot Menu System with Boot Scriptor

Other than using loader.bin & diskem1x.bin (which Bart Lagerweij has stopped to have further development), we can also use Michael K Ter Louw's Boot Scriptor (http://www.bootscriptor.org/) to create our Multi-Boot Menu System. 

Boot Scriptor is a program that allows a high degree of interactivity when booting from a CD-ROM drive. It provides a set of commands designed to enable users to boot a system in a number of ways, as well as provide interactive menus to choose boot options from. Below is an example of the Multi-Boot Menu System I have recently made for my SP1 (Beta) SlipStreamed Windows XP 2-in-1 CD using Boot Scriptor:


The Boot Scriptor program (bscript.cbt, isolinux.bin, isolinux.cfg, memdisk & iloader.bin) and the Boot Script (bscript.ini) of my above example are obtainable from http://members.rogers.com/khauyeung/bscript.rar. (Extract bscript.rar, all files are contained in the BSCRIPT folder which should be put under the sourceroot of the 2-in-1 CD.)

To make a CD that boots into Boot Scriptor, you need to make a directory called "BSCRIPT" under the sourceroot. In the BSCRIPT directory, place the following files: bscript.cbt, bscript.ini, isolinux.bin, isolinux.cfg, memdisk(optional) and iloader.bin(optional). The file "memdisk" is only necessary if you plan on using the memdisk command in Boot Scriptor for floppy boot images. To maximize ISO creation application compatibility, a special loader program called "ILOADER.BIN" was made. Almost every ISO creation utility supports this kind of loading. ILOADER.BIN (I put it in BSCRIPT folder) does not have to be in the CD-contents folder, but make sure your ISO creation utility knows where to find it. You will also probably want to place any other scripts or floppy boot images (NOT NT/2K/WP/.NET type boot-sectors which should be placed just under sourceroot)you need in the BSCRIPT folder as well.

Now let us learn the boot process of our example using Boot Scriptor:

1. You boot your computer with the 2in1 CD, the BIOS search information on the CD which tells to run the ILOADER.BIN.

2. The iloader.bin takes over the control and goes to the default BSCRIPT folder to load the ISOLINUX.BIN.

3. The isolinux.bin looks into the configuration file ISOLINUX.CFG which has the following contents:
        default bscript
        label bscript
            kernel bscript.cbt

4. The default Boot Scriptor Kernel BSCRIPT.CBT is now called which search for the default script file BSCRIPT.INI which provides interactive menu for us to choose our boot options. Our choice of option is then passed by Boot Scriptor back to ISOLINUX.BIN for execution.

In my example, floppy boot images (boot_msd.img, boot_pcd.img, w98_cmd.img, w98_ntfs.img, boot_di5.img, boot_er.img, tomsrtbt.img, pm7.img, spinrite.img) are placed in BSCRIPT folder while boot-sectors (BOOTFPPP.BIN & BOOTFPPH.BIN) and folders of minimum files-set (FPPP & FPPH) are placed directly under the sourceroot

Here is part of the content of the BSCRIPT.INI (with important Commands & Labels in BOLD letters) corresponding to my example:

;
; bscript.ini file for the Windows XP (SP1) Professional, Home Edition Multi-Bootable CD (English Version)
; Copyright (C) 2001-2002 by Michael K.H. Au-Yeung
; (Boot Scriptor, ILoader files are Copyright (c) 1999-2002 by Michael K Ter Louw, Bart Lagerweij & Gary Tong.)
; (ISOLinux amd Memdisk are Copyright (c) 1994-2002 by H. Peter Anvin.)
;
; Command List: About, Blink, Boot, Call, Cd, Chain, Check, Clear, Cls, Color, Dir, End, Getkey, Goto
; Help, Highlight, Isolinux, Ls, Man, Memdisk, Onkey, Print, Quit, Reboot, Restart, Return, Script, Setkey
; Setpos, Tab, Type, Wait

; Color 0x<bg><fg>: Set the display colors to the specified background and foreground colors, where 
; <bg> and <fg> are hex digits, corresponding to the standard display attributes
; 0 = black               8 = dark grey
; 1 = darkblue         9 = bright blue
; 2 = dark green      a = bright green
; 3 = dark cyan        b = bright cyan
; 4 = dark red          c = bright red
; 5 = dark purple     d = bright purple
; 6 = brown             e = yellow
; 7 = light grey         f = white

cls
color 0x0B
print "------------------------------------------------------------------------------\n"
print "Windows XP (SP1) Professional, Home Edition Multi-Bootable CD by khauyeung\n"
print "------------------------------------------------------------------------------\n"
print "\n"
color 0x0A 
print " 1) Install Windows XP (SP1) Professional (Retail)\n"
print " 2) Install Windows XP (SP1) Home Edition (Retail)\n"
print "\n"
color 0x0F
print " 6) Boot Microsoft DOS 6.22\n"
print " 7) Boot IBM PC-DOS 7.0\n"
print " 8) Boot Windows 98 [Version 4.10.2222] with Commands support\n"
print " 9) Boot Windows 98 [Version 4.10.2222] with NTFS-Pro support\n"
print "\n"
print " a) Boot from Floppy A (0x00)\n"
print " d) Boot Drive Image 5\n"
print " e) Run Easy Recovery from a RAM Drive\n"
print " l) Boot the most GNU/Linux (tomsrtbt)\n"
print " p) Run Partition Magic 7 from a RAM Drive\n"
print " s) Boot SpinRite 5\n"
print " q) Quit Boot Scriptor & return to the Isolinux command prompt\n"
color 0x0E
print " Esc) Boot from first hard drive (0x80) [Default]\n"
print "\n"
color 0x0B
print "Hit the key of your choice: "
color 0x0F

; timeout is 20 seconds, default key is escape
getkey 20 setkey esc
onkey 1 goto fppp
onkey 2 goto fpph
onkey 6 goto msd
onkey 7 goto pcd
onkey 8 goto w98
onkey 9 goto ntfs_pro
onkey a boot 0x00
onkey d goto di5
onkey e goto er
onkey l goto linux
onkey p goto pm7
onkey q quit
onkey r reboot
onkey s goto sr5
onkey esc boot 0x80

fppp:
chain \bootfppp.bin
getkey
goto exit

fpph:
chain \bootfpph.bin
getkey
goto exit

msd:
memdisk boot_msd.img
getkey
goto exit

pcd:
memdisk boot_pcd.img
getkey
goto exit

w98:
memdisk w98_cmd.img
getkey
goto exit

ntfs_pro:
memdisk w98_ntfs.img
getkey
goto exit

di5:
memdisk boot_di5.img
getkey
goto exit

er:
memdisk boot_er.img
getkey
goto exit

linux:
memdisk tomsrtbt.img
getkey
goto exit

pm7:
memdisk pm7.img
getkey
goto exit

sr5:
memdisk spinrite.img
getkey
goto exit

exit:
end

The Script file is straight forward and is very easy to follow. I like to draw your attention that we use the chain command to chain-load a Windows NT/2K/XP/.NET boot sector (\BOOTFPPP.BIN or \BOOTFPPH.BIN in our case). As mentioned previously, boot-sectors (BOOTFPPP.BIN & BOOTFPPH.BIN) and folders of minimum files-set (FPPP & FPPH) are placed directly under the sourceroot. The chain command is NOT for floppy booting images that require hardware emulation. Instead we use the memdisk command to boot froma a floppy or hard disk image file (e.g. w98_cmd.img or tomsrtbt.img in our case), by calling Memdisk to emulate the hardware. The Memdisk program file must be present in the :home directory (BSCRIPT).

FAQ:

Q1:  How can I make the minimum files set for Windows XP, Window 2000 or Windows Server 2003?

A1:  You can make the min. files set by starting an install with normal WinXP, Win2K  or Win2K3 CD, when it finishes copying the minimum set of files into the $win_nt$.~bt folder of your boot-drive and starts the first reboot, you interrupt and stop the installation. The $win_nt$.~bt folder now contains the minimum set of files, but you have to delete the winnt.sif because it points to the i386 directory of a normal CD which is not applicable to our multi-bootable N-in-1 CD case.

You can apply this method to Windows 2000, Windows XP, Windows .Net and the Non-English versions of the same which may have different locals and the additional BOOTFONT.BIN.

Q2:  How can I perform Upgrade instead of New Install with the N-in-1 CD?

A2:  Due to the fact that M$'s UPGRADE routine (from a CD) will search the default i386 folder of your CD, it cannot be applicable to our N-in-1 CD since all of our source directories (i386) have been moved down one level or have been redirected. If you really need to perform an upgrade, you do not do it directly from your N-in-1 CD but you copy the corresponding i386 folder to your hard-drive (or network) and upgrade from there with Advanced Options which then allow you to select the source directory and copy all source file to your hard-drive first.

Q3:  How can I make the N-in-1 CD to perform Unattended Installation?

A3:  In order to make an Unattended multi-boot Nn1 CD we have to add WINNT.SIF, (normally being placed in \i386 folders in single version CDs), in another folders.  The folders are that containing a minimum set of drivers and other required files for DOS Setup Stage of Professional or Home.  You can reference to unattend.txt for the contents of WINNT.SIF.

Q4:  Is there a size limit for the CDIMAGE to handle?

A4:  CDIMAGE when being used under FAT32 has a size limit of 4GB.  When being used under NTFS, it has no such limit.


by Michael K.H. Au-Yeung, on June 17, 2002.