Raspberry Pi 2 After purchasing a Raspberry Pi 2, I decided to move some of my projects to it.  I also added an external 2.5 inch USB drive via a USB hub.  I store various sensor information in a MongoDB database and needed everything to run on the R-Pi 2.  I chose to stick with the well-supported Debian Linux port, Raspbian Wheezy, as opposed to ARCH Linux that I used on my old R-Pi B+, as the R-Pi 2 has a quad core ARMv7 processor that requires a new kernel.

UPDATE (30 January 2016):  I’ve compiled MongoDB 3.0.9 and tools for R-Pi 2 Raspbian (Jessie).  Check here.

UPDATE (25 December 2015): Instructions for compiling MongoDB 3.0.7 and tools for R-Pi 2 running Raspbian Jessie are now available.  Check here.

UPDATE (8 November 2015): If you are running Raspbian Jessie, you can “apt-get install mongodb”.  This will result in an install of MongoDB v2.4.  Good enough for most uses and you get a working mongo shell 😉  If you want MongoDB v2.6.3, read-on!

I was back to hunting for a compatible MongoDB binary — or instructions on how to compile from source.  Research showed that MongoDB does not compile for ARM after version 2.6.3 🙁  Searching the ‘net led me to the “facat’ blog.” This blog shows how to cross-compile MongoDB 2.6.3 for ARM.  Precompiled binaries are also available.  NOTE that the mongo shell does NOT work correctly on the R-Pi.  “mongod”, the server, does work fine and can be accessed programmatically or via a mongo shell from another (non-R-Pi) computer.  I use “mongo” on my Mac to connect to “mongod” running on the R-Pi 2.

more after the break

I created a “mongodb.conf” in “/etc” that configures MongoDB to use a data directory and log file on my USB-connected hard drive which is mounted on “/mnt”.  The config file:

$ cat mongodb.conf
destination: file
path: "/mnt/log/mongodb/mongodb.log"
logAppend: true
quiet: true
dbPath: "/mnt/DBdata"
enabled: true
fork: true
bindIp: XXX.0.0.XXX
port: 27017

I invoke mongod with “mongod -f /etc/mongodb.conf”  I connect via mongo on my Mac with “mongo −−host XXX.0.0.XXX”  You can get a zip file of all of the MongoDB executables here. NOTE again that the MongoDB shell, “mongo” does not work correctly on the R-Pi and throws a segment fault on many operations.

I also recommend Robomongo,  a shell-centric cross-platform open source MongoDB management tool (i.e. Admin GUI). Robomongo embeds the same JavaScript engine that powers MongoDB’s mongo shell.  It is available for Mac, Windows and Linux.