Jump to content











Photo
- - - - -

GPXE Boot WinPE 3.0 Over HTTP


  • Please log in to reply
6 replies to this topic

#1 a178235

a178235
  • Members
  • 2 posts
  •  
    United States

Posted 24 November 2009 - 07:25 PM

Has anyone been successful at booting WinPE 3.0, or any version, over HTTP using GPXE? If so, how was it done?

#2 was_jaclaz

was_jaclaz

    Finder

  • Advanced user
  • 7101 posts
  • Location:Gone in the mist
  •  
    Italy

Posted 24 November 2009 - 07:38 PM

Has anyone been successful at booting WinPE 3.0, or any version, over HTTP using GPXE? If so, how was it done?

Over HTTP or FTP/TFTP? :)

Main discussions about the latter are here:
http://www.boot-land...hp?showforum=58

jaclaz

#3 a178235

a178235
  • Members
  • 2 posts
  •  
    United States

Posted 24 November 2009 - 07:40 PM

Over HTTP only.

#4 Sha0

Sha0

    WinVBlock Dev

  • Developer
  • 1682 posts
  • Location:reboot.pro Forums
  • Interests:Booting
  •  
    Canada

Posted 13 December 2009 - 02:40 PM

I like to divide boot scenarios into three classes:
  • OS in RAM
  • OS via network
    • File-based protocol (SMB, NFS, HTTP, etc.)
    • Block device-based protocol (iSCSI, AoE, ImDisk's devio, HTTPDisk, etc.)
  • OS on local media (boring traditional)

Assuming the question results in the "OS in RAM" class, you could accomplish it thusly:
  • Prepare an HDD image which itself loads the PE into RAM
  • Ensure that this PE can function properly without the underlying HDD (unmount any of the HDD partitions while running). This demonstrates a truly "OS in RAM" environment.
  • DD the HDD image as a file on your web-server (IIS might not be the best choice; I think it has some size restrictions)
  • Use gPXE to download the HDD image
    gPXE>initrd http://webserver/winpe3.hdd
  • Use gPXE to download either MEMDISK or GRUB4DOS
    gPXE>kernel http://webserver/memdisk raw
    OR
    gPXE>kernel http://webserver/grub.exe --config-file="map (rd) (hd0); map --hook; root (hd0,0); chainloader +1; boot"
  • Boot MEMDISK or GRUB4DOS. The HDD image will boot and load the PE into RAM.
    gPXE>boot

Note that in the above scenario, you most likely need roughly twice the RAM of the HDD image. This is because the image is loaded into RAM once as the RAM disk for the INT 13h booting stage. Then the PE image within that HDD image (and which most likely makes up the bulk of the HDD image) is loaded from the RAM disk into RAM, meaning more RAM used.

Note that instead of an HDD image, you could use an .ISO as long as you can verify that the system operates with the "CD" removed, to verify it as an "OS in RAM" running environment.

Note that if you incorporate a driver such as FiraDisk or WinVBlock into the PE, you might be able to avoid the redundant RAM usage mentioned above. In this scenario, the PE should be prepared a little differently. The PE should require the underlying HDD to be available while booted versus loading a .WIM file to RAM.

I hope to incorporate HTTPDisk into WinVBlock some day, by the way. That would be "OS via network" class.

- Sha0

#5 was_jaclaz

was_jaclaz

    Finder

  • Advanced user
  • 7101 posts
  • Location:Gone in the mist
  •  
    Italy

Posted 13 December 2009 - 03:06 PM

Very, VERY good :thumbup: explanation/classification! :rolleyes:

Would I be allowed to go one step beyond? :thumbup:

Like in:

  • OS on local media (boring traditional BUT almost foolproof and easier)


:thumbup:

http://en.wikipedia..../KISS_principle

NON-simple things should be preferred ONLY if there are REASONS for them, and of course for the FUN of them. ;)

Here is a nice related thread:
http://sanbarrow.com...opic.php?p=6888

B)

jaclaz

#6 fuxxi

fuxxi

    Newbie

  • Members
  • 27 posts
  •  
    Germany

Posted 12 March 2010 - 11:13 AM

Assuming the question results in the "OS in RAM" class, you could accomplish it thusly:

  • Prepare an HDD image which itself loads the PE into RAM
  • Ensure that this PE can function properly without the underlying HDD (unmount any of the HDD partitions while running). This demonstrates a truly "OS in RAM" environment.
  • DD the HDD image as a file on your web-server (IIS might not be the best choice; I think it has some size restrictions)
  • Use gPXE to download the HDD image
    gPXE>initrd http://webserver/winpe3.hdd
  • Use gPXE to download either MEMDISK or GRUB4DOS
    gPXE>kernel http://webserver/memdisk raw
    OR
    gPXE>kernel http://webserver/grub.exe --config-file="map (rd) (hd0); map --hook; root (hd0,0); chainloader +1; boot"
  • Boot MEMDISK or GRUB4DOS. The HDD image will boot and load the PE into RAM.
    gPXE>boot

Note that in the above scenario, you most likely need roughly twice the RAM of the HDD image. This is because the image is loaded into RAM once as the RAM disk for the INT 13h booting stage. Then the PE image within that HDD image (and which most likely makes up the bulk of the HDD image) is loaded from the RAM disk into RAM, meaning more RAM used.

Note that instead of an HDD image, you could use an .ISO as long as you can verify that the system operates with the "CD" removed, to verify it as an "OS in RAM" running environment.

Note that if you incorporate a driver such as FiraDisk or WinVBlock into the PE, you might be able to avoid the redundant RAM usage mentioned above. In this scenario, the PE should be prepared a little differently. The PE should require the underlying HDD to be available while booted versus loading a .WIM file to RAM.

I hope to incorporate HTTPDisk into WinVBlock some day, by the way. That would be "OS via network" class.

- Sha0

Thank You for this explanation.

I have played around with this scenario, however it is not working for me.

Iam using: gpxe from Sysprep 3.85 and grub.exe 0.4.4 from http://download.gna.org/grub4dos/

I have a Vista PE wim boot-image inside an .ISO file.

For my bootable usb stick the command is the following to boot up the image without problems:

title Deployment Center (RAM)
find --set-root /DC.iso
map --mem /DC.iso (hd32)
map --hook
root (hd32)
chainloader (hd32)

After converting it to the pxe server (using gpxe from Syslinux 3.85) the command in the pxelinux.cfg/default is as following:

LABEL -
MENU LABEL : Deployment Server (Test)
initrd http://172.100.100.1/IMAGES/DC.ISO
kernel grub.exe --config-file="map (rd) (hd0); map --hook; root (hd0,0); chainloader +1; boot"

This results in downloading the DC.iso fine but then just sitting in the command prompt of grub, without giving any error messages.
Btw. downloading the kernel via http:// is not possible here. After starting the boot menu entry in gpxe menu it just returns to menu, like nothing happens.

I played around with config-file parameters for grub, adapted those one from my usb stick. This resulted in trying to boot the image but then just restarting without giving any error message.

Can anybody help me?

#7 fuxxi

fuxxi

    Newbie

  • Members
  • 27 posts
  •  
    Germany

Posted 12 March 2010 - 03:00 PM

Im still working on it without the success im looking for.

For testing purposes I switched from gpxe to grldr as pxe boot manager.

I have created menu.1st/default config menu as following:

title Deployment Center
map --mem (pd)/BOOT/IMAGES/DC.ISO (hd32)
map --hook
root (hd32)
chainloader (hd32)
boot

Well, its working like a charme, proofing me that the iso image is just fine for booting over pxe/lan. The problem again now is, that grub command map --mem is downloading the iso via tftp, which is taking 10 more times then http.

I could live with grldr as pxe boot manager, if anybody has an idea how to transfer the iso via http. But I would still prefer doing it via gpxe as pxe boot manager as Sha0 described in his example.




1 user(s) are reading this topic

0 members, 1 guests, 0 anonymous users