Re: [Etherboot-developers] Patch to align virt and phys spaces on i386
Brought to you by:
marty_connor,
stefanhajnoczi
From: Josh L. <jl...@sc...> - 2006-03-13 20:33:21
|
Marty Connor wrote: > I want to get a fancy new motherboard that has an EFI BIOS (err, saying > EFI and BIOS is redundant?!) and stick a 3COM 3C905C with PXE, and an > Intel EEPRO100B, and an RTL8139 with an Etherboot 5.4.cvs ROM, and see > what happens when I try to load PXELINUX. I actually tested something like this (but with old-fashioned BIOS, not EFI BIOS): As for PXE, I believe it can only "see" one NIC at a time. Has the PXE specification been updated to give boot code a way to access all of the different NIC cards in the system? In my experience, PXELINUX is dependent on the PXE BIOS calls to send/receive packets, and so it can only go through the one NIC that the BIOS has seen. All BIOS ROM implementations of PXE that I have observed, on systems with multiple PXE-capable cards, do PXE in series. They try for a timeout/failure on one card, before proceeding to the next card's BIOS. Does EFI now run multiple BIOS ROM's in parallel? Assuming each PXE BIOS still runs serially, and the first card that found a valid network server would download PXELINUX and boot into it, giving PXELINUX access to only that card, via the PXE BIOS calls. That's one of the problems with my "PXE-on-a-disk" Etherboot floppy/CD project: SYSLINUX first runs, and detects a single card with "ethersel.c32". Even if ethersel could be enhanced to detect multiple cards, the PXE stack set up by Etherboot can still service only one card at a time, because it's a fundamental limitation of the PXE stack that it is only aware of one card. If there's more than one card detected by an Etherboot driver, for instance multiple copies of the same model (for instance, my machine at home with 3 RTL8139's), then Etherboot will also serialize through each, I have noticed. This is good. Etherboot iterates through each card instance, and if it finds a valid server on any of them, boot succeeds. It only fails out and returns control to the BIOS if none of them worked. Right now, when this happens, the entire boot fails, as the BIOS gives up on the floppy/CD that Etherboot came from, and iterates to the next device. So, the resulting effect is that the user is only allowed to use the "PXE-on-a-disk" to boot from the *first* NIC detected, whatever that happens to be (it varies on different systems!). I'd love it if somehow SYSLINUX and Etherboot could cooperate somehow, to let Etherboot make a clean return into SYSLINUX, and tell ethersel.c32 to please try again, and search for PCI devices again, but exclude this card (and all previous cards tried) from the search. This way, it would be possible to eventually iterate through all the cards on the system, and boot up from any of them. Josh |