1. はじめに
今回は、自分自身への備忘録を兼ねて、Raspberry PiでCPUマイニングをはじめる方法を、お伝えしたいと思います。
2. この記事を読んでできること
- Raspberry PiでBitZeny(アルトコイン)をCPUマイニングできるようになる。
3. 必要なもの
- Raspberry Pi(この記事では Raspberry Pi3 を利用しました)
- SDカード
- インターネット環境
- パソコン(Windows10など)
- sshクライアントソフト(TeraTerm)
4. Raspbian Buster Liteの入手
- 以下のURLから、OSイメージファイル(Raspbian Buster Lite)をダウンロードする。
- 今回はCPUパワーを100%活用するため、画面なしヘッドレス(CUI版)のRaspbian Buster Liteを採用しました。
- 画面ありGUI版の「Raspbian Buster with desktop」でも問題なく動作すると思います。
Raspbian_Buster_LiteダウンロードサイトURL
https://www.raspberrypi.org/downloads/raspbian/
参考:この記事作成時のファイルバージョン:2019-09-26-raspbian-buster-lite.zip
5. microSDカードのフォーマット
- SD Formatter for Windowsなどのソフトを用いて、使用するmicroSDカードをフォーマットする。
6. microSDカードへOSイメージの書き込み(所要時間:15分)
- Etcherなどのソフトを用いて、使用するmicroSDカードへOSイメージを書き込む。
7. Raspberry Pi のSSH有効化の設定
- microSDカード直下フォルダにファイル名「ssh」(空ファイル拡張子なし)で新規作成する。保存の際は、不要なファイル拡張子(.txt等)が付かないよう注意すること。
8. Raspberry Pi のWi-Fi設定
- あらかじめWi-Fi設定を済ませておく。
- microSDカード直下フォルダにファイル名「wpa_supplicant.conf」(改行コード:LF、文字コード:UTF-8)で新規作成し、ファイルの内容を以下のとおり設定する。(ssidとパスワードpskは、各自の環境に合わせて設定してください。)
wpa_supplicant.conf
country=JP
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
ssid="----Your-WiFi-SSID----"
psk="----PLAIN-PASSPHRASE----"
}
9. microSDカード の完成
- 完成した microSDカード を、PCからおもむろに抜き取る。
10. Raspberry Piの起動
- Raspberry PiにmicroSDカードを挿入し、Raspberry Piを起動する。
11. SSHクライアントでRaspberry Piに接続
- PCで、SSHクライアント(TeraTerm 等)を起動し、ホストにRaspberry PiのIPアドレス「192.168.XXX.XXX」またはホスト名「raspberrypi.local」を入力し、OKボタンをクリックし、ssh接続する。
- SSH認証画面で、ユーザ名とパスフレーズを入力し、「OK」ボタンをクリックする。
- SSHクライアントの使い方がわからない、またはRaspberry PiのIPアドレスがわからない、ホスト名接続できない方は、Raspberry PiにHDMIモニタ、マウス、キーボードを接続して以降の操作をおこなっても大丈夫です。
デフォルトユーザ名/パスワード
ユーザ名 :pi
パスワード:raspberry
11. ネットワーク疎通確認
ネットワーク疎通確認コマンド
$ ping www.yahoo.co.jp
- このコマンドで、yahooさんにつながったならネットワークは問題ありません。
- ネットワークが不通の場合は、以降の手順がおこなえないため、ネットワーク環境を確認しましょう。
12. cpuminer/minerdのセットアップ
- 以下のコマンドを順次実行し、cpuminer/minerdをセットアップします。
コマンドプロンプト
// リポジトリ一覧を更新
$ sudo apt update
// アップグレードの実行(5分程度)
$ sudo apt upgrade
途中、Yキー押下
途中、qキー押下
// gitインストール
$ sudo apt install git
// ディレクトリ移動
$ cd /opt/
// cpuminerの取得
$ sudo git clone https://github.com/bitzeny/cpuminer.git cpuminer
// ディレクトリ移動
$ cd /opt/cpuminer/
// automakeインストール
$ sudo apt install automake
// gccコンパイラインストール
$ sudo apt install gcc
// libcurl4-openssl-devインストール
$ sudo apt install libcurl4-openssl-dev
// ビルド(メイク)
$ sudo ./autogen.sh
$ sudo ./configure CFLAGS="-O3 -march=native -funroll-loops -fomit-frame-pointer"
$ sudo make
13. CPUマイニングの実行
- 以下のコマンドを実行し、CPUマイニングを実行します。
コマンドプロンプト
// マイニング実行コマンドの例
$ /opt/cpuminer/minerd -a yescrypt -o stratum+tcp://zny.mofumofu.me:3331 -u Ztd9eoSVaX4pehagt5o9PRDnCYRAadbgxn
$ /opt/cpuminer/minerd -a yescrypt -o stratum+tcp://zny.mofumofu.me:3331 -u {この部分にご自身のBitZeny受信アドレスを設定}
- 今回はオンラインウォレットの「BitZeny WALLET」を利用しました。
- ウォレットをまだお持ちでない方は、「BitZeny WALLET」の「新規登録」リンクから新規登録をおこない、ウォレット内の「受信アドレス」からご自身の「BitZeny受信アドレス」をコピーしてお使いください。
- マイニングプールについては、登録不要で使えるBitZenyのマイニングプール(NOMP:Node Open Mining Portal)である「mofumofu.me」を利用しています。
14. CPUマイニング成功時のログ
- CPUマイニングに成功すると、「(yay!!!)」とログに出力されるかと思います。
- ただし、マイニングに成功してもすぐにBitZeny受信アドレスに受け取り反映されるわけではありません。受け取り反映されるルールについては、利用するマイニングプールのルールによって異なります。Raspberry PiのCPU処理能力は高くないため、半日から1日程度、気長に待ってみましょう。
コマンドプロンプト
[2019-12-11 00:33:30] accepted: 168/168 (100.00%), 0.15 khash/s (yay!!!)
[2019-12-11 00:33:45] thread 2: 566 hashes, 0.04 khash/s
[2019-12-11 00:33:45] accepted: 169/169 (100.00%), 0.16 khash/s (yay!!!)
[2019-12-11 00:33:45] thread 1: 2364 hashes, 0.04 khash/s
[2019-12-11 00:33:52] thread 3: 989 hashes, 0.04 khash/s
[2019-12-11 00:33:52] accepted: 170/170 (100.00%), 0.16 khash/s (yay!!!)
マイニングプールの反映ルール例
最低支払額: 0.1 ZNY
支払間隔: 10分
使用手数料: 0.5%
支払方法: PROP
- オンラインウォレットの「BitZeny WALLET」の取引履歴(受信)
15. minerdの自動起動設定ファイルの新規作成
- 手動でCPUマイニングを起動するのも面倒かと思いますので、systemdを利用した自動起動設定ファイルを新規作成します。
コマンドプロンプト
// 自動起動設定ファイルの新規作成
$ sudo vi /opt/minerd.service
/opt/minerd.serviceファイル内容
[Unit]
Description=minerd is executed and resides at OS startup.
After=network.target
[Service]
WorkingDirectory=/opt/cpuminer
ExecStart=/opt/cpuminer/minerd -a yescrypt -o stratum+tcp://zny.mofumofu.me:3331 -u Ztd9eoSVaX4pehagt5o9PRDnCYRAadbgxn
Restart=always
Type=simple
TimeoutStopSec=5
StandardOutput=append:/tmp/minerd.log
StandardError=append:/tmp/minerd.log
[Install]
WantedBy=multi-user.target
16. minerdの起動確認&自動起動有効化
- 作成した自動起動設定ファイルを所定のディレクトリに移動し、minerdの起動確認および有効化をおこないます。
コマンドプロンプト
// 自動起動設定ファイルを所定ディレクトリに移動
$ sudo mv /opt/minerd.service /etc/systemd/system/
// minerdの起動確認
$ sudo systemctl start minerd.service
// 起動状況確認(設定内容が正しいか動作確認します)
$ sudo systemctl status minerd.service
// minerdの自動起動有効化(再起動後に自動起動するようになります)
$ sudo systemctl enable minerd.service
// OS再起動
$ sudo shutdown -r now
// OS再起動後の実行ログ確認
$ tail -f /tmp/minerd.log
- 補足:minerd.serviceファイルの設定変更を反映する際は
sudo systemctl daemon-reload
コマンドを実行して反映する必要があります。
17. おわりに
いかがでしたでしょうか?意外と簡単にCPUマイニングを始めることができたのではないかなと思います。
今回の記事が、みなさまの学習の参考になれば幸いです。
2019/12/11 TAKAHIRO NISHIZONO
18. 追記その1:Raspberry Pi 設定もろもろ
- 設定しておくと便利なRaspberry Pi 設定もろもろをお伝えします。
コマンドプロンプト
// パスワード変更
$ passwd
// ホスト名変更(Raspberry Piを複数台お持ちの方は一意に変更するとよいかと思います。)
$ sudo vi /etc/hostname
$ sudo vi /etc/hosts
// 再起動(ホスト名変更の反映のため)
$ sudo shutdown -r now
// Raspberry Piの設定(CUIモード)
$ sudo raspi-config
// ファイルシステムの拡張
7 Advanced Options → A1 Expand Filesystem
// ロケール等の変更
4 Localisation Options → I1 Change Locale → ja_JP.UTF-8 UTF-8 → スペース選択* → OK
ja_JP.UTF-8 → OK
// タイムゾーンの変更
4 Localisation Options → I2 Change Timezone → Asia → Tokyo
// Wi-Fi利用国の変更
4 Localisation Options → I4 Change Wi-fi Country → JP Japan
// 終了&再起動
Finish → Yes
19. 追記その2:ログローテートの設定
- ログファイル(/tmp/minerd.log)がディスク容量を圧迫しないように、ログローテーション設定をお伝えします。
コマンドプロンプト
// ログローテート設定ファイルの定義
sudo vi /etc/logrotate.d/minerd
/etc/logrotate.d/minerdの内容
/tmp/minerd.log {
ifempty
dateformat .%Y%m%d
missingok
daily
rotate 10
postrotate
/bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
endscript
}
- 余談、ログローテートを設定するならば、ログ出力先は/tmp/ディレクトリ配下よりも、/var/log/配下ディレクトリに書き換えた方がかっこいいかもしれません。
/var/log/minerd/minerd.log
20. 追記その3:cpuminer/minerdの動作スレッド数指定
- CPU使用率100%で動作させると、他の用途でRaspberry Pi を利用するには負荷が高すぎるので、cpuminer/minerdの動作スレッド数を指定する方法をお伝えします。
- 指定方法は簡単で、minerdコマンドの引数パラメータに
-t 1
を指定してみてください。動作スレッドが1スレッド(CPU使用率25%)に抑えられるかと思います。
コマンドプロンプト
// 引数パラメータに「-t 1」を追加
/opt/cpuminer/minerd -a yescrypt -o stratum+tcp://zny.mofumofu.me:3331 -u Ztd9eoSVaX4pehagt5o9PRDnCYRAadbgxn -t 1
21. 追記その4:ワーカー名の設定
- 複数台にてマイニングをおこなった際、どの端末がどのていど動いているかがわかりづらくなります。これを解消するために、ワーカー名を指定する方法をお伝えします。
- 指定方法は簡単で、minerdコマンドの「受信アドレス」に半角スペースなどを含めずにそのまま「.name」の形式で任意の半角英数文字を指定してみてください。
- 確認方法は、マイニングプールサイトのworkersからご自身の受信アドレスを参照すると確認できるかと思います。
コマンドプロンプト
// 受信アドレスに「.name」を追加
/opt/cpuminer/minerd -a yescrypt -o stratum+tcp://zny.mofumofu.me:3331 -u Ztd9eoSVaX4pehagt5o9PRDnCYRAadbgxn.Pi3 -t 1