Advertisement
gigawatt

Primecoin All-In-One EZ Setup Script

Jul 23rd, 2013
2,268
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 6.22 KB | None | 0 0
  1. # Primecoin All-In-One EZ Setup Script
  2. # Hacked together by GigaWatt
  3. # Donations welcome!
  4. #   BTC: 1E2egHUcLDAmcxcqZqpL18TPLx9Xj1akcV
  5. #   XPM: AWHJbwoM67Ez12SHH4pH5DnJKPoMSdvLz2
  6. # Last Update: 27 August, 2013
  7.  
  8. {
  9. # PUT YOUR SETTINGS HERE
  10. PRIMECOIN_USERNAME=""
  11. PRIMECOIN_SIEVESIZE="1000000" # Default: 1000000
  12. PRIMECOIN_SIEVEPCT="10"       # Default: 10
  13. PRIMECOIN_SIEVEEXTENSIONS="6" # Default: 6
  14.  
  15. if [[ -z "${PRIMECOIN_USERNAME}" ]]; then
  16.     echo "You need to supply a primecoin username"
  17.     exit 1
  18. fi
  19.  
  20.  
  21. # Build swapfile
  22. if [[ ! -f /swapfile ]]; then
  23.     echo "Building swapfile..."
  24.     sudo dd if=/dev/zero of=/swapfile bs=64M count=16
  25.     sudo mkswap /swapfile
  26.     sudo swapon /swapfile
  27.    
  28.     # Mount on reboot
  29.     if [[ -z "$(cat /etc/fstab | grep swapfile)" ]]; then
  30.         echo "/swapfile none swap sw 0 0" | sudo tee -a /etc/fstab > /dev/null 2>&1
  31.     fi
  32. fi
  33.  
  34.  
  35. # Auto reboot on kernel panic
  36. if [[ -z "$(cat /etc/sysctl.conf | grep '^kernel.panic')" ]]; then
  37.     echo "kernel.panic=3" | sudo tee /etc/sysctl.conf >/dev/null 2>&1
  38. fi
  39.  
  40.  
  41. echo "Installing libraries..."
  42. sudo apt-get update
  43. sudo apt-get install build-essential bc cpulimit curl dos2unix fail2ban git haveged libboost-all-dev libdb++-dev libminiupnpc-dev libssl-dev m4 nano -y
  44.  
  45. # Install GMP
  46. cd ~/
  47. rm -rf gmp-5.1.2.tar.bz2 gmp-5.1.2
  48. wget http://mirrors.kernel.org/gnu/gmp/gmp-5.1.2.tar.bz2
  49. tar xjvf gmp-5.1.2.tar.bz2
  50. cd gmp-5.1.2
  51. ./configure --enable-cxx
  52. make
  53. sudo make install
  54. rm -rf gmp-5.1.2.tar.bz2 gmp-5.1.2
  55. cd ~/
  56.  
  57. # Enable HAVEGED for entropy
  58. sudo update-rc.d haveged defaults
  59. sudo service haveged restart
  60.  
  61.  
  62. echo "Downloading and building primecoin..."
  63. cat << "SCRIPT" > ~/build-primecoin
  64. #!/bin/bash
  65. [[ -f ~/stop-primecoind ]] && ./stop-primecoind
  66. rm ~/primecoin*.tar.bz2
  67. rm -rf ~/primecoin*
  68. wget http://sourceforge.net/projects/primecoin-hp/files/latest/download -O ~/primecoin.tar.bz2
  69. tar xjvf ~/primecoin.tar.bz2
  70. rm ~/primecoin.tar.bz2
  71. cd ~/primecoin*/src
  72. sed -i -e 's/$(OPENSSL_INCLUDE_PATH))/$(OPENSSL_INCLUDE_PATH) \/usr\/local\/include)/' makefile.unix
  73. sed -i -e 's/$(OPENSSL_LIB_PATH))/$(OPENSSL_LIB_PATH) \/usr\/local\/lib)/' makefile.unix
  74. sed -i -e 's/$(LDHARDENING) $(LDFLAGS)/$(LDHARDENING) -Wl,-rpath,\/usr\/local\/lib $(LDFLAGS)/' makefile.unix
  75. make -f makefile.unix USE_UPNP=-
  76. sudo cp primecoind /usr/local/bin/
  77. cd ~/
  78. SCRIPT
  79. chmod +x ~/build-primecoin
  80. ~/build-primecoin
  81.  
  82.  
  83. echo "Building settings and scripts..."
  84. mkdir ~/.primecoin
  85. echo "rpcusername=${PRIMECOIN_USERNAME}
  86. rpcpassword=$(cat /dev/urandom | tr -cd '[:alnum:]' | head -c32)
  87. addnode=primeseed.muuttuja.org
  88. sievesize=${PRIMECOIN_SIEVESIZE}
  89. sievepercentage=${PRIMECOIN_SIEVEPCT}
  90. sieveextensions=${PRIMECOIN_SIEVEEXTENSIONS}
  91. gen=1" > ~/.primecoin/primecoin.conf
  92.  
  93.  
  94. # Notification scripts
  95. cat << "SCRIPT" > ~/notify-block
  96. #!/bin/bash
  97. # YOUR SCRIPT HERE
  98. SCRIPT
  99. chmod +x ~/notify-block
  100.  
  101. cat << "SCRIPT" > ~/notify-wallet
  102. #!/bin/bash
  103. # YOUR SCRIPT HERE
  104.  
  105. # Example - Backup wallet.dat
  106. #cp ~/.primecoin/wallet.dat ~/${HOSTNAME}.bak
  107.  
  108. # Example - Backup wallet with FTP
  109. #curl -T ~/${HOSTNAME}.bak ftp://somesite.com --user ftp_username:ftp_password
  110. SCRIPT
  111. chmod +x ~/notify-wallet
  112.  
  113.  
  114. # Watchdog runner
  115. cat << "SCRIPT" > ~/start-primecoind
  116. #!/bin/bash
  117. export PATH="/usr/local/bin:$PATH"
  118. echo Starting primecoind
  119. [[ -n "$(pidof primecoind)" ]] && killall --older-than 60s -q start-primecoind primecoind
  120. function background_loop
  121.     while :; do
  122.         /usr/local/bin/primecoind -blocknotify="~/notify-block" -walletnotify="~/notify-wallet" >/dev/null 2>&1
  123.         sleep 5
  124.         date >> ~/crash.log
  125.     done
  126. background_loop &
  127. SCRIPT
  128. chmod +x ~/start-primecoind
  129. ~/start-primecoind
  130.  
  131.  
  132. # Add to startup
  133. mkdir /var/spool/cron/crontabs/ > /dev/null 2>&1
  134. echo "@reboot ${HOME}/start-primecoind" | sudo tee    /var/spool/cron/crontabs/$(whoami) > /dev/null 2>&1
  135. echo ""                                 | sudo tee -a /var/spool/cron/crontabs/$(whoami) > /dev/null 2>&1
  136. sudo chmod 0600 /var/spool/cron/crontabs/$(whoami)
  137. sudo update-rc.d cron defaults
  138.  
  139.  
  140. # Watchdog stopper
  141. cat << "SCRIPT" > ~/stop-primecoind
  142. #!/bin/bash
  143. killall -q start-primecoind
  144. primecoind stop
  145. rm ~/.primecoin/debug.log
  146. sleep 3
  147. [[ -n "$(pidof primecoind)" ]] && killall primecoind
  148. SCRIPT
  149. chmod +x ~/stop-primecoind
  150.  
  151. # Watchdog restarter
  152. cat << "SCRIPT" > ~/restart-primecoind
  153. #!/bin/bash
  154. ~/stop-primecoind
  155. ~/start-primecoind
  156. SCRIPT
  157. chmod +x ~/restart-primecoind
  158.  
  159. # Peek at status
  160. cat << "SCRIPT" > ~/peek
  161. #!/bin/bash
  162. conf=$(primecoind getbalance)
  163. unconf=$(primecoind getbalance '' 1)
  164. immature=$(echo "scale=4;${unconf} - ${conf}" | bc)
  165. echo "Stats: $(primecoind getmininginfo)"
  166. echo "Confirmed Balance:  ${conf}"
  167. echo "Immature Balance:   ${immature}"
  168. echo "Immature TX: $(primecoind listtransactions "" 99999 | grep immature | wc -l)"
  169. echo "Connections: $(primecoind getconnectioncount)"
  170. echo "Recent:"
  171. grep primemeter ~/.primecoin/debug.log | tail -5
  172. echo ""
  173. echo "Averages:"
  174. grep primemeter ~/.primecoin/debug.log | \
  175.     awk '{s1+=$4;s2+=$6;s3+=$8;s4+=$10} END {printf"%10s: %10d\n%10s: %10d\n%10s: %10d\n%10s: %10.5f\n","Prime/h",s1/NR,"Test/h",s2/NR,"5-Chain/h",s3/NR,"Chains/day",s4/NR}'
  176. SCRIPT
  177. chmod +x ~/peek
  178.  
  179.  
  180. # Dump address info
  181. cat << "SCRIPT" > ~/myinfo
  182. #!/bin/bash
  183. for addr in $(primecoind listtransactions "" 99999 | grep -C 1 '"generate"\|"receive"' | grep --color=never -o "\b[A-Za-z0-9]\{33,36\}\b" | sort -u); do
  184.     echo Address: ${addr}
  185.     echo PrivKey: $(primecoind dumpprivkey ${addr})
  186.     echo
  187. done
  188. SCRIPT
  189. chmod +x ~/myinfo
  190.  
  191.  
  192. # Edit primecoin config file
  193. cat << "SCRIPT" > ~/config
  194. #!/bin/bash
  195. nano ~/.primecoin/primecoin.conf
  196. ~/stop-primecoind
  197. ~/start-primecoind
  198. SCRIPT
  199. chmod +x ~/config
  200.  
  201.  
  202. echo
  203. echo
  204. echo '=========================================================='
  205. echo 'All Done!'
  206. echo 'primecoind should be up and running'
  207. echo
  208. echo 'Run ~/start-primecoind  to start primecoind and begin mining'
  209. echo 'Run ~/stop-primecoind   to stop primecoind and stop mining'
  210. echo 'Run ~/build-primecoin   to update and rebuild primecoind'
  211. echo 'Run ~/config            to modify your primecoind config file'
  212. echo 'Run ~/peek              to check on your mining status'
  213. echo 'Run ~/myinfo            to view your primecoin address and privkey'
  214. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement