Tuesday, June 23, 2009

AMulti Boot Guide

Hi all!

This is (probably) the most complete and updated guide on how to build a Multi Boot DVD. I'll be updating it as i can. Hope you like it smile.gif

Features in this guide:
- Automatically create multi-boot folders and files
- Install all your software directly from your CD/DVD (so it won't be copied to the HD saving time)
- You'll have just one Install.cmd file to update/maintain all your software
- Determine which software gets installed in which OS
- Still be able to use the OEMPreInstall=Yes and [GuiRunOnce] in winnt.sif to launch some other stuff that you may need
- You can slipstream drivers to every OS you want, having only one copy (BTS's DrivePacks integration being researched)
- You'll still be able to use any post-install methods you like (RunOnceEx, kTool, WPI, WIHU, XPlode, etc)

This guide is compatible with the following methods and tools:
- nLite
- RyanVM
- HFSLIT
- BTS's DriverPacks
(Method 2 is recomended. That way you can have only one copy of the drivers and slipstream them to all the OSs.)
- Windows Post-Install Wizard (WPI)
- kTool
- WIHU
- XPlode

This guide is compatible with the following OSs:
- Windows XP SP1
- Windows XP SP2
- 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 may come as svcpack.in_, just use the eXPander utility (thread here) to extract the svcpack.inf inside it, then delete the svcpack.in_.
- 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 and I believe that if you read my example you'll find it very easy to modify to your needs.


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:
Follow this guide, by a06lp.

Additional Resources
- Setup Billboard Screens (or learn how to make your own here).
- 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.

No comments:

Post a Comment