PXE Boot

Topic

PXE Boot

Explanation

The Preboot eXecution Environment (PXE, also known as Pre-Execution
Environment;  sometimes pronounced  "pixie") is  an  environment to
boot  computers using  a  network interface  independently of  data
storage devices  (like hard disks) or  installed operating systems.
PXE was introduced as part of the Wired for Management framework by
Intel and is described in the specification (version 2.1) published
by Intel and  Systemsoft on September 20, 1999.[1]  It makes use of
several  network  protocols   like  Internet  Protocol  (IP),  User
Datagram Protocol (UDP), Dynamic Host Configuration Protocol (DHCP)
and  Trivial File  Transfer Protocol  (TFTP) and  of  concepts like
Globally  Unique Identifier  (GUID), Universally  Unique Identifier
(UUID)  and  Universal Network  Device  Interface  and extends  the
firmware of  the PXE  client (the computer  to be  bootstrapped via
PXE) with  a set  of predefined Application  Programming Interfaces
(APIs).


The PXE protocol  is approximately a combination of  DHCP and TFTP,
albeit with  subtle modifications to  both. DHCP is used  to locate
the appropriate boot server or  servers, with TFTP used to download
the initial bootstrap program  and additional files.  To initiate a
PXE bootstrap  session the  PXE firmware broadcasts  a DHCPDISCOVER
packet extended  with PXE-specific options  (extended DHCPDISCOVER)
to port  67/UDP (DHCP  server port). The  PXE options  identify the
firmware as  capable of PXE, but  they will be  ignored by standard
DHCP  servers.  If  the  firmware  receives  DHCPOFFERs  from  such
servers, it may  configure itself by requesting one  of the offered
configurations.

source : http://en.wikipedia.org/wiki/Preboot_Execution_Environment

Get The Hang

 // next, check what the packet type was
        opt = request(43,71);
        if(opt == NULL)
        {
                logger->Event(LEVEL_INFO, "MakeReply", 1,
                  "Received proxy DHCP packet");
                pkttype = 1;
        }
        else
        {
                delete[] opt->data;
                delete opt;
                logger->Event(LEVEL_INFO, "MakeReply", 1,
                  "Received PXE request packet");
                pkttype = 2;
        }

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s