UbuntuでEthereumマイニング

# setup ethereum mining rig with ubuntu16.04 server

[合同会社kumanote](http://kumano-te.com/)のTanakaです。

今回は、Ubuntu16.04を使って、Ethereumのマイニングマシンをセットアップしたので、その情報をまとめたいと思います。
主にソフトウェアの設定をメインにまとめています。

**注意点**

- マイニングプールを使ったマイニングになります。（ソロマイニンングではない）
- AMD系のGPUを使ったセットアップなので、NVIDIA系のGPUは本記事対象外となります。

ちなみに、ビデオカード（GPU）の業界は、Windowsゲーマーがメインの顧客であり、OSは基本的にはWindowsを推奨しています（**linuxは非推奨です。**）  
やってみてわかったのですが、以下メリデメになります。

**デメリット**

- ~~採掘効率（Hashrate）はWindowsの方がいいです。（2MH/sくらいデフォルトで違います。）~~変わらないみたいです。
- オーバークロックや消費電力を下げるツール及び関連記事はwindowsの方が充実しています。
- 色々やっていて動かない時に、windowsだと動くんじゃないかという気持ちがよぎり、少し萎えます。

**メリットもあります**

- guiをさわらなくていいです。
- **windows updateがはしらない**ので安定して動作します。
- がんばればscriptベースで大量のマシンを設定して動作することができます。


ハードウェアについては[【2017年度版】Amazonで購入可能なマイニング向けライザーケーブル・マザーボード一覧 | デジモノ達人](http://tatujin-dejimono.com/virtual_currency/mining_motherboard_2017/)が詳しいです。  
ちゃんと読んでマザーボードとか電源を購入すればよかったと少し反省しています。


↑にも記載があるように、GPUを買ったはいいが、認識されない問題があり・・**マザーボードは慎重に選んだ方がいい**かもしれません

> 通常であればグラフィックボードはマザーボードに接続しても1本から2本です。
> 本格的なマイニングでは4本～6本など数多くのグラフィックボードを接続しますがそれは通常の使い方ではありません。
> その為、先に紹介したマザーボードでも最大6枚グラフィックボードが正常に認識されるとは限りません。
> 私は色々なマザーボードを使ってみましたが、ライザーケーブルを使いながら4本～5本までは問題なく認識することが多いです。

私は[ASROCK FATAL1TY H270 Performance](http://www.asrock.com/mb/Intel/Fatal1ty%20H270%20Performance/index.jp.asp)でためしたのですが、~~どうしても__3本くらいまでしか認識されません。。。~~
後日色々試した結果GPUを全てさした状態でbiosを書き換えて起動することで、正常に６本認識しました。
たまに不安定になるので、**ライザーは慎重に選ぶ必要があります。**

**↓↓↓ 前置きが長くなりましたが、以下手順になります。 ↓↓↓**

## os インストール

usbなどにisoファイルを焼き付け、usbからosインストールを行う。

[MacでUbuntuのインストールUSBディスクを作成する - Qiita](http://qiita.com/kpkpkp/items/6664a1dba97198b984ec)が詳しいです。

## ssh serverのインストール

```
$ sudo apt-get update -y
$ sudo apt-get install openssh-server
```

→ sshできるようになるので、windows/macなどからsshします（コマンドがコピペできるようになるので便利です）  
以下の作業はすべてローカルマシンからマイニングマシンにsshで接続して作業を行います。


## utilityのインストール

```
$ sudo apt-get install -y git screen vim unzip python
$ vim ~/.vimrc
:color desert
set number

$ vim ~/.bashrc
force_color_prompt=yes                             # delete comment & enable setting
LS_COLORS=$LS_COLORS:'di=0;36:' ; export LS_COLORS #add line at the end
```

## ロケールの設定

```
$ sudo apt-get install language-pack-ja-base language-pack-ja
$ sudo update-locale LANG=ja_JP.UTF-8
$ vim ~/.bashrc
# add the following lines at the end of file.
case $TERM in
  linux)LANG=C ;;
  *)LANG=ja_JP.UTF-8 ;;
esac
```

## sshを鍵で（のみ）はいれるように設定

```
$ sudo vim /etc/ssh/sshd_config
PasswordAuthentication no # set PasswordAuthentication no

$ mkdir ~/.ssh
$ chmod 700 ~/.ssh
$ touch ~/.ssh/authorized_keys
$ chmod 600 ~/.ssh/authorized_keys
$ vim ~/.ssh/authorized_keys # insert my mac public key.
$ cat ~/.ssh/id_rsa.pub | pbcopy # ローカルのmacの公開鍵をクリップボードにコピー -> authorized_keysに行追加
```

## AMD Gpu Driverのインストール

##### 参考

- [ドライバーダウンロードページ](http://support.amd.com/en-us/kb-articles/Pages/AMDGPU-PRO-Driver-for-Linux-Release-Notes.aspx)
- [UbuntuでUSBメモリのマウント - Qiita](http://qiita.com/sasayabaku/items/aca8f94faadae5bd32c5)


```
$ sudo apt dist-upgrade
# amdgpu-pro-17.10-429170.tar.xzをダウンロード USBに焼いて移動
$ ls /dev/sd* # usbの場所を確認 -> 今回はsdb1だった
$ sudo mount -t vfat /dev/sdb1 /media
$ mkdir ~/drivers
$ sudo cp /media/amdgpu-pro-17.10-429170.tar.xz ~/drivers/
$ sudo chown `whoami`:`whoami` ~/drivers/amdgpu-pro-17.10-429170.tar.xz
$ cd ~/drivers
$ tar -Jxvf amdgpu-pro-17.10-429170.tar.xz
$ cd amdgpu-pro-17.10-429170
$ ./amdgpu-pro-install -y
$ sudo shutdown -r now
$ sudo usermod -a -G video $LOGNAME
$ logout
$ groups # check if belongs to video group
$ dpkg -l amdgpu-pro
# check if version 17.10-429170 is installed
```

## マイニングソフトのインストール

##### 参考

- [Claymore-Dual-Miner](https://github.com/nanopool/Claymore-Dual-Miner)

```
$ mkdir ~/workspace
$ cd ~/workspace
$ wget -O Claymore.v9.5.tar.gz https://github.com/nanopool/Claymore-Dual-Miner/releases/download/v9.5/Claymore.s.Dual.Ethereum.Decred_Siacoin_Lbry_Pascal.AMD.NVIDIA.GPU.Miner.v9.5.-.LINUX.tar.gz
$ mkdir Claymore.v9.5
$ tar xvzf Claymore.v9.5.tar.gz -C ./Claymore.v9.5
```

## マイニング実行

### 事前準備

libcurl3がないと以下のエラーがでるので、実行前にlibcurl3をインストールしておく


```
$ sudo apt-get install libcurl3
```

**ちなみにこんなエラーです**

```
./ethdcrminer64: error while loading shared libraries: libcurl.so.4: cannot open shared object file: No such file or directory
```

### 実行

Claymore.v9.5インストールディレクトリに以下の実行ファイルを作成して、実行します。  
`screen`コマンドなどをつかって実行すると便利です。

```
$ vim start.sh
#!/bin/sh
# export GPU_FORCE_64BIT_PTR=0 # must be comment out for amdgpu-pro
export GPU_MAX_HEAP_SIZE=100
export GPU_USE_SYNC_OBJECTS=1
export GPU_MAX_ALLOC_PERCENT=100
export GPU_SINGLE_ALLOC_PERCENT=100

export ETH_ADDR=自分のethアドレス
export ETH_WORKER_NAME=任意のワーカー名（rig01とか）
export PASC_ADDR=自分のpascアドレス
export PASC_WORKER_NAME=任意のワーカー名（rig01とか）

./ethdcrminer64 \
  -epool asia1.ethermine.org:4444 \
  -ewal $ETH_ADDR.$ETH_WORKER_NAME \
  -epsw x \
  -dpool stratum+tcp://pasc-asia1.nanopool.org:15555 \
  -dwal $PASC_ADDR.$PASC_WORKER_NAME \
  -dpsw x \
  -dcoin pasc \
  -dcri 10 \
  -mode 0 \
  -ftime 10 \
  -etha 2 \
  -allpools 1 \
  -wd 0 \
  -eres 4 \
  -gser 2
```

**備考**

- 以下のオプションはライザーカードなどで台数を増やす時は必須のような予感がしてます（じゃないとhang upすることがあった）
  -  -wd 0 \
  - -eres 4 \
  - -gser 2
- "epools.txt", "dpools.txt"なども設定しておいた方が無難です。
- 同時にpascalcoinも掘っていますが、不要なのであれば、-d*のオブションは不要です。
- マイニングの進捗は[使用しているmining pool](https://ethermine.org/)で自分のアドレスを検索するとでてきます。