Post Reply 
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Winboot failed to load WinPE greater than 600MB on Dell R640
2020-10-23, 10:26
Post: #2
RE: Winboot failed to load WinPE greater than 600MB on Dell R640
A similar issue recently popped up on IRC, when trying to load an initramfs > 1G. It was due to the fact that ipxe can only access memory below 4GB in BIOS mode, and the BIOS will map random stuff there too, sometimes in a really fragmented manner that you don't get a nice large chunk of continuous memory, which is required. Maybe it's similar with wimboot?

I'm lazy and just copy & paste the relevant parts of the conversation:

Quote:<phibs> Anyone ever seen issues on certain nics PXE booting where the initrd is > 1G?
<phibs> I get: No space left on device ( on an Intel XXV710
<mcb30> phibs: with the BIOS builds (even the 64-bit BIOS builds) you are limited to loading images into the low 4G of memory
<phibs> yeah the image is only 1.2G though
<phibs> is this a BIOS / Vendor issue?
<phibs> seems to only be an issue on this new platform we are testing
<mcb30> Parts of the low 4G of address space will be reserved for PCI BARs, which means that it's not atypical for a BIOS to place only e.g. 2G of actual RAM within the low 4G of address space
<phibs> ahhhhhh
<mcb30> You can check the E820 memory map as reported by e.g. the Linux kernel log
<mcb30> (or by iPXE if you build with DEBUG=memmap)
<phibs> any idea on if it is fixable, or if I have to shrink my initrd?
<phibs> also thanks!
<mcb30> You'll need to shrink it or switch to UEFI
<phibs> mcb30: a weird thing is, when I enable above 4G decoding in the BIOS, it won't PXE at all!
<phibs> I get this lovely one
<mcb30> phibs: that error makes some sense. If the PCI BAR is mapped above 4G then the PXE stack needs to be able to switch into 64-bit long mode to access it. This is why the 64-bit BIOS build of iPXE exists. It's very unlikely that Intel's PXE ROM can do that.
<phibs> mcb30: hmmmm some hosts won't boot without that enabled, this host won't boot with it enabled Sad
<phibs> so the 64 bit build WILL work w/ that ?
<mcb30> phibs: the 64-bit BIOS build will be able to drive the NIC (assuming you're using ipxe.* or intelxl.* rather than undionly.kpxe), but (a) you'll still need a way to get iPXE loaded in the first place, (b) it will still be limited to whatever RAM the BIOS chooses to place below 4G
<mcb30> phibs: it's possible that if you place the PCI BARs above 4G then the BIOS would place more RAM below 4G, but that's not guaranteed - you'd have to test it
<phibs> undionly.kpxe
<phibs> I am very glad you are well versed into the terribleness that is x86 ;0
<mcb30> undionly.kpxe relies on the underlying PXE ROM's driver, so won't work. However, if you try booting from ipxe.usb (on a USB key), you should find that iPXE is able to detect and drive the NIC
Find all posts by this user
Quote this message in a reply
Post Reply 

Messages In This Thread
RE: Winboot failed to load WinPE greater than 600MB on Dell R640 - simon - 2020-10-23 10:26

User(s) browsing this thread: 1 Guest(s)