Network boot for x86 target

Hello,
I am trying to do a Network boot for x86 target (QNX 6.3). The x86 target
has BIOS. The Intel
Network Controller on the x86 target has a Boot Agent - PXE 2.1. I can
see that the target gets an IP address from the BOOTP/DHCP Server and
then tries to obtain the network bootstrap image from the TFTP Server.
I provided the image file that I generated using mkifs - the TFTP
Client on the Card complains “PXE-E3A: TFTP too many packages” and
exits. I found some information on the Internet that said I have to do
the following

  • The boot file to be supplied by the TFTP Server should be pxegrub
    compiled for QNX.
  • The pxegrub then gets config file
  • The config file directs the pxegrub to fetch the main boot image.
    This boot image has to be multi-boot compliant.

Now my questions are

  • do these steps look OK? Am I missing anything obvious here? Any
    suggestions?
  • How do I create multi-boot compliant image for x86? Do I have to use
    elf.boot instead of bios.boot? If yes how do I do this - what changes
    to the build script file are necessary? I have a build script file that
    works for the target.

Thank you
Abhijit

arao wrote:

Client on the Card complains “PXE-E3A: TFTP too many packages” and

You need to use ELF/multi-boot format.

  • How do I create multi-boot compliant image for x86? Do I have to use
    elf.boot instead of bios.boot? If yes how do I do this - what changes
    to the build script file are necessary? I have a build script file that

My first line of my PXE/GRUB boot script looks like this (in other
words, just replace “bios” with “elf”):

[virtual=x86,elf +compress] .bootstrap = {

}

Thank you - I am yet to get the pxegrub up and running satisfactorily. I am
refering to this image (with the “elf” +compress) from the pxegrub config
file.

Abhijit


“John Garvey” <jgarvey@qnx.com> wrote in message
news:d6tiqu$85o$1@inn.qnx.com

arao wrote:
Client on the Card complains “PXE-E3A: TFTP too many packages” and

You need to use ELF/multi-boot format.

  • How do I create multi-boot compliant image for x86? Do I have to use
    elf.boot instead of bios.boot? If yes how do I do this - what changes
    to the build script file are necessary? I have a build script file that

My first line of my PXE/GRUB boot script looks like this (in other
words, just replace “bios” with “elf”):

[virtual=x86,elf +compress] .bootstrap = {

}

John,

Is pxegrub the only way for Network Boot?

It looks like the Ethernet Controller that I have may not be compatible with
PXEGRUB.
My image size is almost 1.6 MB - QNX 6.3.

Can you please tell me how is it setup at your place?

The x86 target (with BIOS) that I am using has the Flash Drive soldered - so
there is no way I can move the flash drive around. The target does not have
Video support - it is a headless system. I have to use serial port to
connect to devices such as GPS - so I cannot use it for image
transfer. Please suggest a way for me to load image during the development
process.
Let me know if you have any questions - I hope talking to you / explaining
it to you may help me find some answers.

Thank you for your help

Abhijit
<rao.abhijit@gmail.com> wrote in message news:d6untb$44u$1@inn.qnx.com

Thank you - I am yet to get the pxegrub up and running satisfactorily. I
am
refering to this image (with the “elf” +compress) from the pxegrub
config
file.

Abhijit


“John Garvey” <> jgarvey@qnx.com> > wrote in message
news:d6tiqu$85o$> 1@inn.qnx.com> …
arao wrote:
Client on the Card complains “PXE-E3A: TFTP too many packages” and

You need to use ELF/multi-boot format.

  • How do I create multi-boot compliant image for x86? Do I have to use
    elf.boot instead of bios.boot? If yes how do I do this - what changes
    to the build script file are necessary? I have a build script file
    that

My first line of my PXE/GRUB boot script looks like this (in other
words, just replace “bios” with “elf”):

[virtual=x86,elf +compress] .bootstrap = {

}

arao wrote:

Is pxegrub the only way for Network Boot?
It looks like the Ethernet Controller that I have may not be compatible with
PXEGRUB.
My image size is almost 1.6 MB - QNX 6.3.
Can you please tell me how is it setup at your place?

Hmm, long time since I set this up. Vaguely …

My network card was supported (el900), so I just built pxegrub with the
appropriate “–enable-*” options.

Set up my server “/etc/dhcpd.conf” with “filename “/boot/pxegrub”” for
the required boot clients. I also use the menu option (to be able to
pick which version of the OS I want to boot into), but that is
unnecessary complication for this. And enable “tftp” service (69/udp).

Prebuild the .ifs for the client, with “elf” instead of “bios” (as
per earlier post). Mine comes to 700MB, since I just have enough to
start up networking and NFS, and then I pull the bulk of the sysinit
executables from there.

Sorry, it was years ago and I’ve forgotten a lot of it; but if you can’t
build pxegrub with support for your network card is a bit of a moot
point anyway. Someone else will have to comment on alternative loaders.

Thank you it is very helpful - I guess you meant 700KB (KiloBytes).

“John Garvey” <jgarvey@qnx.com> wrote in message
news:d7k5uk$34q$1@inn.qnx.com

arao wrote:
Is pxegrub the only way for Network Boot?
It looks like the Ethernet Controller that I have may not be compatible
with
PXEGRUB.
My image size is almost 1.6 MB - QNX 6.3.
Can you please tell me how is it setup at your place?

Hmm, long time since I set this up. Vaguely …

My network card was supported (el900), so I just built pxegrub with the
appropriate “–enable-*” options.

Set up my server “/etc/dhcpd.conf” with “filename “/boot/pxegrub”” for
the required boot clients. I also use the menu option (to be able to
pick which version of the OS I want to boot into), but that is
unnecessary complication for this. And enable “tftp” service (69/udp).

Prebuild the .ifs for the client, with “elf” instead of “bios” (as
per earlier post). Mine comes to 700MB, since I just have enough to
start up networking and NFS, and then I pull the bulk of the sysinit
executables from there.

Sorry, it was years ago and I’ve forgotten a lot of it; but if you can’t
build pxegrub with support for your network card is a bit of a moot
point anyway. Someone else will have to comment on alternative loaders.

PXEGRUB is not strictly required, but it is helpful. Since PXE is a BIOS
extension, it can’t load images larger than 640k (less in real life). If
your image fits, you could just supply QNX .ifs image to the TFTP server
that serves PXE requests and it will boot.

Otherwise you have to use some chained scheme (load a better loader first,
then load the real thing).

PXEGRUB is one such loader. It can load Linux, BSD or any
multiboot-compliant OS directly. To make QNX6 multiboot-compliant you need
to build the .ifs with elf.boot instead of bios.boot (it appeared starting
from 6.3, but can be used with 6.2x too).

If you need to boot something really weird (QNX4 or something else funny)
then there’a module for PXEGRUB (I think it is called MEMDISK) that will
emulate a floppy drive using an image from TFTP server. That way you can
boot any bootable floppy over PXE.

– igor

“arao” <abhijit.rao@nospam.nospam> wrote in message
news:d7ob4m$882$1@inn.qnx.com

Thank you it is very helpful - I guess you meant 700KB (KiloBytes).

“John Garvey” <> jgarvey@qnx.com> > wrote in message
news:d7k5uk$34q$> 1@inn.qnx.com> …
arao wrote:
Is pxegrub the only way for Network Boot?
It looks like the Ethernet Controller that I have may not be compatible
with
PXEGRUB.
My image size is almost 1.6 MB - QNX 6.3.
Can you please tell me how is it setup at your place?

Hmm, long time since I set this up. Vaguely …

My network card was supported (el900), so I just built pxegrub with the
appropriate “–enable-*” options.

Set up my server “/etc/dhcpd.conf” with “filename “/boot/pxegrub”” for
the required boot clients. I also use the menu option (to be able to
pick which version of the OS I want to boot into), but that is
unnecessary complication for this. And enable “tftp” service (69/udp).

Prebuild the .ifs for the client, with “elf” instead of “bios” (as
per earlier post). Mine comes to 700MB, since I just have enough to
start up networking and NFS, and then I pull the bulk of the sysinit
executables from there.

Sorry, it was years ago and I’ve forgotten a lot of it; but if you can’t
build pxegrub with support for your network card is a bit of a moot
point anyway. Someone else will have to comment on alternative loaders.

Where is available for download the pxegrub executable?

Thanks

Hello,

pxelinux is a part of GRUB loader distribution,

http://www.gnu.org/software/grub/grub-legacy.en.html

You can download sources

ftp://alpha.gnu.org/gnu/grub/grub-0.97.tar.gz

and compile grub, pxegrub and nbgrub as an one-pass operation. README.netboot
file in netboot directory contains all needed information concerning
configuraion options.

Regards,
Igor.

yapdlf wrote:

Where is available for download the pxegrub executable?

Thanks