Sunday, July 17, 2011

Simple Step by Step Sheeva plugcomputer upgrade

After a long time running my sheevaplug with the original Ubuntu 9.04 the last Ubuntu version available for the sheeva, I found myself without any security update, no APT no nothing. I have stretched this non LTS Ubuntu version to the maximum.

Since the actual update took me a long long time, due to a series of technical problems and the difficulty of getting the uboot bin file, I will document every single step and will include a link to every file to make sure that I can refresh my sheeva easily in the future. There are many other how-to's around the web, I tried few of them but non worked for me.

Pre-Requisites:
  • A 32b linux installation
  • php5-cli
  • openocd
  • libftdi1
  • Sheeva Plug Installer (a 145MB download link)
Just get a old pc/laptop with a 32b linux, I'm using LinuxMint but any other distro should work fine, also VirtualBox should work but I haven't tried yet.
Install php5-cli if you don't have it installed.
sudo apt-get install php5-cli
I had problems running the php script because the default configuration didn't included the local environmental variables. So take a look to:

/etc/php5/cli/php.ini

search for "variables_order"
and make sure the E is there; like that:
variables_order = "EGPCS"
install openocd;

sudo apt-get install openocd
Then install libftdi1

sudo apt-get install libftdi1

And to finish the prep work, download and extract the Sheeva Plug Installer to your favorite directory.

Setup you connection
These are the setting to connect to your sheeva plug with any terminal from link.
  • 115200 baud
  • 8 data bit
  • N parity
  • 1 stop byte
  • 0 (none) flow control
Connect the Sheeva, reboot and launch putty or you favorite terminal, you should see booting process. You have few second to interrupt the booting process and go directly to uboot; confirm the uboot version with.
uboot version
The Sheeva Plug installer includes uboot version 3.4.19. Others howto's recommend U-Boot 3.4.27+pingtoo.

U-Boot Upgrade

Took me a while to get the bin file, but I finally found it in here. The actual uboot is part of the zip file in "Preparing USB Pendrive". By the way this is great tutorial. Or you can download the U-Boot 3.4.27+pingtoo from here.

Replace the uboot.bin file in /sheevaplug-installer/uboot with this uboot.bin. Edit /sheevaplug-installer/uboot/uboot-env/uboot-nand-custom.txt to include your sheeva plug MAC address.


Prepare the USB drive

Download and save the following files in a formatted USB drive.
  • initrd (this is the same found in the installer)
  • uImage kernel 2.6.39.3 (or newer from http://sheeva.with-linux.com/sheeva/ )
  • modules.tar.gz 2.6.39.3 (or newer from http://sheeva.with-linux.com/sheeva/ )
  • rootfs.tar.gz (or make your own with this script, download to your current sheeva, chmod +x and run as root)
Upgrade

Plug the USB drive in the sheeva, and run the following command from the sheevaplug-installer folder.
php runme.php nand
This should copy the new uboot into the sheeva, and then will execute run recover1. If you just want to reflash withou upgrade uboot, just execute run recover1 from the uboot console.

Finishing

  1. check the date, apt-get may not work if the date is wrong.
  2. apt-get update
  3. apt-get upgrade
  4. regenerate the ssh
    • rm /etc/ssh/ssh_host*
    • ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key -N ""
    • ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key -N ""
  5. dpkg-reconfigure tzdata
  6. dpkg-reconfigure locales
  7. edit /etc/hostname to change the hostname.
Credits
http://www.plugcomputer.org/downloads/plug-basic/

Since the original link from plugcomputer forum is broken, I used the uboot found here: http://caller9.com/blog/21/full/

Manually unpacking a tar ball of Debian on SheevaPlug
http://www.cyrius.com/debian/kirkwood/sheevaplug/unpack.html

SheevaPlug Installer
http://plugcomputer.org/plugwiki/index.php/SheevaPlug_Installer

U-Boot Links:

Uboot howto Cross Compile
http://doukki.net/wiki/tutoriels/uboot.howto

Upgrading SheevaPlug's Uboot
http://www.cyrius.com/debian/kirkwood/sheevaplug/uboot-upgrade.html