= Steps for Building a Baseline Image = Our images are primarily derived from a stock distributions OS. Currently we're following the Ubuntu distribution line. The only core service required during installation is the ssh server. The partition size should be kept small to simplify the image gathering process. Due to limitations with the Frisbee tools we can only use ext2/ext3 file systems. The major modifications that will be required are: * Setting up serial console * Grub serial config (including kernel flags) * Getty serial config (for loggin in from the serial console, other wise it looks like it hangs) * Setting Root user to have password less login (and dropping all other user records) * Modifying console logins (for serial console) * Modifying ssh logins (the two coupled) * removing unnecessary packages to minimize image size * installing necessary omf/oml packages * Configuring partitions and mount tables * touch a file named ntp.conf.dhcp in the ... directory * blacklisting modules of wireless interfaces * get hostname from dhcp ---- == !Version/Distributions specific Notes == === Ubuntu 11.10 === 1. To configure grub/kernel messages to goto serial add/modify the following lines in /etc/default/grub and run update-grub: {{{ GRUB_CMDLINE_LINUX="console=tty0 console=ttyS0,115200n8" GRUB_TERMINAL=serial GRUB_SERIAL_COMMAND="serial --speed=115200 --unit=0 --word=8 --parity=no --stop=1" }}} To configure the serial console for login create a file named /etc/init/ttyS0.conf and give it the following contents: {{{ # ttyS0 - getty # # This service maintains a getty on ttyS0 from the point the system is # started until it is shut down again. start on stopped rc or RUNLEVEL=[2345] stop on runlevel [!2345] respawn exec /sbin/getty -L 115200 ttyS0 vt102 }}} then start it with up start: {{{ sudo start ttyS0 }}} 1. To configure root with no password edit /etc/shadow, the first line should look like: {{{ root:!:15363:0:99999:7::: }}} remove the ! that follows the root. This will make the root account active and set the password to nil. Console logins for root will now not require a password. [[BR]] [[BR]] To get ssh to accept the changes we need to modify /etc/ssh/sshd_config make sure a couple of lines have specific values. They are: {{{ PermitRootLogin yes StrictModes no PermitEmptyPasswords yes UsePAM no }}} 1. To install the necessary packages from the mytestbed.net repository we need to first configure /etc/apt/sources.list . We will need the repository for natty since the oneiric repository doesn't containt packages from omf-5.3. {{{ deb http://pkg.mytestbed.net/ubuntu natty/ }}} The current oneiric repository doesn't have a version of libxmpp4r-ruby which was part of the natty(and older) universe repositories. Instead we will have to manually download the debs and install them. I used the follow commands to retrieve and install them from an ubuntu mirror. {{{ wget http://ubuntu.media.mit.edu/ubuntu//pool/universe/libx/libxmpp4r-ruby/libxmpp4r-ruby1.8_0.5-1_all.deb dpkg -i libxmpp4r-ruby1.8_0.5-1_all.deb wget http://ubuntu.media.mit.edu/ubuntu//pool/universe/libx/libxmpp4r-ruby/libxmpp4r-ruby_0.5-1_all.deb dpkg -i libxmpp4r-ruby_0.5-1_all.deb }}} The first is the actual package, the second is a container. Apt will refuse to install OMF-5.3 if the container package is not installed. From here we simply need to update and install the two omf-5.3 packages {{{ apt-get install omf-common-5.3 omf-expctl-5.3 }}} Finally we install OML2. The meta package seems broken, but is unnecessary any way. We can simply install all the oml2 packages (except for oml2-apps-all) {{{ apt-get install oml2-nmetrics liboml2-0 oml2-gpslogger oml2-proxy-server oml2-iperf oml2-otg2 oml2-wlanconfig oml2-proxycon oml2-trace liboml2-dev oml2-server }}}