Saturday, April 11, 2009

Multi-boot DVD

A lot of people have been lately asking me this question lately.
So i'm writing this.

It's actually just a guide to multiboot different OS'es in a single dvd.

This guide is compatible with the following OSs:
- Windows XP SP1
- Windows XP SP2-3
- Windows Vista
- Windows Home
- Windows XP Media Center
- Windows 2000
- Windows Server 2003 (Standard, Enterprise, Web & Data Center)
- Windows 98

Before we start:
Keep it simple, for boot menu use CD Shell, use simple winnt.sif files, etc. You should beautify, only after you'll successfully completed and booted from all OSs. Some beautifying options are at the end of this guide.

What you will need:
- Time and patience, don't expect to get everything to work the first time
- Various operating system CDs or ISOs
- Sufficient drive space (5+ GB to be safe) (I used +/- 20GB for my DVD)
- CDImage (GUI'ed version)
- CD Shell
- Hex Workshop to hex-edit files.
- Optional - VMware (Shareware), Virtual PC (Freeware) or Qemu (Freeware) (for testing purposes)
- Any ISO burning software, like CDBurner XP (Freeware)

Work on one operating system at a time. Test once you have that operating system added to make sure everything works right, then move onto the next OS. It will save yourself time if something goes wrong and you have no idea where to look. You can only test your DVD once you've passed the "Creating the ISO" section. Good luck!

Let's get started:

Let's set up our folder structure:
- In your C:\ (or the root of your OS drive) create this folder structure:
------------------------------------
DVD\
DVD\BOOT\
DVD\BOOT\TOOLS\
DVD\SETUP\XP\Professional
------------------------------------
DVD is the root folder and SETUP will store all of the CDs
- Extract the CD Shell.zip file and move the TOOLS folder into the BOOT folder
- Move the BOOT folder into the DVD folder.
- Copy all the contents of the XP Pro CD to DVD\SETUP\XP\Professional.



Automatically create multi-boot folders and files (thanks to geitonaki)
- Download geitonaki's SFX file
- Execute it and browse to your DVD folder. When finished it will open create_boot_folders.cmd, modify it to your needs.
- It will create the PRO1 boot folder, modify setupldr.bin, modify txtsetup.sif, create the PRO1.bin boot sector and copy the WIN51, WIN51IP and WIN51IP.SP1 (WIN51IP.SP2 if Service Pack 2) tag files. (Notice that PRO1.bin has to have exactly 4 letters UPCASE)
CODE
call create_boot_folder.cmd C:\DVD\SETUP\XP\Professional C:\DVD PRO1 FOO 0

- Create a text file, inside PRO1, with NotePad, and rename it to winnt.sif. This will make winnt.sif create a tag file that identifies the OS being installed. In this case, the tag file will be XPPRO.TAG, but you can specify whatever you want:
QUOTE
[GuiUnattended]DetachedProgram="%SystemRoot%\System32\cmd.exe /c @ECHO something>%SystemDrive%\XPPRO.TAG"



Creating RunOnce.cmd
- Create a RunOnce.cmd file inside DVD\SETUP\XP\Professional\i386\CMD\ and paste the code in.
- RunOnce.cmd looks for Install.cmd on the DVD and calls it.
QUOTE
@echo off
for %%i in (c d e f g h i j k l m n o p q r s t u v w x y z) do if exist "%%i:\software\Install.cmd" call %%i:\software\Install.cmd
exit
You can use the RunOnceEx method for this. RunOnceEx only runs at first logon, so applications may need reboot. The method above goes around that, it's "rebootless"!


Launching RunOnce.cmd from Svcpack.inf
- Add these lines to svcpack.inf inside DVD\SETUP\XP\Professional\i386\:
QUOTE
[SetupData]CatalogSubDir="\i386"

[SetupHotfixesToRun]
CMD\RunOnce.cmd
Notes:
- Svcpack.inf
- As you can see Svcpack.inf will launch RunOnce.cmd at T-13 stage.
- You'll have to addapt the [ProductCatalogsToInstall] in svcpack.inf according to the new CatalogSubDir="\i386" because it may point to a different location (in which case you'll get an error message during installation). If you don't have any file references under [ProductCatalogsToInstall], then just don't worry about it.
- Use the eXPander utility to transform svcpack.inf back to it's compressed svcpack.in_ form, which is smaller (this is optional).



Creating the Install.cmd file
- Create a Install.cmd file inside DVD\SOFTWARE\ and paste in the following:
QUOTE
@echo off
REM next line makes sure the *.TAG extension is identified
setlocal enableextensions
REM checks for the XPPRO.tag file and go to the corresponding section:
if exist %SystemDrive%\XPPRO.TAG call :XPPRO
REM checks for the XPPRO2.tag and go to the corresponding section:
if exist %SystemDrive%\XPPRO2.TAG call :XPPRO2
REM checks for the SERVER2003.tag file and go to the corresponding section:
[if exist %SystemDrive%\SERVER2003.TAG call :SERVER2003
REM End
goto :end

:XPPRO
REM Here we'll add the software to install to the XP Pro version. Example:
REM "%~dp0" refers to the full path the Install.cmd is in, so you don't have to worry about drive letters
start /wait %~dp0\Software\Program1.exe /s
start /wait %~dp0\Software\Program2.exe
start /wait %~dp0\Software\Program3.exe /qn
REM End this section
REM end of this section :
goto :end

:XPPRO2
REM Here we'll add the software to install to the XP Pro Unattended version. Example:
[color=#333399]start /wait %~dp0\Software\Program1.exe /s
start /wait %~dp0\Software\Program2.exe
start /wait %~dp0\Software\Program3.exe /qn
REG IMPORT %~dp0\Software\Tweaks.reg
REM End this section
REM end of this section :
goto :end

:SERVER2003
REM Here we'll add the software to install to the Server 2003 version. Example:
REG IMPORT %~dp0\Software\Workstation.reg
start /wait %~dp0\Software\ProgramA.exe /s
start /wait %~dp0\Software\ProgramB.exe
REM End this section
REM end of this section :
goto :end

:end
REM Here we'll add the options for every OS.
start /wait %~dp0\SOFTWARE_ALL\AntiVirus.exe
start /wait %~dp0\SOFTWARE_ALL\Firewall.exe /s
REM Applying tweaks to the registry. Independent of the TAG:
REG IMPORT %~dp0\Software\Tweaks.reg
del /f /q %SystemDrive%\*.TAG
del /q /f %SystemRoot%\*.bmp
del /q /f %SystemRoot%\system32\dllcache\*.scr
del /q /f %SystemRoot%\system32\setupold.exe
del /q /f %SystemRoot%\system32\presetup.cmd
exit

Install.cmd checks for any tag file and when it finds performs the associated task. As you can see, aplications are installed directly from the DVD (not copied to the HD) thus not needing the OEMPreInstall=Yes or [GuiRunOnce] in winnt.sif, that you can still use to launch some more stuff that you may need, and saving time thumbup.gif

Finishing Up


DVD Layout:
Ok, now check if your DVD layout is similar to this, if it is, everything is ok. Keep in mind that this is just a sample layout. This layout includes XP Pro and Server 2003, but you may add as many as you like (or as many as it fit's on DVD).

C:\DVD\ - Multi boot DVD Source
C:\DVD\BOOT\ - CDShell folder
C:\DVD\i386\ - Windows XP Pro reduced source folder (OPTIONAL)
C:\DVD\PRO1\ - Boot folder 1 for XP Pro
C:\DVD\PRO2\ - Boot folder 2 for XP Pro
C:\DVD\3ST1\ - Boot folder 1 for Server 2003
C:\DVD\3ST2\ - Boot folder 2 for Server 2003
C:\DVD\SOFTWARE\SOFTWARE\ - Folder where software is placed
C:\DVD\SOFTWARE\Install.cmd - CMD file that takes care of the software installation
C:\DVD\SOFTWARE\SOFTWARE_ALL\ - Folder where software for all OSs is placed
C:\DVD\SETUP\XP\Professional\i386\CMD\RunOnce.cmd
C:\DVD\SETUP\Server2003\Standard\I386\CMD\RunOnce.cmd


Creating a boot menu (CDShell):
It's time to create a boot menu. CD Shell scripting it very simple.


Creating the ISO (CDImage):
Now we only need to create the ISO so we can test our DVD.
I'll follow the non-GUI CDImage tutorial, but you can use the GUI'ed CDImage version if you like.
Put the cdimage.exe in the same directory as the DVD:
-------------------------------------
C:\CDImage.exe
C:\DVD
-------------------------------------
And automate the process:
Make a batch file that you can run whenever you want to make the ISO. To create a batch file open Notepad and paste the below code into it. Save the file as whatever you want and then just change the extension to .bat, like C:\makeiso.bat.
QUOTE
DEL C:\*.ISO
start cdimage.exe -lDVD -t01/01/2006,12:00:00 -b\DVD\BOOT\loader.bin -h -n -o -m \DVD C:\AIODVD.iso
EXIT
Ok, time to test your ISO with VMware (for example) and add another OS!

Extras

Add an Unattended option:
This section will teach you how to add an option which let's you install Windows unattendedly.

- Copy the PRO1 folder and PRO1.DAT file to "Copy of PRO1" and "Copy of PRO1.DAT"
- Rename it to PRO2 and PRO2.DAT
- Hex-edit PRO2.dat and scroll down until you see "PRO1" in the right hand side. Replace PRO1 with PRO2.
- Hex-edit setupldr.bin inside the PRO1 folder and Ctrl+H, then search for Type: "Text String" "PRO1" and replace it with PRO2.
- Save the file, choose not to back it up.
- Click "OK" and then choose "Replace All". It should say "4 Occurrences Replaced". When done, save the file and choose not to back it up.
- Edit winnt.sif to include the unattended options.
This may be a good time to read the ref.chm file in Microsoft Deployment Tools, it explains how to set up winnt.sif for an unattended installation.
You can use your winnt.sif file to skip some boorings steps of your installation like typing the serial number, defining your language and keyboard or even skip all the steps with the UnattendMode=FullUnattended command.
After you created your winnt.sif add these lines to it, so it TAG's the OS being installed:
QUOTE
[GuiUnattended]DetachedProgram="%SystemRoot%\System32\cmd.exe /c @ECHO something>%SystemDrive%\XPPRO.TAG"
- Ok, so now we have a second boot option. Its time to add that option to the boot menu, so you can actually choose it. Just open up your DVD\BOOT\cdshell.ini and add these lines to it:
QUOTE
XP_Pro:
print c "\n\cXXMicrosoft Windows XP Professional \n"
print "1) Regular \n"
print "2) Unattended \n"

XP_Pro_Key:
if $lastKey == key[1]; then chain /PRO1.DAT
if $lastKey == key[2]; then chain /PRO2.DAT

Add Windows 98
Follow this guide, by chon_.

Add Drivers

Additional Resources
- Setup Billboard Screens
- Microsoft Deployment Tools at Microsoft and Rapidshare. They contain the ref.chm file that has info for WINNT.SIF configuration, along with other utilities.

Explanation of how it all works:

Understanding The Boot Process
- CD Shell lets you choose which XXXX.DAT boot sector to access (located on the DVD root)
- The boot sector (PRO1.DAT for example) says where to load the SETUPLDR.BIN file (located in each of the boot folders)
- SETUPLDR.BIN has instructions on where to access txtsetup.sif (on the same folder) which accesses the appropriate DVD\SETUP\XX folder and starts the text-mode setup for Windows

Timeline
T-39 - Depending on the boot folder, winnt.sif's DetachedProgram creates a tag file identifying the OS.
T-13 - Svcpack.inf launches the RunOnce.cmd inside ...\i386\CMD\ of every OS. Install.cmd checks for the tag file and then performs that TAG's associated task.



Hope it was usefull to you

10 comments:

Anonymous said...
This comment has been removed by a blog administrator.
Anonymous said...

It is certainly interesting for me to read that blog. Thank you for it. I like such topics and everything that is connected to this matter. I definitely want to read more soon.

Brandy Stone
London latin escorts

Anonymous said...

It was certainly interesting for me to read this blog. Thanks for it. I like such themes and anything that is connected to this matter. I would like to read a bit more soon.

Whitny Kripke
model escorts london

Anonymous said...

It was certainly interesting for me to read the post. Thank author for it. I like such topics and anything that is connected to them. I definitely want to read a bit more on that blog soon.

Nicky Stepman
escorts in roma

Anonymous said...

It is very interesting for me to read that blog. Thanks for it. I like such themes and anything connected to them. I definitely want to read a bit more soon.

Sara Trider
cheap cell phone jammer

Anonymous said...

It is certainly interesting for me to read the article. Thanx for it. I like such themes and anything connected to this matter. I would like to read more on that blog soon.

Whitny Swift
escorts a milano

Anonymous said...

It is rather interesting for me to read the blog. Thank author for it. I like such topics and anything connected to this matter. I definitely want to read more on this blog soon.

Katty Karver
london escort owo

Anonymous said...

It is very interesting for me to read the post. Thank you for it. I like such topics and anything connected to this matter. I definitely want to read more on that site soon.

Jane Stepman
escort in monako

Anonymous said...

Hi - I am definitely glad to discover this. great job!

Anonymous said...

click windows registry repair for less