[gPXE] GRUB 1.97 PXE
Thomas Miletich
thomas.miletich at gmail.com
Wed Nov 4 18:17:44 EST 2009
Hi Paul,
I tested your setup and could identify a few problems. There are still
some more problems to solve before GRUB works with gPXE.
First, the resulting file 'grub2pxe' from the tutorial is identified
by gPXE as a Multiboot kernel, instead of a NBP. A NBP is a program a
PXE rom loads, to load the real kernel.
It could be a Multiboot file to make it bootable by other bootloaders,
or it could be wrongly identified as one by gPXE. My Ubuntu's 'file'
command say's it's no Multiboot kernel, but the gPXE Multiboot loader
seems capable of booting it. I don't know if a dual Multiboot-NBP
image is possible and will investigate that part further.
Anyway, there is no way to identify a binary file as a NBP, so gPXE
uses it as a last choice. As long as gPXE is compiled with Multiboot
support, Multiboot will take precedence.
The problem with that is that GRUB wants to use gPXE's PXE functions,
which are only available to NBPs. As only NBPs are supposed to use any
PXE functions, but not Multiboot kernels, gPXE turns itself completely
off before it starts GRUB, and there's no PXE stack left for GRUB to
use.
I disabled Multiboot support by putting a '#undef IMAGE_MULTIBOOT' in
src/config/general.h. Then I started GRUB with the following commands:
dhcp net0
startpxe net0
chain boot/grub/grub2pxe
startpxe shouldn't be necessary, but I used it to be safe. GRUB finds
the PXE stack and tries to download boot/grub/normal.mod but fails.
DEBUG=pxe_tftp shows that gPXE opens the file, and receives several
read requests:
[PXENV_TFTP_GET_FSIZE
tftp://192.168.10.100:69/boot/grub/normal.mod?blksize=512
fsize=34732][PXENV_TFTP_OPEN
tftp://192.168.10.100:69/boot/grub/normal.mod?blksize=512
blksize=1432][PXENV_TFTP_READ to 6800:0000][PXENV_TFTP_READ to
6800:0000][PXENV_TFTP_READ to 6800:0000][PXENV_TFTP_READ to 6800:0000]
/* here are many more READs */
[PXENV_TFTP_READ to 6800:0000][PXENV_TFTP_CLOSE]
Then GRUB enters rescue mode with the message "error: no file name found".
I verified that it works with a vendor PXE rom. I will continue my
investigation tomorrow. Right now, I don't have any idea why GRUB is
unable to find/use the file it requested. If anyone has any thoughts,
please let me know.
Thanks
Thomas
On Wed, Nov 4, 2009 at 1:31 AM, Paul Geraedts <p.f.j.geraedts at gmail.com> wrote:
> Hello,
>
> First of all, thanks for all the effort you all put in Etherboot/GPXE
> (I've much enjoyed your Google Tech Talk Video). I recently started
> using GPXE and it simply is a great tool! I already used various GPXE
> features succesfully.
>
> The one thing I can't seem to get to work though is the combination of
> GPXE and the PXE version of GRUB2 (the latest v1.97 to be precise). I
> followed the instructions on http://grub.enbug.org/PXEBOOT to build
> the GRUB PXE image and used DNSmasq in Ubuntu (Karmic) to serve the
> image to the client side (my laptop). It works with the build-in PXE
> ROM in my laptop, but it doesn't seem to work with GPXE. (To be
> precise: GRUB only wants to start in rescue mode in the latter case).
> Am I doing something wrong, or is there some sort of incompatibility
> between the two tools?
>
> Any help on this is much appreciated.
>
> Cheers, Paul
>
>
> BTW, what does the G in GPXE actually stand for?
> _______________________________________________
> gPXE mailing list
> gPXE at etherboot.org
> http://etherboot.org/mailman/listinfo/gpxe
>
More information about the gPXE
mailing list