Monday, January 28, 2013

Raspberry Pi Hackathon Idea - Web View

We had a hackathon at Rackspace this past Friday (1/25/2013). The hack I worked on was getting a Raspberry Pi to display a status web page. This seems to be a straight forward build. I was interested in this because the Raspberry Pi is $35 and can do just about anything you would like. There seems to be an unlimited number of projects that you can use these for including home automation, media center, or web browser.


Supplies used:
  • Raspberry Pi
  • HDMI cord
  • USB power cord
  • SDCard 4GB (Class 10)
  • Laptop
First was to flash the SDCard with Raspbian. This is a Debian release optimized for raspberry pi hardware. 


Linux from a terminal:
  1. $ df -h
    or
    $ fdisk -l
    Find the /dev/sdd1 that the SDCard is plugged into. Might be easiest to do this without the card plugged in and then a second time plugged and you should be able to tell which disk it is.
  2. sudo unmount /dev/sdd1
    Replace the /dev/diskX with the disk number of the SDCard.
  3. $ unzip 2012-12-16-wheezy-raspbian.zip
  4. Once the disk is unmounted then you may start the imaging process by:
    $ sudo dd bs=1M if=2012-12-16-wheezy-raspbian.img of=/dev/sdd
  5. dd does not give any feedback of how the process is going and it could take 5 minutes to image. To get some feedback you can get the info of the process id of dd that is running.
    In a new window or tab:
    $ ps auxf | grep dd
  6. With the process id # of dd type this:
    $ sudo kill -s USR1 #Look back at the window running dd and you should see some info on the screen about how many bytes it has written.
Next,  we needed to connect it all up and see if it will boot!
  1. Put the flashed SDCard into the Raspberry Pi
  2. Connect the HDMI cable to the Pi and TV or monitor.
  3. Connect a USB keyboard
  4. (Optional) Connect a USB mouse
  5. (Optional) Connect an ethernet cable to your router
  6. Connect the USB mini to power up the Raspberry Pi

Something we found out was that not all HDMI ports work the same. After a couple hours of working to get the Pi to display in 1080p we switched the HDMI port to the second one on the TV we had and it started working automatically. My first advice if the Pi is displaying in low resolution and it should be higher then try another HDMI port first.

After the boot up we need to expand the root file system to take advantage of the full SDCard space.
  • expand_rootfs

Then the Root partition will be resized. 

Configuring your installation:
  • configure_keyboard if you are not using a UK keyboard.
  • change_local 
  • change_timezone
  • ssh - enable ssh to make it remotely accessible.

After the configuration if complete select the Finish button at the bottom and reboot the Pi.

Now after the reboot it will boot to the command prompt. In order to change any of the configuration options of the Pi after the first boot you may run:
$ sudo raspi-config

The default username/password for Raspbian is pi/raspberry.

To get into the windowing mode you need to start the x windowing manager:
$ startx

The default windowing manager that Raspbian comes with is LXDE (Lightweight X11 Desktop Environment) This comes installed with a fast and lightweight web browser Midori



I hope this might inspire you to get a Raspberry Pi and use it in an interesting way. As I work on other projects I will continue to think of interesting ways to use the pi. Here are some of the ideas I have found and thought about doing myself. Not sure what which I will get around to doing.
  • Controlling water droplets (http://www.raspberrypi.org/archives/2986)
  • Controlling a traffic light for multiple purposes like Jenkins builds
  • Automating blinds to open and shut
  • Control the easy button
Here are some other hacking ideas

Thursday, January 10, 2013

Openstack - Running Devstack in VMWare with Ubuntu and KVM faster!

After creating an Ubuntu 12.04 Precise default install on my VMware Fusion I noticed that the performance was never up to par to do development. I found later that there were some missing options that will allow the virtual machine to be much more performant.

Here is what I did to make a build go from about 10 minutes to about 2 minutes.

Shutdown the Ubuntu VM.

Go to the VM Settings -> Processors & Memory -> Advanced Options


Check the "Enable hypervisor applications in this virtual machine"








There is one other option that may improve your performance overall as well.

Updating the Troubleshooting option is optional as it may cover up CPU lock up issues that I have seen in VMware.

Go to the VM Settings -> Advanced 
Set the "Troubleshooting" option to "None"




I would suggest after setting these create a snapshot so that in cases where things break down you can revert to a clean snapshot.

Boot up the VM and run the devstack installation.

To verify that KVM is setup properly after the devstack installation you can run these commands.

ubuntu@ubuntu:~$ kvm-ok 
INFO: /dev/kvm exists
KVM acceleration can be used