Installing Ubuntu 10.04 on Gumstix Overo
Ubuntu on Overo COM
Constructing an Ubuntu root file system for the Gumstix Overo COM is surprisingly easy with the rootstock utility. Since Ubuntu (particularly a version including a graphical desktop) likes lots of RAM, Gumstix recommends using an Overo COM with at least 512MB RAM, such as the Overo Tide COM. You can install Ubuntu on an Overo with 256MB RAM and the familiarity of Ubuntu for some users may outweigh occasional sluggishness. These instructions were tested on an Ubuntu 10.04 desktop machine; they should work for any recent Debian-based flavour of Linux. These instructions also work for Ubuntu 11.04 Natty Narwhal with a few things to keep in mind.
Make a MicroSD card
The rootstock utility builds a root file system inside a virtual arm machine supplied by qemu. First, install the required packages.
$ sudo apt-get install rootstock qemu
note: To create a rootFS image for Ubuntu 11.04 you need to make sure that the machine creating the image has qemu-arm-static version 14.x or better. Ubuntu 11.04 has this but 10.04 for instance does not and segfaults during rootFS image creation.
Next, use a command like the one shown below to make a root file system; check out 'man rootstock' for some extra options. Note: this will take an hour or two.
$ sudo rootstock --serial ttyS2 -d lucid -f "gumstix" --seed lxde,gdm,openssh-server,x11vnc
- the '-d' option specifies the distribution release: in this case, Ubuntu Lucid (10.04). In the case of Ubuntu Natty (11.04) use "natty".
- the '--seed' option specifies the list of packages to install: in this case, we install a lightweight desktop and a standard login manager as well as ssh & VNC servers so we can connect remotely.
- the user name ('-l') and password ('-p') options don't seem to work at the moment; see [Configuring Ubuntu] for more information.
To create a rootFS image for a headless server you can use the following:
$ sudo rootstock --serial ttyS2 -d lucid -f "gumstix" --seed build-essential,openssh-server
You should now have a spiffy root file system tarball so now we just need to create a bootable microSD with a standard bootloader and kernel.
Finally, the loadable modules in the file system should match the kernel. For users that don't want to build a kernel, you can use this 2.6.34 kernel and the associated modules tarball; this is approximately the Gumstix Overo kernel from September 9th, 2010. Extract the modules file into the second partition over top of the root file system. E.g. for a root partition mounted at /media/rootfs:
sudo tar xaf modules-2.6.34-r88-overo.tgz -C /media/rootfs
note: For Ubuntu 11.04 the compatible kernel version should be 2.6.38. However, the current version of openembedded ("bitbake virtual/kernel") at most yields a kernel version 2.6.36. The 2.6.36 was tested with the Ubuntu 11.04 rootFS image and seems to be working fine. Only some system messages about TWI2C, which should only concern you if you plan to use I2C on you Overo. Everything else seems to be working fine.
The rootstock utility doesn't make passwords properly. For now, it is easiest to remove the root password, boot your system to create new users and choose a new root password. To do this, open the /etc/shadow file on the second partition and delete the '*' for the root entry. E.g.
$ sudo gedit /path/to/second/partition/etc/shadow
Note: remember to put the ‘*’ back after you have created a user so someone can’t login as root and screw up your system
For Overo expansion boards with an Ethernet interface, it is nice to have Ethernet working right off the bat without having to have Network Manager installed. Open the /etc/network/interfaces file on the second partition.
$ sudo gedit /path/to/second/partition/etc/network/interfaces
Add the following code to the bottom:
auto eth0 iface eth0 inet dhcp
You can now unmount the microSD card, place it in the Gumstix and boot to it.
Login using serial console using these instructions or you can plug an Ethernet card in and jump in via ssh.
Once you are logged in, you might make some other tweaks:
- login as root and then create a user for yourself and give yourself sudo
$ sudo adduser youruser $ sudo adduser youruser sudo
- edit /etc/shadow and add the ‘*’ back in that we removed earlier. E.g.
$ nano /etc/shadow
- add some useful package repositories if they're not already present. Edit /etc/apt/sources.list and add these lines:
$ deb http://ports.ubuntu.com/ubuntu-ports lucid-updates main $ deb http://ports.ubuntu.com/ubuntu-ports lucid-security main
- get up-to-date:
$ sudo apt-get update && sudo apt-get upgrade
Here are some links I found useful when putting this post together: