Re: [Etherboot-discuss] WinPE boot failure
Brought to you by:
marty_connor,
stefanhajnoczi
From: Itay G. <ita...@gm...> - 2008-01-24 15:37:43
|
Striper, Thanks for the detailed information. Well, I still didn't succeed booting winpe. I will try focus my problem: PXE succefully loads winpe.0 which is pxeboot.n12. The problem I have that after it loaded pxeboot.n12 it should ask for a file called "/bootmgr.exe" or "Boot/bootmgr.exe" or "bootmgr.exe" (something with bootmgr.exe). I don't know why but myne is asking for a file called "/" ??? I tried everything with the tftp mapping and I even tried it on windows, no change it always ask for a file called "/". Maybe it's something related to a configuration to gPXE? Did you try booting winpe 2.0 with gPXE? Thanks in advance, Itay logs: tftp /var/log/messages Jan 23 23:57:02 sw007 in.tftpd[27020]: RRQ from 11.4.3.130 filename pxelinux.cfg/0 Jan 23 23:57:02 sw007 in.tftpd[27021]: remap: input: winpe.0 Jan 23 23:57:02 sw007 in.tftpd[27021]: remap: done Jan 23 23:57:02 sw007 in.tftpd[27021]: RRQ from 11.4.3.130 filename winpe.0 Jan 23 23:57:03 sw007 in.tftpd[27022]: remap: input: / Jan 23 23:57:03 sw007 in.tftpd[27022]: remap: done Jan 23 23:57:03 sw007 in.tftpd[27022]: RRQ from 11.4.3.130 filename / Jan 23 23:57:03 sw007 in.tftpd[27022]: sending NAK (0, Is a directory) to 11.4.3.130 tcpdump 02:34:21.919811 IP 11.4.3.130.1024 > 11.4.3.7.tftp: 42 RRQ "/" octet blksize 1432 tsize 0 multicast On Jan 23, 2008 6:49 PM, striper <str...@gm...> wrote: > Itay, > > Each person who has solved this problem has come up with a slightly > different solution. > > The good news is that everyone is using the same tools. > > The fundamental source of your problem is that the Windows code > assumes that the path separator character is the \ backslash. At > various points they try to retain the pathname by doing a reverse > character search for \ beginning at the end of the string. If they > don't find it then things get messed up. > > Itay, rather than just give you a fish I am going to try to teach you > how to fish. > > Here are my recommendations: > > * The tftpd remapping feature is your friend ... use it as much as > you can. Watch /var/log/messages and add things to your tftpd.rules > file on a step-by-step basis. > > * Try to avoid giving any directory paths to the MSFT code. Rather, > let it think that it is pulling everything from the root of the tftpd > directory. The MSFT code is still going to try to pull things from > subdirectories, and it may be inconsistent with the case of the > subdirectory names, sometimes using \Boot and other times using \boot. > > * If you feel that you must pass pathnames to the MSFT bootstrap > programs then you *must* use\ backslash characters instead of / > forward slash characters as the path separator. This will keep the > MSFT code happy and will allow you to distinguish between MSFT > requests and *nix requests in your tftpd.rules remapping. > > * Make sure that the bootstrap that you load ends with a .0 (dot > zero) extension. You must do this if you ever want to be able to > chain-load from pxelinux. That is, pxelinux will not be able to load > pxeboot.n12 because it will not recognize the .n12 filename extension. > So, don't use the dhcpd option filename "pxeboot.n12", use filename > "winpe20.0" > > * I have a bunch of stuff running on my tftpd. Therefore, I put all > of my winpe20 stuff in a /tftpboot/winpe20/ subdirectory. The MSFT > client code does not know this. > > In your dhcpd.conf you have: > option root-path "/tftpboot"; > filename "/Boot/pxeboot.n12"; > > I recommend that you not specify the root-path option. If, for some > reason, you feel that you must specify it for the PXE client then you > *must* use a \ backslash instead of a / forward slash. > > Get rid of the /Boot/ prefixe > > Don't call it pxeboot.n12 > > This should become: > filename "winpe20.0" > > Or, if you want to launch pxelinux first, then have it say: > filename "pxelinux.0" > > Then, in your /tftpboot/pxelinux.cft/default file you can have a boot > option for winpe20 > > label winpe20 > kernel winpe20.0 > > Again, note the requirement of the '.0' filename extension so that > pxelinux will know that it is chain-loading another PXE bootstrap. > > my remap rules and /tftpboot tree look like this: > > [striper@plumisland /]$ cat /etc/tftpdremap > ################################################################ > # remap WinPE 2.0 filenames > # > # Map these isolated file names and go > re ^winpe20\.0 winpe20/pxeboot.n12 > re ^bootmgr\.exe winpe20/bootmgr.exe > re ^\\Boot\\BCD winpe20/bcd.striper > re ^\\winpe.wim winpe20/winpe.wim > re ^\\boot.sdi winpe20/boot.sdi > # > # map these path prefixes > r ^\\Boot\\Fonts\\ winpe20/fonts/ > ################################################################ > [striper@sandyhook /]$ > > [striper@sandyhook /]$ tree tftpboot > tftpboot > |-- pxelinux.0 > |-- pxelinux.cfg > | |-- boot.msg > | `-- default > `-- winpe20 > |-- bcd.striper > |-- boot.sdi > |-- bootmgr.exe > |-- fonts > | |-- chs_boot.ttf > | |-- cht_boot.ttf > | |-- jpn_boot.ttf > | |-- kor_boot.ttf > | `-- wgl4_boot.ttf > |-- pxeboot.n12 > `-- winpe.wim > > (Note that I have hand-edited these things in order to remove > unrelated stuff ... but I believe that they are still correct) > > Make sure that the permissions are set correctly in your /tftpboot > tree. If you use scp to copy the files then they may not have world > read permissions: > > # chmod -R a+r /tftpboot > > Watch the tftp remapping and requests and see where things fail: > > # tail -f /var/log/messages > > > There is a lot of information here and it is pretty dense. I hope it > hasn't confused you too much. > > If you are still unable to get it to work then let me know and I will > more explicitly walk you through the way that I do it. > > > striper > |