Author

Topic: Raspberry Pi + Arch Linux + Armory(v0.90-beta) = True (Read 3412 times)

newbie
Activity: 12
Merit: 0
I have finally managed to get the Raspberry Pi, with Arch Linux as the OS, and the latest version of Armory (0.90-beta) to work. I thought I would share the process of setting this up as the other guides I've seen didn't work for me (Raspbian or older version of Armory, and I definately want to do fragmented backups on my offline wallet! Smiley).

Note that none of the files I provide for download are necessary for getting this to work. You only need the patches and they are just text files you can assess for yourself. The other files are just to make it easier for some of you.

1. First get yourself a cross compiler. A guide for setting one up can be found at https://bitcointalksearch.org/topic/m.1691384

2. Download this file http://www9.zippyshare.com/v/58820498/file.html. It includes the static library libpython2.7.a and the directory /usr/include/python2.7 from the RPi.
 a. You can download the source code for python2.7 and compile it on your RPi and extract the necessary files yourselves. I found that installing python2 via pacman (Arch package manager) didn't provide me with libpython2.7.a.
 b. The directory /usr/include/python2.7 can be found on the RPi by installing python2 via pacman.

3. Create two subdirectories under your home directory:
Code:
mkdir $HOME/{lib,include}
and decompress and move libpython2.7.a to the lib directory and python2.7 to the include directory.
Code:
tar xzvf python-arm-files.tgz
mv libpython2.7.a $HOME/lib/
mv python2.7 $HOME/include/

4. Get Armory:
Code:
git clone https://github.com/etotheipi/BitcoinArmory.git

5. Download this file, http://www30.zippyshare.com/v/67984125/file.html. It includes patches that will be used on some of the Makefiles and ArmoryQT.py and armoryengine.py.

6. Uncompress and move the patches to the BitcoinArmory directory and apply them.
Code:
tar xzvf patches.tgz && mv *patch BitcoinArmory/ && cd BitcoinArmory
patch -p1 -i cryptopp.Makefile.patch && \
patch -p1 -i leveldb.Makefile.patch && \
patch -p1 -i cppForSwig.Makefile.patch && \
patch -p1 -i ArmoryQT.patch && \
patch -p1 -i armoryengine.patch

7. Now everything should work. run:
Code:
make

8.Create a directory for the RPi Armory version and move the necessary files to it and compress that directory.
Code:
mkdir armory-pi
cp -r *py *so LICENSE README img armory-pi/
tar cjvf armory-pi.tar.bz2 armory-pi
Now you have Armory compiled and ready to run on RPi with Arch Linux. First though, Arch must be setup properly. To get the necessary packages I found it easiest to use pacman and then save the downloaded packages to a USB stick for later installation on the offline system.

9. I have been using ArchLinuxARM-2014.01-rpi.img which can be downloaded from archlinuxarm.org/platforms/armv6/raspberry-pi. Install instructions are found there as well.

10. Some packages are necessary to get Armory up and running. Make sure you have an Internet connection and run
Code:
pacman -Syu
pacman -S xorg xorg-xinit lxde
pacman -S python2 python2-psutil python2-pyqt4 twisted
You may also download any additional packages you feel you may need on your offline wallet.

11. Download jsonrpc-1.2.tar.gz from https://pypi.python.org/pypi/jsonrpc/1.2 and
 a. Extract it
 
Code:
tar xzvf jsonrpc-1.2.tar.gz
 
b. Enter the decompressed directory and build it
 
Code:
cd jsonrpc-1.2 && python2 setup.py build
 
c. Install it
 
Code:
python2 setup.py install
 

12. Try the system out so that everything works as expected.
 
Code:
echo 'exec startlxde' > ~/.xinitrc
 startx
 cd armory-pi && python2 ArmoryQT.py
 

13. Go to /var/cache/pacman/pkg and move all .xz files to a USB stick.

14. Reinstall Arch Linux on the SD-card. When running it this time around make sure it is completely offline.

15. Move the packages and armory-pi.tar.bz2 to the freshly installed system.

16. Install the packages on the system
Code:
pacman -U *xz

17. Extract Armory
Code:
tar xjvf armory-pi.tar.bz2

18. Start the desktop environment and run armory.
Code:
echo 'exec startlxde' > ~/.xinitrc
startx
cd armory-pi && python2 ArmoryQT.py

19. Done!

The one functionality I didn't get working was message signing. The problematic line is #43 in ArmoryQT.py. If anyone finds a solution, please post it here.

Some tips:

Some tips for the paranoid user:
  • Install truecrypt
    • Skip resizing the sd-card and use the free space to create an encrypted volume using truecrypt (if you wear a tinfoil hat, create a hidden truecrypt volume http://www.truecrypt.org/docs/hidden-volume#Y0)
    • Start Armory
    • Create an offline wallet as normal, to be given up if you are forced to one way or another. Fund it with an insignificant amount of coins.
    • Close Armory
    • Mount the (hidden) encrypted volume on $HOME/.armory
    • Start Armory
    • Create your true offline wallet now
    • Back-it-up!
  • Dont use a printer with Internet connectivity in general and wireless in particular

Hope this guide is clear enough for everyone and that it works without problems. If you dont want to deal with cross compiling you can download a prepared version of Armory for RPi here. http://www49.zippyshare.com/v/20048910/file.html

A long weeks hard work has paid off! I think I deserve a nice cold beer this weekend. Wanna buy me one? My local bartender charges me 0.015BTC for a beer Smiley, 18cyBjhkBdD45amH3oW5yuFRYsm82QTSvi
Jump to: