1. Install Jessie into kvm
kvm -m 2048 -drive file=lava2.img,if=virtio -cdrom debian-testing-amd64-netinst.iso2. Install lava-server
apt-get update; apt-get install -y postgresql nfs-kernel-server apache2 apt-get install lava-server # answer debconf questions a2dissite 000-default && a2ensite lava-server.conf service apache2 reload lava-server manage createsuperuser --username default --email=foo.bar@example.com $EDITOR /etc/lava-dispatcher/lava-dispatcher.conf # make sure LAVA_SERVER_IP is rightThat's the generic setup. Now you can point your browser to the IP address of the kvm machine, and log in with the default user and the password you made.
3 ... 1000 Each LAVA instance is site customized for the boards, network, serial ports, etc. In this example, I now add a single arndale board.
cp /usr/lib/python2.7/dist-packages/lava_dispatcher/default-config/lava-dispatcher/device-types/arndale.conf /etc/lava-dispatcher/device-types/ sudo /usr/share/lava-server/add_device.py -s arndale arndale-01 -t 7001This generates us a almost usable config for the arndale. For site specifics I have usb-to-serial. Outside kvm, I provide access to serial ports using the following ser2net config:
7001:telnet:0:/dev/ttyUSB0:115200 8DATABITS NONE 1STOPBIT 7002:telnet:0:/dev/ttyUSB1:115200 8DATABITS NONE 1STOPBITTODO: make ser2net not run as root and ensure usb2serial devices always get same name..
For automatic power reset, I wanted something cheap, yet something that wouldn't require much soldering (I'm not a real embedded engineer.. I prefer software side ;) . Discussed with Hector, who hinted about prebuilt relay boxes. Chose one from Ebay, a kmtronic 8-port USB Relay. So now I have this cute boxed nonsense hack.
The USB relay is driven with a short script, hard-reset-1
stty -F /dev/ttyACM0 9600 echo -e '\xFF\x01\x00' > /dev/ttyACM0 sleep 1 echo -e '\xFF\x01\x01' > /dev/ttyACM0Sidenote: If you don't have or want automated power relay for lava, you can always replace this this script with something along "mpg123 puny_human_press_the_power_button_now.mp3"
Both the serial port and reset script are on server with dns name aimless. So we take the /etc/lava-dispatcher/devices/arndale-01.conf that add_device.py created and make it look like:
device_type = arndale hostname = arndale-01 connection_command = telnet aimless 7001 hard_reset_command = slogin lava@aimless -i /etc/lava-dispatcher/id_rsa /home/lava/hard-reset-1Since in my case I'm only going to test with tftp/nfs boot, the arndale board needs only to be setup to have a u-boot bootloader ready on power-on.
Now everything is ready for a test job. I have a locally built kernel and device tree, and I export the directory using the httpd available by default in debian.. Python!
cd out/ python -m SimpleHTTPServerGo to the lava web server, select api->tokens and create a new token. Next we add the token and use it to submit a job
$ sudo apt-get install lava-tool $ lava-tool auth-add http://default@lava-server/RPC2/ $ lava-tool submit-job http://default@lava-server/RPC2/ lava_test.json submitted as job id: 1 $The first job should now be visible in the lava web frontend, in the scheduler -> jobs part. If everything goes fine, the relay will click in a moment and the job will finish in a few minutes.