Armory by etotheipi is capible of running as an air-gapped offline wallet for bitcoin.
Raspberry Pi is a 35 USD / 1 BTC computer that is meant for children to experement on and learn computing. It also happens to be the perfect computer to dedicate to a bitcoin offline wallet. You can buy a pi for less than a bitcoin here. The instructions that follow will get you a binary of Armory that will run from a raspberry pi that has never touched the internet.
The following assums you you already have:
- a working Ubuntu 12.10 desktop (other versions and distros will likely work as well)
- a freshly flashed rasbian SD card for your Raspberry Pi
- a familiaraity with the linux command line.
Instructions for these pre-requesets can be found elsewhere.
On my Ubuntu box, I had to apt-get install
these packages. Your mileage may vary.
bison flex texinfo libtool automake libncurses5-dev gperf python-pyopencl git-core build-essential pyqt4-dev-tools swig libqtcore4 libqt4-dev python-qt4 python-dev python-twisted
Chris Boot has an awesome post on how to setup a cross-compiler for the RPi, I have abridged it here:
- Download crosstool-ng version 1.15.2.
- Unpack the tarball and cd into the unpacked directory, then run ./configure --prefix=/opt/cross. You can pick somewhere else instead of /opt/cross but that’s where I like to keep it.
- Run make and sudo make install.
- Make sure /opt/cross/bin is in your $PATH.
- Create a directory somewhere in your home directory that crosstool-ng will use as a staging ground. This will contain your toolchain configuration, downloaded files, and intermediary build results. This is not where your final toolchain will end up, and does take up quite a lot of space (3.5GB and up for me). cd into your chosen directory.
- Copy the
.config
file attached to this gist into your chosen directory. - Run ct-ng build.
- Go away and make a coffee, etc… This bit will take some time.
- You should end up with a freshly baked arm compiler ready for building kernels (and other things) for your Raspberry Pi in your Prefix directory you chose above.
- Just add your compiler directory to your $PATH and start compiling. If you used my preferred prefix directory, you would want to add /opt/cross/x-tools/arm-unknown-linux-gnueabi/bin.
Now that you have your arm-unknown-linux-gnueabi-g++
working in your $PATH
, clone the Armory repo
git clone git://github.com/etotheipi/BitcoinArmory.git
cd BitcoinArmory
Apply the attached patch to the two Makefiles (a smarter patch might be merged in the repo in the future)
patch -p1 < CXX.patch
And MAKE
CXX=arm-unknown-linux-gnueabi-g++ make
Finally, create a tarball to move to your shiny Raspberry
mkdir -p BitcoinArmoryRPi/img/
cp *.py *.so README LICENSE BitcoinArmoryRPi/
cp img/* BitcoinArmoryRPi/img/
tar cvfz BitcoinArmoryRPi.tar.gz BitcoinArmoryRPi
That's all folks!
- gotnate for these the clearified/forked instructions: 16nfAJ1CXmQuxJkKYtU93ZacvPDkiEzD3s
- FiloSottile for the original instructions: 18p7pUqqxPYtDaK3GytdVxdSKZzs25SihS
- etotheipi for this awesome client: 1ArmoryXcfq7TnCSuZa9fQjRYwJ4bkRKfv
Some packages I was required to install that were not in this manual are:
Also, 'Get a coffee' is such an understatement, this thing takes forever. I'm 8 hours in and no end in sight.
Thank you very much for this manual.