Build Notes: "Manual" Stator, Ubuntu 10.04 i686

August 16th, 2015

The mission: build a working "Stator" (static bitcoind) by manually applying the relevant patches to TheRealBitcoin's v-0.5.3.1-RELEASE.

Here's proof o' static and (the start of) block syncing on my machine:
static bitcoind

1. You'll need to install a few packages before getting started, assuming you don't have them already. At the terminal (ctrl + alt + t):

sudo apt-get update
sudo apt-get install -y build-essential
sudo apt-get install -y libboost-python-dev
sudo apt-get install -y realpath
sudo apt-get install -y curl

And, of course, GPG:

sudo apt-get install -y gnupg

2. Grab TheRealBitcoin's v0.5.3.1-RELEASE:

curl -s "http://thebitcoin.foundation/bitcoin-v0_5_3_1-RELEASE.tar.gz" -o bitcoin-v0_5_3_1-RELEASE.tar.gz

And verify its checksum, which should be exactly 5c41fe6cf286770a25bf61ab0c35747d0c760f8656754296d2e1d3c4274b5686 :

sha256sum bitcoin-v0_5_3_1-RELEASE.tar.gz

3. Unpack the release tarball:

tar -xf bitcoin-v0_5_3_1-RELEASE.tar.gz

And navigate to the new directory where you've unpacked it:

cd bitcoin-v0_5_3_1

4. Download the seven patches necessary for the "stator" build, along with their signatures. For the record, these are, in order:

i. asciilifeform_dnsseed_snipsnip.patch
ii. asciilifeform_orphanage_thermonuke.patch
iii. asciilifeform_tx-orphanage_amputation.patch
iv. asciilifeform_zap_hardcoded_seeds.patch
v. asciilifeform_zap_showmyip_crud.patch
vi. asciilifeform_dns_thermonyukyoolar_kleansing.patch
vii. asciilifeform_ver_now_5_4_and_irc_is_gone_and_now_must_give_ip.patch

Grab them like so:


curl -s http://therealbitcoin.org/ml/btc-dev/attachments/20150201/asciilifeform_dnsseed_snipsnip_192f7bc7c14c1d31c7b417c9cd77be51c4d255f2.patch -o asciilifeform_dnsseed_snipsnip_192f7bc7c14c1d31c7b417c9cd77be51c4d255f2.patch

curl -s http://therealbitcoin.org/ml/btc-dev/attachments/20150201/asciilifeform_dnsseed_snipsnip_0a439f9f7f5eff780116753fb9a2d62c22ee3b6b.patch.sig -o asciilifeform_dnsseed_snipsnip_0a439f9f7f5eff780116753fb9a2d62c22ee3b6b.patch.sig

curl -s http://therealbitcoin.org/ml/btc-dev/attachments/20150504/asciilifeform_orphanage_thermonuke_2d219fdd1a0da960be38797566e9c0820df11ce6.patch -o asciilifeform_orphanage_thermonuke_2d219fdd1a0da960be38797566e9c0820df11ce6.patch

curl -s http://therealbitcoin.org/ml/btc-dev/attachments/20150504/asciilifeform_orphanage_thermonuke_6f320afb2423a2892d89e855829e3915c8b7a170.patch.sig -o asciilifeform_orphanage_thermonuke_6f320afb2423a2892d89e855829e3915c8b7a170.patch.sig

curl -s http://therealbitcoin.org/ml/btc-dev/attachments/20150528/asciilifeform_tx-orphanage_amputation_6ed529e594301a791fb2f8becbe344dd2de9c45f.patch -o asciilifeform_tx-orphanage_amputation_6ed529e594301a791fb2f8becbe344dd2de9c45f.patch

curl -s http://therealbitcoin.org/ml/btc-dev/attachments/20150528/asciilifeform_tx-orphanage_amputation_f648d941eeab53e53e76516915ffdf791eff1db6.patch.sig -o asciilifeform_tx-orphanage_amputation_f648d941eeab53e53e76516915ffdf791eff1db6.patch.sig

curl -s http://therealbitcoin.org/ml/btc-dev/attachments/20150617/asciilifeform_zap_hardcoded_seeds_a367b89765d0b82ce2c7f8043f52006399a1e0b8.patch -o asciilifeform_zap_hardcoded_seeds_a367b89765d0b82ce2c7f8043f52006399a1e0b8.patch

curl -s http://therealbitcoin.org/ml/btc-dev/attachments/20150617/asciilifeform_zap_hardcoded_seeds_47aecb8514c1b73a11e6095c88664a1aa5bcebec.patch.sig -o asciilifeform_zap_hardcoded_seeds_47aecb8514c1b73a11e6095c88664a1aa5bcebec.patch.sig

curl -s http://therealbitcoin.org/ml/btc-dev/attachments/20150617/asciilifeform_zap_showmyip_crud_ebf527ba3b180b1952c4c8b5af990c1fd61e04da.patch-o asciilifeform_zap_showmyip_crud_ebf527ba3b180b1952c4c8b5af990c1fd61e04da.patch

curl -s http://therealbitcoin.org/ml/btc-dev/attachments/20150617/asciilifeform_zap_showmyip_crud_ebf527ba3b180b1952c4c8b5af990c1fd61e04da.patch -o asciilifeform_zap_showmyip_crud_ebf527ba3b180b1952c4c8b5af990c1fd61e04da.patch

curl -s http://therealbitcoin.org/ml/btc-dev/attachments/20150617/asciilifeform_zap_showmyip_crud_08b7e35ca6bba7d2ef7e7aaac89579cbfa1ec90f.patch.sig -o asciilifeform_zap_showmyip_crud_08b7e35ca6bba7d2ef7e7aaac89579cbfa1ec90f.patch.sig

curl -s http://therealbitcoin.org/ml/btc-dev/attachments/20150620/asciilifeform_dns_thermonyukyoolar_kleansing_691f046b0a66c2c80deecd8df0b42d11665b0396.patch -o asciilifeform_dns_thermonyukyoolar_kleansing_691f046b0a66c2c80deecd8df0b42d11665b0396.patch

curl -s http://therealbitcoin.org/ml/btc-dev/attachments/20150620/asciilifeform_dns_thermonyukyoolar_kleansing_5870d1ae40408e980552295abfdb38cc32f22182.patch.sig -o asciilifeform_dns_thermonyukyoolar_kleansing_5870d1ae40408e980552295abfdb38cc32f22182.patch.sig

curl -s http://therealbitcoin.org/ml/btc-dev/attachments/20150622/asciilifeform_ver_now_5_4_and_irc_is_gone_and_now_must_give_ip_ebed1af0253ef629bbef4bf2b2d1a94742a81f0e.patch -o asciilifeform_ver_now_5_4_and_irc_is_gone_and_now_must_give_ip_ebed1af0253ef629bbef4bf2b2d1a94742a81f0e.patch

curl -s http://therealbitcoin.org/ml/btc-dev/attachments/20150622/asciilifeform_ver_now_5_4_and_irc_is_gone_and_now_must_give_ip_60048a1651005a603c5387c5dfaaa6573a92ee83.patch.sig -o asciilifeform_ver_now_5_4_and_irc_is_gone_and_now_must_give_ip_60048a1651005a603c5387c5dfaaa6573a92ee83.patch.sig

5. Verify their checksums, which should match the string in the corresponding file names:


sha1sum asciilifeform_dnsseed_snipsnip_192f7bc7c14c1d31c7b417c9cd77be51c4d255f2.patch asciilifeform_dnsseed_snipsnip_0a439f9f7f5eff780116753fb9a2d62c22ee3b6b.patch.sig

sha1sum asciilifeform_orphanage_thermonuke_2d219fdd1a0da960be38797566e9c0820df11ce6.patch asciilifeform_orphanage_thermonuke_6f320afb2423a2892d89e855829e3915c8b7a170.patch.sig

sha1sum asciilifeform_tx-orphanage_amputation_6ed529e594301a791fb2f8becbe344dd2de9c45f.patch asciilifeform_tx-orphanage_amputation_f648d941eeab53e53e76516915ffdf791eff1db6.patch.sig

sha1sum asciilifeform_zap_hardcoded_seeds_a367b89765d0b82ce2c7f8043f52006399a1e0b8.patch asciilifeform_zap_hardcoded_seeds_47aecb8514c1b73a11e6095c88664a1aa5bcebec.patch.sig

sha1sum asciilifeform_zap_showmyip_crud_ebf527ba3b180b1952c4c8b5af990c1fd61e04da.patch asciilifeform_zap_showmyip_crud_08b7e35ca6bba7d2ef7e7aaac89579cbfa1ec90f.patch.sig

sha1sum asciilifeform_zap_showmyip_crud_08b7e35ca6bba7d2ef7e7aaac89579cbfa1ec90f.patch.sig asciilifeform_zap_showmyip_crud_08b7e35ca6bba7d2ef7e7aaac89579cbfa1ec90f.patch.sig

sha1sum asciilifeform_dns_thermonyukyoolar_kleansing_691f046b0a66c2c80deecd8df0b42d11665b0396.patch asciilifeform_dns_thermonyukyoolar_kleansing_5870d1ae40408e980552295abfdb38cc32f22182.patch.sig

sha1sum asciilifeform_ver_now_5_4_and_irc_is_gone_and_now_must_give_ip_ebed1af0253ef629bbef4bf2b2d1a94742a81f0e.patch asciilifeform_ver_now_5_4_and_irc_is_gone_and_now_must_give_ip_60048a1651005a603c5387c5dfaaa6573a92ee83.patch.sig

6. Now verify the signatures. If you don't already have the patch author's public key (gpg --list-keys), grab it with:

gpg --keyserver pool.sks-keyservers.net --recv-keys 0xB98228A001ABFFC7

Then,


gpg --verify asciilifeform_dnsseed_snipsnip_0a439f9f7f5eff780116753fb9a2d62c22ee3b6b.patch.sig asciilifeform_dnsseed_snipsnip_192f7bc7c14c1d31c7b417c9cd77be51c4d255f2.patch

gpg --verify asciilifeform_orphanage_thermonuke_6f320afb2423a2892d89e855829e3915c8b7a170.patch.sig asciilifeform_orphanage_thermonuke_2d219fdd1a0da960be38797566e9c0820df11ce6.patch

gpg --verify asciilifeform_tx-orphanage_amputation_f648d941eeab53e53e76516915ffdf791eff1db6.patch.sig asciilifeform_tx-orphanage_amputation_6ed529e594301a791fb2f8becbe344dd2de9c45f.patch

gpg --verify asciilifeform_zap_hardcoded_seeds_47aecb8514c1b73a11e6095c88664a1aa5bcebec.patch.sig asciilifeform_zap_hardcoded_seeds_a367b89765d0b82ce2c7f8043f52006399a1e0b8.patch

gpg --verify asciilifeform_zap_showmyip_crud_08b7e35ca6bba7d2ef7e7aaac89579cbfa1ec90f.patch.sig asciilifeform_zap_showmyip_crud_ebf527ba3b180b1952c4c8b5af990c1fd61e04da.patch

gpg --verify asciilifeform_dns_thermonyukyoolar_kleansing_5870d1ae40408e980552295abfdb38cc32f22182.patch.sig asciilifeform_dns_thermonyukyoolar_kleansing_691f046b0a66c2c80deecd8df0b42d11665b0396.patch

gpg --verify asciilifeform_ver_now_5_4_and_irc_is_gone_and_now_must_give_ip_60048a1651005a603c5387c5dfaaa6573a92ee83.patch.sig asciilifeform_ver_now_5_4_and_irc_is_gone_and_now_must_give_ip_ebed1af0253ef629bbef4bf2b2d1a94742a81f0e.patch

7. Now the actual patching can begin:


patch -p1 -d bitcoin < asciilifeform_dnsseed_snipsnip_192f7bc7c14c1d31c7b417c9cd77be51c4d255f2.patch
patch -p1 < asciilifeform_orphanage_thermonuke_2d219fdd1a0da960be38797566e9c0820df11ce6.patch
patch -p1 < asciilifeform_tx-orphanage_amputation_6ed529e594301a791fb2f8becbe344dd2de9c45f.patch
patch -p1 < asciilifeform_zap_hardcoded_seeds_a367b89765d0b82ce2c7f8043f52006399a1e0b8.patch
patch -p1 < asciilifeform_zap_showmyip_crud_ebf527ba3b180b1952c4c8b5af990c1fd61e04da.patch
patch -p1 < asciilifeform_dns_thermonyukyoolar_kleansing_691f046b0a66c2c80deecd8df0b42d11665b0396.patch
patch -p1 < asciilifeform_ver_now_5_4_and_irc_is_gone_and_now_must_give_ip_ebed1af0253ef629bbef4bf2b2d1a94742a81f0e.patch

8. If you're on a 32-bit machine, you'll drop in mod6's special script. If your machine is 64-bit, you do not need to do this; skip to Step 9. If you're not sure, type in uname -a; if you don't see x86_64 you'll most likely need this):

First get mod6's public key if you don't have it already:

gpg --keyserver pool.sks-keyservers.net --recv-keys 0x721705A8B71EADAF

Then:

rm auto.sh
curl -s http://therealbitcoin.org/ml/btc-dev/attachments/20150324/auto_ceb41c9c8cd557372a579f7926c95956b3956876.sh -o auto.sh
curl -s http://therealbitcoin.org/ml/btc-dev/attachments/20150324/auto_3edd38ef98c0f4ebf7a9939d1c06d8d6736f0af3.sh.sig -o auto.sh.sig

And verify the checksums:

sha1sum auto.sh auto.sh.sig

auto.sh should be: ceb41c9c8cd557372a579f7926c95956b3956876
auto.sh.sig should be: 3edd38ef98c0f4ebf7a9939d1c06d8d6736f0af3

And the gpg signature:

gpg --verify auto.sh.sig

9. Change the permissions on the script:

chmod 0755 auto.sh

10. Run the script:

auto.sh

And let it be for a while. On my old thinkpad with a sluggish connection this takes around two hours.

When it's finished, make sure you're still in bitcoin-v0_5_3_1 (if not, cd there), and try:

ldd bitcoin/src/bitcoind

and

readelf --dynamic bitcoin/src/bitcoind

You want these to return "not a dynamic executable" and "There is no dynamic section in this file." respectively. Mine spits out "/usr/bin/ldd: line 161: /lib64/ld-linux-x86-64.so.2: cannot execute binary file not a dynamic executable" for the first line, but as far as I know this is harmless.

Note that when you run bitcoind you'll need to add the options ./bitcoind -myip=111.111.111.111 -addnode=10.0.0.10 (your ip, and what you'd like to connect to, eg #bitcoin-assets' "dulap" (195.211.154.159) or "zoolag" (96.241.120.166).

Leave a Reply