[gPXE] GRUB 1.97 PXE

Paul Geraedts p.f.j.geraedts at gmail.com
Thu Nov 5 17:05:01 EST 2009


Hi Thomas,

Interpreted as a multiboot image, I surely didn't expect that. Great
that you figured it out.

The remaining part is definately interesting to say the least. I get
identical behavior over here. Currently I haven't got an idea about it
though, sorry. If so, I'll let you know.

Paul

P.S. I wasn't aware of the serial debugging feature: nice one.


2009/11/5 Thomas Miletich <thomas.miletich at gmail.com>:
> 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