[gPXE] question about packages transmission

Stefan Hajnoczi stefanha at gmail.com
Fri Feb 19 06:19:06 EST 2010


On Fri, Feb 19, 2010 at 10:54 AM, Simon POULLEAU
<simon.poulleau at ensimag.imag.fr> wrote:
> "  1. The host BIOS reads the configuration from nonvolatile memory to
> determine the boot device order. In order to boot over IB using PXE, the
> first entry for the boot order should be PXE by default. Use the tvflash -o
> command to set the boot order without entering the BIOS.
>   2. The host BIOS sends a DHCP request to a PXE-enabled DHCP server to
> obtain initial configuration and boot parameters, IP address, and boot
> loader filename.
>   3. The host BIOS loads the boot loader from TFTP server and starts it.
>   4. Boot loader reads its configuration file from TFTP server and parses
> it to get boot options, Linux kernel, and initrd filenames.
>   5. The boot loader loads the Linux kernel and executes it, passing some
> options from the configuration file.

>   6. The Linux kernel performs the initialization procedures and loads the
> initrd image from the TFTP server as a temporary root file system before
> mounting the root file system.

This never happens.  Linux does not download the initramfs over TFTP.
The bootloader places the initramfs into memory so the kernel can
access it.  If you think about it, the initramfs may contain the
network drivers so it must be preloaded - getting to the initramfs
cannot depend on drivers or other kernel modules.

>   7. The initrd image startup script starts and loads the IB stack and
> IPoIB driver. This process changes the root file system to an NFS volume.
>   8. The Linux initialization continues with the NFS root file system,
> using the IPoIB interface until it is up and running.   "

I am not aware of documentation that lists the steps like this.  This
sort of documentation is hard because gPXE supports many different
configurations and protocols.  Also, each component (BIOS, bootloader,
operating system, hardware) has different alternatives.  For example,
I have never heard of "tvflash".

These steps are too specific and vary between usecases (and there are
a lot of them).

There are documents like the BIOS Boot Specification, PXE
Specification, TFTP RFC, Infiniband specifications, and so on.  They
can help you get a deep understanding but do not show the big picture.

gPXE is open source.  You can read the code and add printf()
statements to see what is going on.

Use tcpdump/wireshark to understand what is happening at the network level.

Probably the best way to see how things work is by actually booting
over IB using gPXE :).

Stefan


More information about the gPXE mailing list