User Tools

Site Tools


chumbyimagehowto

Download a prepared Image

You can download the finished images here: ChumbyImageDownload.

Build an Image on your own

Some daemons need to be compiled on another host machine, since the Chumby is not powerful enough for this task (and has not enough memory). Here are my notes:

Install Scratchbox

as described here. This greatly simplifies cross-compiling things. It also provides you a way to run the compiled ruby interpreter on a bigger host machine using QEMU. This is essential because I rely on rubygems, and the Chumby is too small to execute the gem install commands. Besides, at least for the sqlite3-ruby and mongrel gems, I need to compile native code.

The CMake tool does not compile in a Scratchbox environment, see http://www.staerk.de/thorsten/Nokia_N810#cmake: the error msg is

make[2]: *** No rule to make target `Source/CMakeFiles/CMakeLib.dir/link.txt', needed by `Source/libCMakeLib.a'.  Stop.

Workaround: I took link.txt from another computer and copied it ⇒ cmake is installed on the N810

The complete command sequence is:

mkdir build
cd build
../bootstrap --prefix=/mnt/storage/usr && make
# make install also fails, so:
cp bin/* /mnt/storage/usr/bin

Install dependencies

I found the following libraries necessary:

  1. OpenSSL 0.9.8n – avoid the 1.0.0 version, it causes problems with the Ruby interpreter.
  2. Zlib 1.5.3 – same as installed on the Chumby.
  3. Readline 6.1
  4. A recent version of sqlite, since I need it for my gems later on.

Compile the libraries and install them into /mnt/storage (use –-prefix where necessary).

Adjust the environment

to use the new libraries:

BASEDIR=/mnt/storage/usr
export PATH=$PATH:$BASEDIR/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$BASEDIR/lib

Install Ruby and rubygems

I was not able to compile Ruby 1.8.7, but Ruby 1.8.6-p399 works nice. To configure everything, I use the following commands:

export ac_cv_func_getpgrp_void=yes
export ac_cv_func_setpgrp_void=yes
./configure --target=arm-linux --host=arm-linux --disable-pthread --enable-wide-getaddrinfo --enable-zlib --with-zlib-dir=/mnt/storage/usr --enable-readline --with-readline-dir=/mnt/storage/usr --prefix=/mnt/storage/usr --with-openssl-dir=/mnt/storage/usr && make && make install

Install rubygems:

/mnt/storage/usr/bin/ruby setup.rb --prefix=/mnt/storage/usr
mkdir -p /mnt/storage/usr/lib/ruby/gems/1.8

Afterwards, the necessary gems can be installed using the gem command. It might be necessary to provide additonal path information to the gems that compile native extensions, for example

gem install sqlite3-ruby -- --with-sqlite3-dir=/mnt/storage/usr

The result

is an image with Ruby installed, and all necessary gems for my project. The tarball can be downloaded here. To install, scp it to the Chumby and log in:

scp *tarball* root@*chumby-ip*:/mnt/storage
ssh -l root *chumby-ip*
cd /mnt/storage
tar xvzf *tarball*

Now you have a directory /mnt/storage/usr with all tools permanently installed on your Chumby. In order to use it, please adjust your PATH and LD_LIBRARY_PATH appropriately:

export BASEDIR=/mnt/storage/usr
export PATH=$PATH:$BASEDIR/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$BASEDIR/lib
chumbyimagehowto.txt · Last modified: 2012/10/30 10:27 (external edit)