Help - Search - Members - Calendar
Full Version: PXE Ramdisk Boot With Win2003 SP1
The CD Forum > The CD Forum > Windows PE
Pages: 1, 2, 3
Macfox
NET BOOT WINPE Via PXE and TFTP

Hi,

I've been playing around with getting WinPE to boot via a RAMDisk for a while (aka WinPE 2005 or 1.6) and thought I'd share a few details with others that might be interested in doing the same. biggrin.gif

Now that MS has released the Win2003 SP1 RC1 the "required" files are "officially" available for download via Microsoft Windows Server 2003 Service Pack 1 Release Candidate (32-bit)

Here's a quick guide for those that want to do the same.

Basics setup:
  • Setup the DHCP server custom options as per this guide. MS TFTP and DHCP Setup Make sure the DHCP option 067 is set to startrom.com instead
  • Build WinPE ISO image from Win2003 SP1 using Bartpe or the Official MS method.
  • In the TFTP server root dir make sure you have the following files. (startrom.com,ntdetect.com,ntldr,the iso image,winnt.sif) from win2003 sp1
    ntldr is a renamed setupldr.exe
  • You'll need to create the winnt.sif
    [SetupData]
    BootDevice = "ramdisk(0)"
    BootPath = "\i386\System32\"
    OsLoadOptions = "/noguiboot /fastdetect /minint /rdexportascd /rdpath=<image>.iso"
  • And that's basically it. Just boot your PC via PXE. You should see a progress bar as the ISO is loaded in to the Ram Disk, and then the familiar |||||| progress bar (Very Fast), then the desktop.
Pros
Better than RIS/PXE as the network services are fully functional. DNS and WINS/NetBIOS are possible now.
It's also possible to load the ISO images from CD/HD/USB also with the right winnt.sif and ARC path options.

Cons:
You can't use Win XP to build these RAMDisk images, it must be Win2003 SP1 RC1.
This only works under 32 bit systems at the moment.
Requires atleast 256MB RAM.

Go your hardest. Leave some feedback on your results.

Mac.

Edit: Spelling/Updates
Bernd Blaauw
Interesting. If this is possible with different TFTP server, and with a trial version of Win2003 (convert to BartPE), then I'll try it.

it will probably make RIS installations also a bit faster.

Bernd
Macfox
QUOTE (Bernd Blaauw @ Dec 9 2004, 01:56 AM)
Interesting. If this is possible with different TFTP server, and with a trial version of Win2003 (convert to BartPE), then I'll try it.


Yes I built a Bart PE with Win2003(Eval) SP1(RC1). 145MB ISO.

TFTP server can vary. I've used the tftp server under linux with success and also a 3com one. ( Very Slow)

The MS one seems to be very fast.

QUOTE
it will probably make RIS installations also a bit faster.


Well the best thing is, you don't even need RIS or AD for that fact. Excellent for sites that aren't using MS backend, like Novell sites or Linux sites running Samba etc.

I don't think people realise how good this ram boot is.

Rob
jefius
does this work also with win2000 ?
Macfox
QUOTE (jefius @ Dec 9 2004, 07:23 AM)
does this work also with win2000 ?


No. Only works with Win2003 SP1 RC1.

You could probably build an XP SP2 Image, but you still need the NTLDR and NTDETECT startrom.com components from Win2003 SP1 to get the TFTP part working.

Rob
dicht
Hi Guys,
please remember if you use this switch with winnt.sif you need the same size of ram + minimum 64MB installed as your ISO is.So if you do a ISO file thats about 250 MB you need about 320 MB Ram installed.And remember that cause you load the ISO into RAM that there might be BSODs by installing a Ramdisk (I use a modified MS Ramdisk driver and it did not work).For using this trick from HDD its really fast, on CD it slows down (but you can swap CDs), from PXE I prefer the RIS method cause its really fast (why should I slow load the ISO to RAM and the start it as fast as over a good Network, maybe its just interesting if you dont have a RIS MS Server).

But its absolutely nice to see that MS is doing much work on WinPE and believe me its getting better, there were some developers of MS in our company and they did stuff with WinPE great (have you ever debugged a winpe with another winpe over firewire?).


dicht
Macfox
QUOTE (dicht @ Dec 9 2004, 11:10 AM)
Hi Guys,
from PXE I prefer the RIS method cause its really fast (why should I slow load the ISO to RAM and the start it as fast as over a good Network, maybe its just interesting if you dont have a RIS MS Server).


Because the Networking is broken under RIS. No DNS or WINS etc.

Now this is out. RIS is basically dead IMHO. MS is moving the Image based deployment and it difficult to get RIS to image in a large enviroments due to the crippled networking.

If you have the full WinPE 2005 you can remove "listed" unneeded files and cut the ISO down to 86MB. You then can Map drives and load other stuff of File shares.

Rob
dicht
QUOTE
Because the Networking is broken under RIS. No DNS or WINS etc.
we use it at the moment and Network is not broken maybe you dont have a names resolution than you have to use IP addresses , but an ipconfig /registerdns will do this for you.

QUOTE
MS is moving the Image based deployment and it difficult to get RIS to image in a large enviroments due to the crippled networking.


you only need a good configured RIS Server to load WinPE and then some other servers to get your Image or Preload.Its the same for the tftp or Ris server to give an ISO of 86MB or give an WinPE over RIS except that you can cut the connection when the ISO is in Memory and with RIS boot you have to stay connected.

QUOTE
If you have the full WinPE 2005 you can remove "listed" unneeded files and cut the ISO down to 86MB


not ALL apps will run than, cause then there are missing some files, the remove list was in every version of PE.


But as I said everyone can do it the way he/she likes , and its great to have the Ram Feature thats for sure.

dicht
Metzen
Are the loaded ISO images Read/Write or Read Only?
dicht
@Metzen

Read Only


dicht
Metzen
QUOTE (dicht @ Dec 10 2004, 10:36 AM)
@Metzen

Read Only


dicht

Does this load the ISO (ie, can I have isolinux on the ISO) as it would a normal CD or must it be MS?
Macfox
QUOTE (Metzen @ Dec 10 2004, 04:28 PM)
Does this load the ISO (ie, can I have isolinux on the ISO) as it would a normal CD or must it be MS?

Has to be PE ISO most probably. Don't think the NTLDR will load any other OSs via this method. Give it a try though. It might work.
dicht
@Metzen

as i think it should work, cause with the special kernel you put the complete ISO into memory and start it from there as it would be a CD and so it should do with e.g. cdshell.The only think that can happen is that you got problems with memory spaces like adress conflicts.Just try it

dicht
alpay
So I've read whatever I could find and I'm not exactly getting it. is winnt.sif the boot loader?

I made a bartpe (pebuilder) iso with server2003. I got Tftp32 working on my win2000 based fileserver. my linux firewall is also my Dhcp server (www.smoothwall.org), it offers bootp so I popped in the settings to point to Tftp.

my client successfully gets it's network settings, and connects to tftp, but then fails. when I check the Tftp interface, it shows that it tried sending winnt.sif and failed 3 times. i tried setting startrom.com as the boot loader and it complained that it cannot find ntloader (which was renamed setupldr.exe). I added ntloader to the folder also. no dice.

I guess I'm trying to put together all the peices I have without a basic understanding of each files purpose. seems like my network is setup properly, I just don't know how to initiate a bootstrap.

Can you guys (Macfox?) tell me what I'd need for my situation? I see other tutes on the net showing filenames like pxe.0 and syslinux.0, is my naming convention simply wrong?

Thanks for the help.
Alpay
dicht
@alplay,

hi ,

1.you have to do a iso File of an Winpe (BartPE CD).
2.the initial boot program has to be startrom.com

then you have to create a winnt.sif file with the following entrys in the directory where startrom.com resists.

[SetupData]
BootDevice = "ramdisk(0)"
BootPath = "\i386\System32\"
OsLoadOptions = "/noguiboot /fastdetect /minint /rdexportascd /rdpath=winpe.iso"

where winpe.iso is your image file.
then in the same directory where winnt.sif resists you have to put ntdetect.com and ntldr (renamed from setupldr.exe).

That shoul do it
dicht
alpay
That's sounds like my setup...





with the images above you can see my error in the tftp server, and I include the bootp settings just for good measure. That part seems to work since the pxe client is reaching tftp.

my iso is called winpe.iso & "winnit.sif" file contains
[SetupData]
BootDevice = "ramdisk(0)"
BootPath = "\i386\System32\"
OsLoadOptions = "/noguiboot /fastdetect /minint /rdexportascd /rdpath=winpe.iso"


Any suggestions? everything is looking logical to me. I do have a theory though, I don't have server2003 installed on any machines here, so I grabbed the needed files from inside the ISO or the source cd itself. startrom.com only existed as STARTROM.CO_ so I did an expand, looks good to me. could this step be my problem though? Would it be illegal for you to send me a zip of the tftp root folder contents? if it's not, then could ya please? the files seem to be:
startrom.com, ntdetect.com, ntloader (renamed to setupldr.exe), winpe.iso (my ~145mb bartpe build), and winnt.sif as detailed above.

Thanks,
Alpay
bigman2u
This is what I have been looking for in our environment!

Tried setting this up last night and I have our Windows 2003 DHCP server setup with all the settings that were listed, along with tftpd32 installed and running. When I start one of my clients in PXE mode it finds the tftp and starts to connect -- then I receive the following output on my DHCP/TFTP server:

Connection received from 192.168.1.113 on port 2070
Read request for file <startcom.com>. Mode octet
OACK: <tsize=24482,>
Peer returns ERROR <TFTP Aborted -> aborting transfer
Read request for file <startcom.com>. Mode octet
OACK: <blksize=1456,>
Ack block 2 ignored (received twice)
TIMEOUT waiting for Ack block #2

Any thoughts on why this is occuring and how to work around this? Big thanks to MacFox and dicht for providing input on this.
dicht
@alpay

did you rename setupldr.exe to ntldr or ntldr to setupldr.exe.

you must rename setupldr.exe to ntldr thats the way.

and as i see your boot filename is \winnt.sif you should change it to startrom.com in your settings, cause startrom.com reads winnt.sif file and transmits the osloadoptions to the ntldr.

at the moment i cant try the tftpd way cause we use RIS for installing WinPE (but also on RIS i can do a Ram load with an WinPE ISO).

maybe when i got some time i will try it just by tftpd.But as i know only for the reason that some companys dont have a win ris server they did the Ram feature to be compatibel with other tftpd servers , so it should work.

dicht
alpay
@dicht

OK! I'm getting much further, Thanks SO much for solving my filenaming and bootfile mistakes. and so quickly too. now I get to the point where it says "Setup is inspecting your computer's hardware configuration...", expecting the ol' |||| at the bottom, then I get a "NTDETECT failed". I checked tftp server and it reported that it cannot find "BOOTFONT.BIN" which I cannot seem to find anywhere. I checked the original cd, the bartpe built iso, even my regular xp-pro box. It looks like this puppy wants to boot now, happy about that... got any insight on what I'm doing wrong at this point?

Thanks Dicht!
Alpay
dicht
@alpay

does it say bootfont.bin or bootfix.bin

dicht
ckleea
I received an error log of "tftp: client does not accept options"
I use linux tftp. The pxelinux.0 way works fine before.
Any suggestion?
alpay
definitely BOOTFONT.BIN I just tried it again to make sure... I sense that I may have the bootstrapping part solved with your help, but maybe something is wrong with my image?

I tested the image by mounting the iso and booting VMWare off of it across the network, and that worked like a charm. (I finally wised up and installed vmware, rebooting this box was certainly getting annoying). btw, to make things as real-world as possible, I mounted the iso in Alcohol in the HOST os, then shared it as a regular cdrom to the virtual machine.

Hey guys, I PROMISE that I'll put together the most thorough little site of tutorials of everything I've learned here as a way to give back.... I appreciate the help. I can't think of what would be better, well I guess no one hates a cash reward smile.gif
androidtopp
All,

This is exaclty the solution I'm looking for (loading PE to a ramdisk, although i don't need the TFTP part) but I think I'm caught out here. I do not have PE2005, just PE2004. So is it possible to build PE2004 with Server2003 and get thi ramdisk functionality? I'm just wondering how the ramdisk gets created when you list it as the boot device.

Also, Is there any place I can get PE2005? I'm eligible for it, per my company's Microsoft agreement, but I didn't manage to get it from whatever beta it was available in.

Thanks,
Andrew
alpay
@androidtopp
Not sure if the stuff you're talking about is the same issues discussed here... maybe a seperate post would get you the help you're looking for faster?

@dicht
i did a little hunting and found out that versions of NTDETECT.COM from XP and later, need BOOTFONT.BIN, it's has something to do with the font used during the initial boot. maybe international too...

anyway, it's halting my boot process, I cannot find it, compressed or otherwise on my cd's. any suggs on this?
timotl
The BOOTFONT.BIN is not actually needed, it is for international char sets.
The loader does look for it, but it's absense is not what is causing your hangup.

I was also using TFTPD32 and found a couple changed options fixed the problem for me.

Clear 'PXE Compatibility' and check 'Option Negotiation'.
That allowed the rest of the TFTP part to finish.

-timotl
dicht
@alpay...

one question you are using ntdetect.com ntldr from the Windows 2003 SP 1 right and put these files on the tftpd .

dicht
alpay
I'm pretty sure that I was only grabbing files from the server2003 cd and/or the the iso that came from pebuilder which used the server2003 disc. I'll replace it just to be on the safe side though.

I tried the changes to TFTP's options and I did not get any further.

Thanks again for the help guys.

Alpay
risolutore
opk 2005 is not oput yet.
I used filemirrors, without success.
can someone PM the resource or only the modified one since latest officially released opk?
dicht
@alpay

you need the files from Windows 2003 SP1 (thats only available for BETA user).
Windows 2003 without SP1 will not do.

dicht
alpay
It's been about a week now so my memory is blurry on this... but I am pretty sure I slipstreamed the service pack from http://www.microsoft.com/windowsserver2003...p1/default.mspx which appears to not mention being a beta.

I'll do it from scratch and report back. thanks Dicht, you're the man.

Alpay
Buddy
Hello all,

from windows 2003 sp1 rc you can extract the ramdisk.sys and ramdisk.inf file.
Can you post the new registry keys for WINPESYS.INF ???.

bye,
buddy
gely
QUOTE (dicht @ Dec 9 2004, 01:51 PM)
QUOTE
Because the Networking is broken under RIS. No DNS or WINS etc.


we use it at the moment and Network is not broken maybe you dont have a names resolution than you have to use IP addresses , but an ipconfig /registerdns will do this for you.

ipconfig /registerdns ???

but with what configuration ?
the ipconfig command made an error when xpe is booted from ris !?

can you explain what are the modifications you made ?
did you really have a dns resolving (not hosts cache)...

did you really use bartPE or an official WINPE ?
may be it's still a bug in bartPE or a new feature in a new release of WINPE (from M$) but for me, never manage to make dns resolving to work...

---thanx in advance for help :]
dicht
@gely

i am not using BartPE we use the MS PE with a modified Shell and our own written programs.Ipconfig works after RIS and its possible to connect network drives and map drives.I know we had once the problem with ipconfig could not start, but i think this was on an older version win pe with sp2 works.

dicht
gely
thanks dicht : then we have (bart and us : betatesters wink.gif) to find the difference in the networks services...

from bartPE to M$ winpe (XP+sp2)...

because ris with dns will be a great stuff !

---need testing :]
gely
from a fast test :
add factory and netcfg from M$ WINPE 1.2
modifying of pebuilder.inf to reffer to locals :
WPEMSCLI.INF (renamed to NETMSCLI.INF)
WPENB.INF (renamed to NETNB.INF)
WPETCPIP.INF (renamed to NETTCPIP.INF)
modifications is =20,,1 instead of =20

successfully surfed with dns resolving and ipconfig /all works well too...

just going to do more testings...

@bart : new challenge here for you wink.gif

@dicht : you're right : it seems to work

---let's go BARTPE's testers : find where is hidden this feature :]
Macfox
QUOTE (gely @ Dec 20 2004, 02:53 PM)
from a fast test :
add factory and netcfg from M$ WINPE 1.2
modifying of pebuilder.inf to reffer to locals :
WPEMSCLI.INF (renamed to NETMSCLI.INF)
WPENB.INF (renamed to NETNB.INF)
WPETCPIP.INF (renamed to NETTCPIP.INF)
modifications is =20,,1 instead of =20

successfully surfed with dns resolving and ipconfig /all works well too...

just going to do more testings...

@bart : new challenge here for you wink.gif

@dicht : you're right : it seems to work

---let's go BARTPE's testers : find where is hidden this feature :]

Good work.

THis was the main reason for moving to the TFTP method, apart from the reliance on AD.

But between your Python script and these mods, I think it will be feasible to use RIS, instead of the TFTP..

Only problem I see ATM is the problem with hostnames clashing (mulitple PE boots on the same LAN segment), or is this fixed?

Also does this Fix WINS?

Rob
gely
you have dns AND wins !
all are here... smile.gif

I done just some tests by googling and others with internet explorer !

for the name problem : we put on our ris linux base a cron job that renamed the computer name in winnt.sif !...


---a real diskless system :]
Macfox
Cron would work. But how often does it run? In our environment it would need to run considerably often, especailly when reimaging a lab.

Rob
gely
crom is not the best solution.
a better solution will be a script with a inifinite loop that renamed permanently the computer name of winnt.sif with (for exemple) a timestamp...
and the give unique name to all booting computers.

the only request is to not boot two computers at the same time.
the lapse of time between two boots is the delay/pause of the script !

that script has to be wrote...

---may be more stuff soon :]
Macfox
Perhaps just add a couple of lines to the binl server Python script to change the winnt.sif Computer name each time it get's a NIC driver request.

Rob
gely
@macfox :
great !!!
I'll try this... and sure it will work : because it's THE solution...

good tips for finishing the year; should be implement and test in our labs as soon as possible (next year...)

---just a thanks in advance :]
Macfox
No problem... I'll look on your site for the update. smile.gif
gely
it's sherpya who do the work.
but I'll give him the results soon wink.gif

but you'll soon be right : I'll make a small site about PE and the small stuffs and tips that I discover with all of the betatesters biggrin.gif

---may be a new resolution for the next year :]
krauseed
Does anyone know how to get the booting to RAM Disk functionality working if the source is the local hard drive and NOT a RIS server? I have heard you can do this as well but I can not figure out how to get it to load to RAM. Any information would be greatly appreciated.
Macfox
QUOTE (krauseed @ Dec 29 2004, 03:42 PM)
Does anyone know how to get the booting to RAM Disk functionality working if the source is the local hard drive and NOT a RIS server?  I have heard you can do this as well but I can not figure out how to get it to load to RAM.  Any information would be greatly appreciated.

You need to change the ARC path in the winnt.sif to point the the HD instead. Have a look at boot.ini examples for ARC path options.

Setup you HD as follows.
\winnt.sif
\<iso image>
\ntdetect.com
\ntldr
where <iso image> is the ISO image of Bart/Windows PE.

Create a text file named Winnt.sif and add the following sections and entries:
[SetupData]
BootDevice = "ramdisk(0)"
BootPath = "<platform>\System32\"
OsLoadOptions = "/noguiboot /fastdetect /minint /rdexportascd /rdpath=<iso image>"

<iso image> is typically "bartpe.iso". You can also place the boot image file in a subdirectory, such as "tmp\bartpe.iso". You can place the boot image file in any ARC-accessible location by specifying a full ARC path, for example, "multi(0)disk(0)rdisk(0)partition(1)bartpe.iso".

The ntldr is Setupldr.bin on your Windows installation CD.

Hope that helps.
krauseed
Ok, I followed the above instructions using Bart PE and Windows Server 2003 SP1 RC to build the ISO. It loads the ISO into RAMDisk just fine but right after it loads on the first black screen I get a message saying please wait. The next screen I get is a blue screen with a PROCESS1_INITIALIZATION_FAILED. Any ideas?

Thanks much,

Eric
Macfox
Minimise the plugins that you are using. Try to strip it back to just the bare bones then see if you get same error.

Rob
krauseed
I have tried that with the same error. I took out every plugin that comes with Bart PE, or are there other things I should be taking out? Has anyone gotten it to load to RAM with Bart PE and Server 2003 SP1, booting off the hard drive or from PXE?

Thanks much!
Macfox
Yes, I have under PXE.
krauseed
Did you follow the same steps listed above? I must be missing something, the OS starts to load but blue screens everytime.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Invision Power Board © 2001-2010 Invision Power Services, Inc.