wiki:Software/eAM/ePXE

Version 1 (modified by mcgrof, 18 years ago) ( diff )

Go back —> Documentation —> Documentation/orbit-pxe

Loading Orbit-PXE

Whether you are imaging a node, saving a node image or doing inventory control Orbit nodes get orbit-pxe image loaded first into RAM. The way this is accomplished is by having the PXE server make a symbolic link of the node's IP address in hex to the orbit-pxe configuration file on the TFTP server. By default PXE configuration is to have the node boot off its local hard disk.

/tftpboot/pxelinux.cfg/default

default harddisk

label harddisk
  localboot 0

When orbit-pxe is to be loaded the nodehandler first tells the PXE server to set the symbolic link up to the orbit-pxe configuration. It does this by issuing a GET request to the the following URL to the PXE server:

http://pxe:5012/pxe/setBootImage?img=<image name>&node=<node ID>&ip=<ip address of node>

The PXE server in turn then creates a symbolic link for the respective IP address in hex. For example, if the node has an IP address of 10.18.1.2 (the case of sandbox8, node1-2) the respective IP address in hex is 0x0A.12.01.12 and as such its symbolic links' filename will be 0A120112.

/tftpboot/pxelinux.cfg/0A120112 —> orbit-2.0.0

DEFAULT boel

LABEL boel
KERNEL linux-orbit-pxe-2.6.20.4
APPEND rw init=/sbin/init initrd=initramfs-orbit-pxe-2.0.0.gz console=tty0 console=ttyS0,9600
DISPLAY message.txt
PROMPT 1
TIMEOUT 1

After the symbolic link request the nodehandler will the reboot the node and based on this example the node will then load linux-orbit-pxe-2.6.20.4 with initramfs-orbit-pxe-2.0.0.gz as its initramfs cpio archive. The kernel then boots and finally calls /etc/init.d/rcS:

#!/bin/sh
NETDEV_0="eth0"
NETDEV_DHCP="eth1"
UDHCPC_SCRIPT="/etc/udhcp.script"
UDHCPC="/sbin/udhcpc"
IP_CONFIG="/bin/ip"

mount -t proc proc /proc

# Get network up
$IP_CONFIG link set $NETDEV_0 up
$IP_CONFIG link set $NETDEV_DHCP up
$UDHCPC -i $NETDEV_DHCP -s $UDHCPC_SCRIPT

cat /.orbit_image
# Start nodeagent
nodeagent&

After this nodeagent will just wait until nodehandler issues it further commands.

Note: See TracWiki for help on using the wiki.