Dear iPXE developers,

I'm having the following problem with iPXE; I'm using the bootable ISO that I 
burned to a CD-ROM.

I'm booting WinPE over PXE. This works when I'm using a DHCP server on a local 
subnet (on which I can set the correct scope options), but due to security 
policies I cannot set DHCP scope options on the rest of the network. So the 
objective is to boot iPXE from CD-ROM or USB-key with an embedded script that 
simply executes:

        dhcp
        set next-server x.x.x.x
        imgfetch /Boot/pxeboot.n12
        boot pxeboot.n12

I tested this and it works well. It doesn't work anymore though when I increase 
the TFTP block size within the BCD config (so Microsoft's bootmgr.exe will 
request bigger chunks of data from the TFTP-server).

Our TFTP-server must be reached over a WAN (cross-country), so TFTP-throughput 
is very slow (inherent of the protocol, since it's UDP and every packet needs 
to be acknowledged). On all of our PC's on the local subnet (using DHCP scope 
options and the BOOT ROM of the NIC, so not iPXE) it works well when I increase 
tftpblocksize to 8K and download time of a standard WinPE image drops from 10 
minutes to 1,5 minute; which is great. But iPXE is unable to handle this kind 
of TFTP-traffic.

Here's the script that I use to create the BCD config:

        set BCD-File=C:\TFTP-ROOT\Boot\BCD
        del %BCD-File%
        Bcdedit /createstore %BCD-File%
        Bcdedit /store %BCD-File% /create {ramdiskoptions}
        Bcdedit /store %BCD-File% /set {ramdiskoptions} ramdisksdidevice boot
        Bcdedit /store %BCD-File% /set {ramdiskoptions} ramdisksdipath 
\boot\boot.sdi
--->    Bcdedit /store %BCD-File% /set {ramdiskoptions} ramdisktftpblocksize 
1432
        Bcdedit /store %BCD-File% /set {ramdiskoptions} ramdisktftpwindowsize 2
        Set guid={10000000-1000-1000-1000-100000000000}
        Bcdedit /store %BCD-File% /create %guid% /d "WinPE PXE-boot image" 
/application osloader
        Bcdedit /store %BCD-File% /set %guid% systemroot \Windows
        Bcdedit /store %BCD-File% /set %guid% detecthal Yes
        Bcdedit /store %BCD-File% /set %guid% winpe Yes
        Bcdedit /store %BCD-File% /set %guid% osdevice 
ramdisk=[boot]\Boot\winpe_x86.wim,{ramdiskoptions}
        Bcdedit /store %BCD-File% /set %guid% device 
ramdisk=[boot]\Boot\winpe_x86.wim,{ramdiskoptions}
        Bcdedit /store %BCD-File% /create {bootmgr} /d "Lite Touch 
Installation" 
        Bcdedit /store %BCD-File% /set {bootmgr} timeout 1
        Bcdedit /store %BCD-File% /set {bootmgr} displayorder %guid%

This works, but is very slow. So I replace line 7 with:

        Bcdedit /store %BCD-File% /set {ramdiskoptions} ramdisktftpblocksize 
8192

Now it still works on pc's using the internal NIC's PXE-boot code (and it's 
much faster), but it doesn't work anymore with iPXE.

My guess is that iPXE cannot handle TFTP-responses that are spread over 
multiple ethernet frames. 1432 bytes works well because with overhead it's 
lower than the MTU (1500 bytes). But when the TFTP-server sends 2 or more UDP 
packets (to send a bigger block of data, requiring less acknowledgements), 
these somehow get lost.


Any ideas? Thanks a lot in advance.


Best regards,
Bien à Vous,

        Tom Lauwers
        DIGIT A.2-002  Desktop, Peripherals & Mobile Solutions
        Siemens
        Office: B-28 03/030
        Tel. (+32-2)[29]51649 - Fax. (+32-2)[29]50164
        E-mail: [email protected]




_______________________________________________
ipxe-devel mailing list
[email protected]
https://lists.ipxe.org/mailman/listinfo/ipxe-devel

Reply via email to