Jump to content

Booting WinPE.ISO from RAM?


Rich_Weiss

Recommended Posts

I have a WinPE.iso that contains a few support tools. It was created from Vista WAIK on an XP PC. The ISO, when burned, and booted from a CD works perfectly. What I would like to do is create a boot.ini menu item called WinPE that would load the ISO from the C: Drive into RAM, and then run it from there so I don't need to carry the CD around with me.

I've been able to successfully use Win Builder to create a BootSDI.img, that I've added to the boot.ini and it works perfectly. But I need to stick to MS products if at all possible, and therefore I would like to be able to do the same with the WinPE.iso or any bootable ISO that would fit in RAM.

I've been searching on and off for a solution to this for some time, but I can't seem to find any clear directions. I'm hoping someone here can point me in the right direction.

Edited by Rich_Weiss
Link to comment
Share on other sites


Are we talking about a PE 1.x (XP/Server 2003 based) or a PE 2.x .iso (Vista/Server2008/7 based)?

First one can be booted through Server 2003 Ramdisk, see this seemingly unrelated thread AND links given in it:

http://www.boot-land.net/forums/?showtopic=4952

Second one can be booted through grub4dos .iso mapping:

http://www.boot-land.net/forums/index.php?showtopic=5041

jaclaz

Link to comment
Share on other sites

Thanks for the quick response. Its a PE 2.x .iso (Vista/Server2008/7 based ISO. So I'll check out the 2nd link. Hopefully I can pass control to grub4dos from the ntldr/boot.ini since I need to keep the MS XP boot process intact.

Link to comment
Share on other sites

My post here might help.

You can just put the WIM file you have in your \ISO\sources\ folder on the hard drive and use the Vista Boot Loader configured with bcdedit to boot it. I have my WIM file sitting on C: and XP on D: (but only boot.ini is involved with that). The bcdedit commands in my post show how to set it up that way. You could have both the WIM and your OS on C: as long as boot.ini is pointing at the right location for your OS.

Link to comment
Share on other sites

I still may tweak this a little, or even find another solution, such as suggested by WreX, but so far I've got it working by using Grub4DOS. I discovered that GRUB for NTLDR, can be used to boot into GRUB from the boot.ini menu of Windows XP. Nothing needs to be installed either, which is perfect, since all I have to do is drop my files into the root, and I'm good to go. I simply copied my WinPEx86.iso, and the GRLDR, (which I extraced from Grub4Dos), to the root directory of the C: drive, appended the C:\BOOT.INI with this line: C:\GRLDR="WinPEx86", and then created a menu.lst, that I also put in the root of the C: drive with the following code.

timeout 0
default 0
title WinPEx86
find --set-root --ignore-floppies /WinPEx86.iso
map /WinPEx86.iso (hd32)
map --hook
chainloader (hd32)
boot

Thanks everyone. This Board is awesome

Edited by Rich_Weiss
Link to comment
Share on other sites

Since you use timeout 0, you may want to edit the "embedded" menu in grldr and get rid of menu.lst, too.

For the record you do NOT need a "boot" command in a menu.lst entry.

"boot" is implied (and executed) when

  • another "title" line is found
    or
  • end of file is reached

jaclaz

Link to comment
Share on other sites

First let me say say thanks to WreX for your info, I'll integrate it into the Vista installs. And to jaclaz, I used your info to tweak the xp version.

So here's the latest procedure that I've used for booting a PE 2.x .iso (created from the Vista WAIK) from a XP PC using the Grub4DOS CDROM emulation. Note: This also worked with other bootable ISO images, I simply changed the name of the ISO in the menu to match. I suspect I could even have a list of several ISO's in the menu to choose from, all of which could be in an ISO directory, located on a hidden support/recovery partition, but I will have to look into that idea at another time.

  • Download the Grub4DOS from Grub4DOS Project
  • Download GrubInst from Grub4Dos Utils Project
  • Create a temporary directory
  • Extract the grldr file, from the Grub4Dos download, to the temporary directory
  • Extract the grubmenu.exe, from the GrubInst download, to the temporary directory
  • Create a new menu.lst in the temporary directory which contains the following code -
    default 0
    timeout 0
    title WinPEx86
    find --set-root --ignore-floppies --ignore-cd /WinPEx86.iso
    map /WinPEx86.iso (hd32)
    map --hook
    chainloader (hd32)


  • Import the new menu.lst into the grldr using grubmenu.exe by executing the following command from the temporary directory -
    grubmenu.exe import grldr menu.lst


  • Copy the grldr from the temporary directory to the root of the C: Drive
  • Appended the C:\BOOT.INI with this line: C:\GRLDR="WinPEx86"
  • And finally copy the WinPEx86.iso to the root of the C: Drive - Note: This file must be in one contiguous disk area for drive emulation to work, so defrag it if neccessary, or if you have enough RAM add a --mem option to the menu.lst before importing it by changing the "map /WinPEx86.iso (hd32)" to "map --mem /WinPEx86.iso (hd32)"

Edited by Rich_Weiss
Link to comment
Share on other sites

Wow, What a good idea. I renamed the grldr to WinPEx86, and changed the boot.ini to match. Thanks again.

I now have it successfully booting from a hidden recovery partition as well, and will be using imagex to restore images to the primary drive.

PS The next project is going to be getting it to boot from a USB Flash Drive as a system support environment.

Link to comment
Share on other sites

Wow, What a good idea. I renamed the grldr to WinPEx86, and changed the boot.ini to match. Thanks again.

You are very welcome.

We try to deliver solutions. :)

I now have it successfully booting from a hidden recovery partition as well, and will be using imagex to restore images to the primary drive.

PS The next project is going to be getting it to boot from a USB Flash Drive as a system support environment.

FYI (since you are not afraid to "dirty your hands" ;)) a seemingly unrelated, but interesting thread/approach:

http://www.boot-land.net/forums/index.php?showtopic=7138

jaclaz

Link to comment
Share on other sites

  • 3 weeks later...

As you can all see, and thanks to everyones help, I've got this working exactly like I wanted it to from the local HD's, However, after spending a considerable amount of time, I've been unsuccessful in getting this Vista PE ISO to boot from a USB Flash Drive.

I copied the files from the working HD to the flash drive, however when grub finds the ISO and begins to load it, the led on the flash drive indicates activity, but the image never finishes loading. In fact there is no indication that it even started to load (ie the progress bar across the bottom never shows up)

I can load other ISO's, off of the flash drive, by using the exact same grub menu.lst, and syntax, but not the ISO that I created from the Vista PE WAIK

I've tried different flash drives, reformatted the Flash Drive. I've defragged the ISO, tried loading grub from DOS instead of from the ntldr/ boot.ini. I tried to use the --mem option to load the ISO to RAM first, and yet I can't figure out what I'm missing.

If I remove the ISO from the Flash Drive, and copy it to the local HD the "find --set-root" in the menu.lst on the Flash Drive, locates it on the HD, and it runs perfectly.

I am assuming its either the ISO itself (since other ISO's load from the flash drive) or the syntax / emulation of how I'm calling it from the menu.lst (but again it works fine when located on the HD).

Could it be that Vista is resetting the USB ports before the ISO can finish loading, like the XP install does? But then why didn't the --mem option work? I'm at my wits end.

Link to comment
Share on other sites

Only things that seems possible at first sight, since you tested almost everything, is that since you are using the .iso bootsector (chainloader (hd32)) it is this latter one that fails, or maybe you are missing a root command.

Try chainloading the actual bootmanager in the .iso, like

title WinPEx86
find --set-root --ignore-floppies --ignore-cd /WinPEx86.iso
map /WinPEx86.iso (hd32)
map --hook
root (hd32)
chainloader /BOOTMGR

jaclaz

Edited by jaclaz
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...