How to create an Ubuntu baseline image for OMF from scratch

Preparation

  • get physical access to a node
  • download the latest stable Ubuntu server release .iso
  • insert a USB stick into a Ubuntu machine and run "System - Administration - USB Startup Disk Creator"
  • format the stick and choose the .iso you downloaded to create a bootable device
  • umount the stick, insert it into the testbed node and reboot
  • if necessary, change the BIOS setting so the node boots from USB

Ubuntu installation

  • install Ubuntu server with your preferred options
  • it's recommended to format the partition(s) to ext3, since imagezip cannot handle ext4 as of now. Imagezip is used in "omf load" and "omf save".

Customizing Ubuntu for OMF

if [[ -n $new_host_name ]]; then
  echo "$new_host_name" > /etc/hostname
  /bin/hostname $new_host_name
fi
  • the above script contains brackets, redmine doesn't show them... look at the source
  • edit /etc/default/ntpdate and change "NTPDATE_USE_NTP_CONF=yes" to no
  • create a file /etc/cron.hourly/ntpdate-debian with content:
#!/bin/sh -e
ntpdate-debian
  • then chmod 755 the above file
  • To disable SSH root password run passwd -d root
  • open /etc/ssh/sshd_config and change:
PermitRootLogin yes 
PermitEmptyPasswords yes 
UsePAM no 
  • restart ssh
  • open a shell on another machine and connect to the node using SSH as user root. There should be no password query.
  • remove the user that was created during Ubuntu installation
  • edit /var/lib/locales/supported.d/local and add the line "en_AU.UTF-8 UTF-8" and a newline, then run locale-gen
  • VIA Nehemiah CPUs at WINLAB do not support PAE. Therefore you need to uninstall the server kernel with PAE support and install the non-PAE kernel (linux-generic package, image + headers).
  • for OMF 5.2, we do not support the ath5k driver that comes with Ubuntu yet. That's why we need to prevent it from loading on boot. Edit /etc/modprobe.d/blacklist-ath5k.conf and add the line
blacklist ath5k
  • Let's also blacklist ipw2200. Edit /etc/modprobe.d/blacklist-ipw2200.conf and add the line
blacklist ipw2200
  • Let's also blacklist evbug, since it prints a lot of kernel messages. Edit /etc/modprobe.d/blacklist-evbug.conf and add the line
blacklist evbug
  • before installing madwifi, run apt-get install binutils gcc gcc-4.4 libc-dev-bin libc6-dev libgomp1 linux-libc-dev. Now build madwifi from source (make; make install)
  • mv /usr/local/bin/* /sbin (the RC looks for madwifi tools there)
  • you can now dpkg -P binutils gcc gcc-4.4 libc-dev-bin libc6-dev libgomp1 linux-libc-dev
  • ath_pci is blacklisted by default in Ubuntu 9.10
  • edit /etc/network/interfaces and change eth1 (or other) to control (see udev rules below)
  • to prevent the adding of more rules for network devices, run
rm /etc/udev/rules.d/75-persistent-net-generator.rules
touch /etc/udev/rules.d/75-persistent-net-generator.rules
  • apt-get install omf-resctl-5.2 otg oml-client

Specific to NICTA

  • add w83697hf_wdt wdt_io=0x4E nowayout=1 timeout=30 to /etc/modules (watchdog timer)
  • apt-get install watchdog
  • in /etc/watchdog.conf, uncomment "watchdog-device = /dev/watchdog"
  • add w83627hf to /etc/modules (temperature sensors for use with lm-sensors)
  • edit rule /etc/udev/rules.d/70-persistent-net.rules to:
KERNEL=="eth*", DRIVERS=="via-rhine", NAME="control" 
KERNEL=="eth*", DRIVERS=="r8169", NAME="exp0" 
  • since our nodes have some problems with ACPI console standby, edit /etc/default/grub and change:
GRUB_CMDLINE_LINUX_DEFAULT="console=tty0 console=ttyS0,9600n8 quiet nomodeset acpi=off" 
  • run 'update-grub' after that
  • edit /etc/omf-resctl-5.2/nodeagent.yaml and set "xmpp_server: 10.0.0.200"

Specific to WINLAB

  • edit rule /etc/udev/rules.d/70-persistent-net.rules to:
KERNEL=="eth1", NAME="control" 
KERNEL=="eth0", NAME="exp0"