Netboot

From CSCWiki
Revision as of 07:39, 23 October 2012 by Jbroman (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Netboot Menu

An iPXE image which presents a network boot menu is available on caffeine. It is the default net boot image for dynamically assigned IPs to make it easy for office dwellers to install Linux directly from mirror while in the office.

This is bootstrapped by DHCP, as usual:

if exists user-class and option user-class = "iPXE" {
  filename "menu/menu.ipxe";
} else {
  filename "menu/undionly.kpxe";
}

This serves an iPXE image (built from ipxe head without modification) to a PXE ROM, and a menu script to iPXE. This menu script shows a number of different distro installers and boots whichever one the user selects. At present, options are Ubuntu, Debian and Arch.

iPXE supports booting off HTTP (including resolving hostnames via DNS), so all of the supported distributions boot straight over HTTP (from mirror, if possible). This means that to add new distributions to it, we need only tweak the menu config (/srv/tftp/menu/menu.ipxe) slightly: no files need to be copied to the TFTP root.

The menu script is implemented in the iPXE scripting language, which supports menus and some primitive flow control. The debian-installer images are loaded through the debian-common label, which correctly sets up the pxelinux environment so that these boot correctly.

This image will work only on amd64/i386 systems; for other architectures the standard approach is still necessary.

Mac

dhcpd.conf toplevel

# mac is insane
option mac-nc-client-unknown code 220 = string;
option mac-nc-client-id code 221 = string;
option mac-version code 230 = string;
option mac-username code 232 = text;
option mac-password code 233 = text;
option mac-nb-img code 234 = string;
option mac-apps-img code 235 = string;
option mac-machine-name code 237 = text;
option mac-client-nb-img code 238 = string;

dhcpd.conf host

host guarana {
 hardware ethernet 00:0d:93:72:cc:ec;
 fixed-address 129.97.134.86;
 next-server 129.97.134.17;
 filename "jaunty-yaboot-ppc7400/yaboot";
 option dhcp-max-message-size 576;
 option dhcp-parameter-request-list
         1, # subnet mask
         3, # routers
         220, 221, 230, 232, 233, 234, 235, 236, 237, 238; # mac options
 option mac-version 0:0:0:0;
}

Press Alt+RightWin+O+F during boot. Type "boot enet:0" at the prompt.

  • Note: Yaboot <=1.3.14 may fail if the initrd is too large (read: always)
  • Note: Yaboot from Git may fail to read the config. Type "conf file=jaunty-yaboot-ppc7400/yaboot.conf"