LoginSignup
12
15

More than 3 years have passed since last update.

Raspberry Pi ではじめるCPUマイニング(BitZeny編)

Last updated at Posted at 2019-12-10

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カードのフォーマット

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」の取引履歴(受信)

zny_取引履歴.PNG

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

zny_workers.PNG

12
15
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
15