A few days ago i asked abt integrating a boot from ram build and normal build to a single iso and let user can choose which one to boot onto(link ) . Since then i have been searching the web for answers and i found how to do that.
Finally i have sucessfully builded a two in one iso.
i got th idea a post by TheTruth on 911cd
you will need a hexeditor,w2003 setup files (for ramdisk.sy_ and setupldr.bin ie boot from ram plugin), wXP sp2 setup files(you will be needing the old setupldr.bin from xp sp2 *), syslinux or any CD boot loader, an iso editor like ultraiso.
here i used syslinux and ultraiso
this is how i did it, manually
1) i made 2 ISOs using winbuilder , 1 with boot from ram enbled and other without it, lets call them RAM.iso and STANDARD.iso.
2) Now extract everything in STANDARD.iso to a folder & extract iso image in RAM.iso(we'll call it RAMBOOT.iso) along with WINNT.SIF to a folder
2.1) using iso editor save the boot records of both RAM.iso and STANDARD.iso to 2 files
lets call them
STANDARD.iso --->boot record saved to ---> cd.bin
RAM.iso --->boot record saved to ---> ram.bin
3) Now the syslinux part, download syslinux as zip from kernel.org it is a part of linux project
3.1) unzip syslinux, make sure it contains a file named "isolinux.bin"
3.2) create a folder say "multiboot"
3.2.1) copy everything extracted from STANDARD.iso to folder "multiboot"
3.3) create a folder in "multiboot" named "ISOLINUX" (the name isolinux is important dont change it)
3.3.1) copy cd.bin & ram.bin to folder "isolinux".
3.3.2) open notepad and paste following
default ram TIMEOUT 50 TOTALTIMEOUT 9000 PROMPT 1 label ram kernel ram.bin label cd kernel cd.bin
save it with a file name "ISOLINUX.CFG" (name is important) in the folder "ISOLINUX"
3.3.3) copy extracted iso image from RAM.iso along with WINNT.SIF to "multiboot"
4) This step involves bit of hex editing so choose a comfortable hex editor, any errors means u would endup with funny errors. i used HEX WORKSHOP here.
4.1) copy setupldr.bin from w2003 package (291kb) to our "multiboot\I386\"
4.2) get setupldr.bin from wXP sp2 package (254kb),
rename it to setupld1.bin and copy to "multiboot\I386\"
4.3) Open the file "\isolinux\cd.bin" in your favorite hex editor (WinHex, UltraEdit, ...), and search for the ASCII string "SETUPLDR.BIN" and replace it with "SETUPLD1.BIN", then save the file.
4.4) Open the copied file "setupld1.bin" in your favorite hex editor (WinHex, UltraEdit, ...), and search for all the occurrences of the ASCII string "winnt.sif" and replace them with "winn1.sif" (there are about 8 of them including 3 that don't have to be replaced but there is no harm if you do), then save the file.
(here i chose to edit the file from wXP package coz if u edit w2003 file u would end up a "corrupt NTLDR" message)
5) now our folder "multiboot" contains folders below ( this directory structure is used for final iso)
\I386\*.* (standard build files)
\PROGRAMS\*.* (standard build files)
\RAMBOOT.ISO (iso image inside RAM.iso)
\WINNT.SIF (contains reference to RAMBOOT.iso)
\I386\SETUPLD1.BIN (edited from wXP sp2)
\I386\SETUPLDR.BIN (non-edited from w2003)
6) Here i used ultraiso it is a nice handy iso editor. Now using ultraiso i compiled a new iso with above mentioned directory structure.
6.1) Important dont forget to set boot sector of compiled iso to "isolinux.bin" from syslinux zip u are done
This type of build can useful when dealing with pc's with low amt of ram and high end. i hope our wizards at Boot-land will come up with a script soon making the whole process automated. since i have to go to higher studies to a new place in few days i dont have enough time to make a script for this. hex editing also makes things tough.May be when i get to new college and after setting down i will start working on a new script.
your valuable suggestions are welcome