== 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 1. ensure dependencies are installed (docker, make) 1. alternately, ssh to {{{buildvm1804-64.orbit-lab.org}}} and cd to {{{/opt/orbit-pxe}}} 1. run {{{ make build }}} to initialize environment, compile code 1. run {{{ make extract }}} to extract artifacts (initfs.gz, kernel, configs...) 1. run {{{ make publish-orbit-test}}} to push artifacts to orbit testing path 1. 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 1. Pulls tftp next-server from dhcp 1. pulls config file from tftp server 1. config file instructs to pull kernel and initfs over either http or tftp 1. boots initfs 1. discovers interfaces, requests dhcp lease on same interface as pxe boot occured ( from IPAPPEND 3 and rcS) 1. pulls command line arguments from {{{/proc/cmdline}}} 1. Launches omf-resctl with above arguments 1. omf-resctl connects to xmpp with above arguments and waits for commands * Saving 1. == OLD BELOW THIS LINE == == Highlights == 1. PXE over http, instead of tftp 1. lpxelinux.0 instead of pxelinux.0 1. pxelinux.cfg supports urls, http:// etc. 1. find DHCP option to specify URL directly, instead of filename, more reliable bootstrap? 1. replace filename field with url 1. Support for EFI 1. 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.