wiki:Internal/NewPXE

New PXE build and usage process as of July 2019

Note: OMF config is separate but similar, look at contents of "/etc/omf-expctl-5.4/services.yaml"

Overview of process

  • Build
    1. dependencies:
      1. checkout git repo
      2. ensure dependencies are installed (docker, make)
      3. alternately, ssh to buildvm1804-64.orbit-lab.org and cd to /opt/orbit-pxe
    2. run make build to initialize environment, compile code
    3. run make extract to extract artifacts (initfs.gz, kernel, configs…)
    4. run make publish-orbit-test to push artifacts to orbit testing path
    5. run make publish-orbit-prod to push artifacts to orbit "real" path
  • Background
    • Uses alpine linux as base, due to built in customizable tool for building initfs
    • pulls in updated frisbee, imagezip code from emulab repo
    • pull omf-resctl from orbit repo
  • Loading / saving
    1. Node boots
    2. Pulls tftp next-server from dhcp
    3. pulls config file from tftp server
    4. config file instructs to pull kernel and initfs over either http or tftp
    5. boots initfs
    6. discovers interfaces, requests dhcp lease on same interface as pxe boot occured ( from IPAPPEND 3 and rcS)
    7. pulls command line arguments from /proc/cmdline
    8. Launches omf-resctl with above arguments
      1. omf-resctl connects to xmpp with above arguments and waits for commands
      • Saving

OLD BELOW THIS LINE

Highlights

  1. PXE over http, instead of tftp
    1. lpxelinux.0 instead of pxelinux.0
    2. pxelinux.cfg supports urls, http:// etc.
    3. find DHCP option to specify URL directly, instead of filename, more reliable bootstrap?
      1. replace filename field with url
  2. Support for EFI
  3. New PXE image build procedure
    1. Use of mkinitramfs

Client Features

Request list from dhcpdump for i5 NUC, UEFI

  TIME: 2016-04-12 10:48:59.621
    IP: 0.0.0.0 (b8:ae:ed:7d:5f:80) > 255.255.255.255 (ff:ff:ff:ff:ff:ff)
    OP: 1 (BOOTPREQUEST)
 HTYPE: 1 (Ethernet)
  HLEN: 6
  HOPS: 0
   XID: b4683658
  SECS: 12
 FLAGS: 7f80
CIADDR: 0.0.0.0
YIADDR: 0.0.0.0
SIADDR: 0.0.0.0
GIADDR: 0.0.0.0
CHADDR: b8:ae:ed:7d:5f:80:00:00:00:00:00:00:00:00:00:00
 SNAME: .
 FNAME: .
OPTION:  53 (  1) DHCP message type         1 (DHCPDISCOVER)
OPTION:  57 (  2) Maximum DHCP message size 1464
OPTION:  55 ( 35) Parameter Request List      1 (Subnet mask)
					      2 (Time offset)
					      3 (Routers)
					      4 (Time server)
					      5 (Name server)
					      6 (DNS server)
					     12 (Host name)
					     13 (Boot file size)
					     15 (Domainname)
					     17 (Root path)
					     18 (Extensions path)
					     22 (Maximum datagram reassembly size)
					     23 (Default IP TTL)
					     28 (Broadcast address)
					     40 (NIS domain)
					     41 (NIS servers)
					     42 (NTP servers)
					     43 (Vendor specific info)
					     50 (Request IP address)
					     51 (IP address leasetime)
					     54 (Server identifier)
					     58 (T1)
					     59 (T2)
					     60 (Vendor class identifier)
					     66 (TFTP server name)
					     67 (Bootfile name)
					     97 (UUID/GUID)
					    128 (???)
					    129 (???)
					    130 (???)
					    131 (???)
					    132 (???)
					    133 (???)
					    134 (???)
					    135 (???)
					    
OPTION:  97 ( 17) UUID/GUID                 0066ffad1ee719ad .f......
					    849831b8aeed7d5f ..1...}_
					    80               .
OPTION:  94 (  3) Client NDI                010310           ...
OPTION:  93 (  2) Client System             0007             ..
OPTION:  60 ( 32) Vendor class identifier   PXEClient:Arch:00007:UNDI:003016

ftp://download.intel.com/design/archives/wfm/downloads/pxespec.pdf

DHCPOFFER must specify option 60.

Last modified 5 years ago Last modified on Jul 3, 2019, 5:04:37 PM
Note: See TracWiki for help on using the wiki.