Acquire Debian U-Boot package for armel, for example file u-boot_2012.04.01-2_armel.deb from http://httpredir.debian.org/debian/pool/main/u/u-boot/

Extract the contents of this package to a temporary directory, for example

dpkg-deb -x u-boot_2011.12-2_armel.deb /tmp/bootloaderfun
cd /tmp/bootloaderfun/usr/lib/u-boot/dreamplug/

There you should find a usr/lib/u-boot/dreamplug/ directory with two files, uboot.elf and u-boot.kwb. You will need both.

Make sure you have the OpenOCD installed, for example

aptitude install openocd

Make sure your DreamPlug is connected to the UART and JTAG ports on your GuruPlug JTAG board. Make sure the JTAG board is connected to your computer's USB port and is exposing a USB serial device.

Connect to your DreamPlug console via a serial communications program, for example

screen /dev/ttyUSB0 115200

Power on your ?DreamPlug, and run

sudo openocd -f /usr/share/openocd/scripts/board/sheevaplug.cfg -c init -c sheevaplug_load_uboot

If your cables are connected properly and the timing is right, you should now be running the Debian U-Boot from memory on your device. If not, check your cables and continue blindly re-running this command as the box boots and reboots. Wait for that magic moment.

The banner should say 2011.12, and if you run 'version' at the U-Boot prompt, it should tell you that it was built on Debian. If this is not the case, something has gone wrong.

Next, put the u-boot.kwb file from that directory onto a TFTP server that you control, on a network reachable by your DreamPlug. There are alternative methods for getting this file to your plug computer, if you prefer, but they are not be enumerated here.

Set up the network and TFTP the image to the DreamPlug. This assumes that you have allocated IP 192.168.1.8 for your DreamPlug, your TFTP server is 192.168.1.2, and you have named the image on the TFTP server dreamplugfreedom.kwb.

setenv ipaddr 192.168.1.8
setenv serverip 192.168.1.2
tftp 0x6400000 guruplugfreedom.kwb

If this succeeds, you will see something like

Bytes transferred = 227200 (37780 hex)

Note the hex number, as we will be using it for the write to NAND flash.

nand erase 0x0 0x100000
nand write.e 0x6400000 0x0 0x37780

Now put in your USB key with FreedomMaker image on it in the USB port. Enter the following commands to reconfigure U-Boot to load linux image from ext2-formatted microSD card:

set 'x_bootcmd_kernel ext2load usb 0:1 0x6400000 /boot/uImage'
set 'x_bootargs_root root=/dev/sda1 rootdelay=10'
set 'bootcmd ${x_bootcmd_usb}; ${x_bootcmd_usb}; ${x_bootcmd_kernel};  setenv bootargs ${x_bootargs} ${x_bootargs_root}; bootm 0x6400000;'
saveenv
boot

(NOTE: yes, bootcmd invokes x_bootcmd_usb twice, it is necessary)