1. はじめに
- 今回は、前回のBitZeny編に引き続き、Koto編として自分自身への備忘録を兼ねて、Raspberry PiでCPUマイニングをはじめる方法を、お伝えしたいと思います。
- 手順はおおむね前回のBitZeny編と同じですが、計算アルゴリズムが異なるらしくKoto用のcpuminerをビルドする必要があります。(BitZeny編のcpuminerをそのまま用いると、 (yay!!!)とはならずに(booooo)となるかと思います。)
- マイニングプールアドレスと、Koto受信アドレスをKoto用に書き換える必要もあります。
- BitZeny編との違いとしては、ウォレットに「もにゃ」Web版(PWA版)を利用しています。
2. この記事を読んでできること
- Raspberry PiでKoto(アルトコイン)を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
// CPUリミットのインストール
$ sudo apt install cpulimit
// ディレクトリ移動
$ cd /opt/
// cpuminerの取得(Koto用)
$ sudo git clone https://github.com/KotoDevelopers/cpuminer-yescrypt cpuminer-koto
// ディレクトリ移動
$ cd /opt/cpuminer-koto/
// 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-koto/minerd -a yescrypt -o stratum+tcp://koto.mofumofu.me:3301 -u k1KFxjGhCUy8cPmgEajZpqwdPRaGUjDQkxn
$ /opt/cpuminer-koto/minerd -a yescrypt -o stratum+tcp://koto.mofumofu.me:3301 -u {この部分にご自身のKoto受信アドレスを設定}
- 今回はウォレットの「もにゃ」を利用しました。
- ウォレットをまだお持ちでない方は、「もにゃ」の「いますぐ使う」リンクから新規登録をおこない、ウォレット作成後に「+コインを追加」から「Koto」を追加し、「受信」から「Koto」を選択しKoto用の「アドレスコピー」から、ご自身の「Koto受信アドレス」をコピーしてお使いください。
- マイニングプールについては、登録不要で使えるKotoのマイニングプール(NOMP:Node Open Mining Portal)である「mofumofu.me」を利用しています。
14. CPUマイニング成功時のログ
- CPUマイニングに成功すると、「(yay!!!)」とログに出力されるかと思います。
- ただし、マイニングに成功してもすぐにKoto受信アドレスに受け取り反映されるわけではありません。受け取り反映されるルールについては、利用するマイニングプールのルールによって異なります。Raspberry PiのCPU処理能力は高くないため、半月から1か月程度、気長に待ってみましょう。
コマンドプロンプト
[2019-12-11 12:05:40] thread 1: 44 hashes, 0.01 khash/s
[2019-12-11 12:05:40] thread 0: 120 hashes, 0.01 khash/s
[2019-12-11 12:05:40] thread 2: 96 hashes, 0.01 khash/s
[2019-12-11 12:05:40] thread 3: 126 hashes, 0.01 khash/s
[2019-12-11 12:05:56] thread 2: 213 hashes, 0.01 khash/s
[2019-12-11 12:05:56] accepted: 16/16 (100.00%), 0.05 khash/s (yay!!!)
[2019-12-11 12:06:00] thread 0: 246 hashes, 0.01 khash/s
[2019-12-11 12:06:00] accepted: 17/17 (100.00%), 0.05 khash/s (yay!!!)
マイニングプールの反映ルール例
最低支払額: 1 KOTO
支払間隔: 60分
使用手数料: 0.5%
支払方法: PROP
15. minerdの自動起動設定ファイルの新規作成
- 手動でCPUマイニングを起動するのも面倒かと思いますので、systemdを利用した自動起動設定ファイルを新規作成します。
コマンドプロンプト
// 自動起動設定ファイルの新規作成
$ sudo vi /opt/minerd-koto.service
/opt/minerd-koto.serviceファイル内容
[Unit]
Description=minerd is executed and resides at OS startup.
After=network.target
[Service]
WorkingDirectory=/opt/cpuminer-koto
ExecStart=/opt/cpuminer-koto/minerd -a yescrypt -o stratum+tcp://koto.mofumofu.me:3301 -u k1KFxjGhCUy8cPmgEajZpqwdPRaGUjDQkxn
Restart=always
Type=simple
TimeoutStopSec=5
StandardOutput=append:/tmp/minerd-koto.log
StandardError=append:/tmp/minerd-koto.log
[Install]
WantedBy=multi-user.target
16. minerdの起動確認&自動起動有効化
- 作成した自動起動設定ファイルを所定のディレクトリに移動し、minerdの起動確認および有効化をおこないます。
コマンドプロンプト
// 自動起動設定ファイルを所定ディレクトリに移動
$ sudo mv /opt/minerd-koto.service /etc/systemd/system/
// minerdの起動確認
$ sudo systemctl start minerd-koto.service
// 起動状況確認(設定内容が正しいか動作確認します)
$ sudo systemctl status minerd-koto.service
// minerdの自動起動有効化(再起動後に自動起動するようになります)
$ sudo systemctl enable minerd-koto.service
// OS再起動
$ sudo shutdown -r now
// OS再起動後の実行ログ確認
$ tail -f /tmp/minerd-koto.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-koto.log)がディスク容量を圧迫しないように、ログローテーション設定をお伝えします。
コマンドプロンプト
// ログローテート設定ファイルの定義
sudo vi /etc/logrotate.d/minerd-koto
/etc/logrotate.d/minerd-kotoの内容
/tmp/minerd-koto.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-koto.log