ROCKS Installer

This page is a description of how the ROCKS installer boots, how it requests the kickstart file for the node, how the server generates the kickstart file, etc.

Table goes top to bottom in time.

Node Frontend
Power Up
Ethernet firmware starts NIC and broadcasts DHCPDISCOVER. The request will be tagged with some info including "client-architecture 00:00" (for x86)  
  Replies with DHCPOFFER with IP, and additional info including "next-server" and "filename"
Makes DHCPREQUEST for IP Registers lease and replies with DHCPACK
Now fetches via tftp filename from above at location next-server. For ROCKS, this file will be the pxelinux.0 image tftpserver sends requested file
Switch to running downloaded image  
pxelinux.0 starts through a list of config files to fetch from server, first is pxelinux.cfg/01-00-21-9b-92-1d-33 (use MAC address), then starts with full IP expressed in HEX pxelinux.cfg/0A0A0287, if no file found yet, starts dropping digits from filename. E.g. 0A0A02F 0A0A02 etc. If none of these were found, tries to get file named "default". send first file found
This file will be a boot script similar to a grub.conf file, except the images will be fetched via tftp. Can include kernel command line options  
Fetch kernel and initrd (if specified) via tftp send requested files
Down Ethernet in preparation for kernel control (not sure exactly when this step happens?)  
load initrd and kernel with kernel options specified, note that these options get passed to init as well  

How the ROCKS installer goes after the above.

Node Frontend
Start init (/bin/init is default)  
Loads drivers, including Ethernet ones (Ethernet will have been down)  
Runs pump dhcp client, this involves a couple quick cycles of Ethernet ports --- this is confused by spanning tree delays on switches...  
PXE boot on Eth0, repeats DHCP requests as done above by firmware, however the "client-architecture" is not sent in request Replies with IP, next-server and filename. These are the IP for frontend and "/install/sbin/kickstart.cgi" --- see /etc/dhcpd.conf on ROCKS frontend.
Starts network using settings received  
ROCKS has modified anaconda so that it always does an http request to get the kickstart file. Server to go to is DHCP "next-server" and URL is constructed using DHCP "filename" (strange but true). ROCKS doesn't simply use the ks= option (it wouldn't be possible to specify cgi options in normal syntax). Replies to http request, this involves generation of kickstart file. "rocks list host xml"
Saves kickstart file, and restarts anaconda with it  
Starts mini_httpd with special behavior for requests received from 127.0.0.1. These are forwarded via rocks-bt.py to the frontend. (location of frontend is "next-server"). The rocks-bt.py script changes these requests from whatever to whatever.torrent --- so torrent seeds are fetched instead of actual files. The mini_httpd can respond to requests from peer nodes that are also in the process of installing. Clever. Sends files as requested
Runs through install  
Near end of install, accesses URL ??? to change boot state Changes boot type of node

-- TomRockwell - 06 Feb 2009
Topic revision: r2 - 10 Sep 2009, TomRockwell
This site is powered by FoswikiCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding Foswiki? Send feedback