ラズベリー農家のすすめ/NEM Harvesting on Raspberry Pi 3 B

f:id:Ocknamo_crypt:20161105231141j:plain

この記事を読む前に必要な前知識をざっくりと説明(詳しい人は飛ばしましょう)

  1. NEMという仮想通貨があります
  2. ビットコインでいう採掘(マイニング)がそんなにでかい計算力や電力なくてもできるので、ビットコインより分散性が高くなるんじゃないかと注目してる人がいます
  3. ざっくりいうと採掘(マイニング)とは仮想通貨のインフラを支える仕事をする代わりにその通貨で報酬をもらえる仕組みのことです
  4. NEMでは採掘ではなく収穫(ハーベスト)と呼び、NEM通貨(単位はXEM)を報酬でもらえます
  5. 実際のところ報酬はどこから来るのかというと、通貨のやり取りの際の手数料です
  6. 日本人が農耕民族だからかは知りませんがなんか日本でNEMにはまってる人たちが多いです
  7. とりあえずそれ用のソフト(ウォレット)を入れてXEMを買ってウォレットに入れていろいろやるとバーべストができ報酬(収穫?)がもらえます

ラズベリー農家の会とは

さて、計算力や電力がいらないというなら、どうせならRaspberry Pi3でハーベストしてやろうと考えた人とかがなんかゆるく作った。
「ラズベリーパイでハーベストして報酬をツイートしていいねする」だけの会です(俺じゃなくてミジンコさんが作りました)

 

登録するとブロックチェーンからの情報でハーベスト結果を報告してくれるボットもミジンコさんが作ってくださいました。俺にはそんな技術はございません。

NEM東京様にもなぜか取り上げられました(内部リーク+ゴリ押しだけど)

Raspberry Pi 3(B)でハーベストする方法/How to Harvest

早速セッティング方法について説明します。*1

Raspberry Pi 3自体の初期設定については過去記事参照してください。

アップデートします

f:id:Ocknamo_crypt:20161106000901p:plain

Firefox(iceweasel)をインストール

デフォルトで入っているブラウザではウォレットに入ることもできす白画面が表示され途方に暮れることになります。
そこでFirefoxをインストールします。(Chroniumについては私は試していません)
インストール方法はターミナルを起動して

$ sudo apt install iceweasel

y/nと聞かれたらyを入力してEnter
インストールできていれば、Menu→インターネットの中に「Firefox ESR」が入っているはずです。

NEM公式ウォレット/NCC・NISのインストール

以下のリンク先にウォレットがあるのでダウンロードします。(最新版:nis-ncc-0.6.82.tgz)
http://bob.nem.ninja/

(17/10/25追記:現在NCCは非推奨のためダウンロード出来ません。ウォレットを使用したい場合はNanoWalletをこちらからダウンロードしてください。またどうしてもローカルハーベストをしたい場合はこちらの記事を参考にしてください。

Raspberry Pi3の好きなところに展開するとPackageというディレクトリができます。
Packageディレクトリに移動して、ターミナルに以下のコマンドを入力すればNIS,NCCどちらも起動します。

$ ./nix.runMon.sh

このあとちゃんと起動すると以下のような画面に。
f:id:Ocknamo_crypt:20161106004417p:plain
写真だとNISがまだ動いていませんが、ほおっておくとP2Pネットワークからブロックチェーンの情報をダウンロードし始めます。
その期間1日から3日。直接ネットからデータベースをダウンロードしてしまうと早いらしいですが自分はやらなかったので説明しません。*2

アカウントの作成

上の画像の左側でアカウントを新しく作成します。
ここまで読んでる人に詳しく説明する必要はないと思いますので省略。
ただ、アカウント名はアルファベットが良いようです。

ハーベストの方法

RaspberryPiだからといって特別なことはしていません。
新しいアカウントを作成し、ブロックがすべてダウンロードできたら次は
f:id:Ocknamo_crypt:20161106010127p:plain
写真の赤丸=VestedBalanceが10000以上になるまで待たなくてはいけません。
そのためには10000XEM以上をウォレットに入金ししばらく待つ必要があります。(10万XEM程放り込むとすぐです)
詳しくはこちらをご覧ください。
NEMの説明書 – ハーベスティングとは

VestedBalanceが1000以上になったら「ハーべスティングを開始する」をクリックすればローカルハーベストが開始されます。

継続したバーべストのための対策

上記の方法でバーべストはできるのですが、一定時間でNISかNCCが落ちるという問題があります。
目下対策中ですがこれまでに効果があった対策についてまとめます。

熱対策

完全にハード面での対策ですが、ヒートシンク+冷却ファンでCPUの過熱の問題はかなり解決されます。
以下に説明する対策を行えば「FireFox起動してるだけでだんだん動かなくなる。」みたいな症状はだいぶ軽減されます。
まずヒートシンクはアマゾンで購入
f:id:Ocknamo_crypt:20161106011727j:plain
f:id:Ocknamo_crypt:20161106011749j:plain
f:id:Ocknamo_crypt:20161106011821j:plain
シールで張るだけです。
www.amazon.co.jp

冷却ファンは5Vの小型のものを秋葉原のマルツで購入。ラズパイの「3V」出力とつないで使用。(5Vだとうるさすぎるため)
ラズパイのケースに穴をあけてつけます。
缶コーヒーボトルのフタのサイズがぴったりだったのでそれで円をケガイて穴をあけました。
f:id:Ocknamo_crypt:20161106012902j:plain
f:id:Ocknamo_crypt:20161106013152j:plain
f:id:Ocknamo_crypt:20161106013205j:plain
f:id:Ocknamo_crypt:20161106013701j:plain
f:id:Ocknamo_crypt:20161106013256j:plain
f:id:Ocknamo_crypt:20161106013328j:plain
ファン固定用のねじを通す3.5mm穴をあけます。
f:id:Ocknamo_crypt:20161106013340j:plain
f:id:Ocknamo_crypt:20161106013352j:plain
f:id:Ocknamo_crypt:20161106013402j:plain
f:id:Ocknamo_crypt:20161106013459j:plain
ラズパイのI/Oはオスのピンなのでそれに合うブレッドボード用のメスのコネクタついているワイヤを適当に買ってきて、途中で切ってファンの配線とつなげて絶縁テープでも巻いておきます。
こういうの。
https://www.amazon.co.jp/dp/B00P9BVKOKブレッドボード用JPワイヤー 100mm×10本 10PS-MIXの通販ならマルツオンライン

f:id:Ocknamo_crypt:20161106013513j:plain
f:id:Ocknamo_crypt:20161106013527j:plain
ファンのカバーもあった方が良かったですが、ファンに間違えて指を突っ込んでも指は大丈夫です(ファンは多分壊れる)

 

温度の比較はやっておりませんが体感だと10°ぐらいは下がっているように感じます。
CPUの温度を取得するには以下のコマンドを使用します。

$ sudo vcgencmd measure_temp

この熱対策を行って24時間ほどNIS,NCCを起動した状態で測ったところ37.0度。
対策を行った結果、数時間から十時間ほどで落ちていたNISが1日は連続稼働するようになりました。

メモリの確保

NISが落ちるのはラズパイのメモリが足りないからだという提言をいただきメモリ対策をいろいろと行っています。
実験計画法に基づいた定量的定性的な評価は行えていませんが、おそらく効果があると考えられる方法について列挙します。

1.GPUメモリを64Mから16Mに変更

GPUに使用するメモリを減らすと、アプリケーションに使用できるメモリ量が増やせます。
ビデオ出力は遅くなるでしょうが、ハーベスト中はどちらにしろほかの操作ができる状態でないので関係ありません。削りましょう。
f:id:Ocknamo_crypt:20161107010904p:plain
MENUからraspberrypiの設定に移動。パフォーマンスのGPUメモリはデフォルトでは64Mになっています。
f:id:Ocknamo_crypt:20161107010812p:plain
16Mに変更。再起動すると反映されます。
Before
f:id:Ocknamo_crypt:20161107011616p:plain
After
f:id:Ocknamo_crypt:20161107011638p:plain
totalのメモリが925Mから973Mに増えています。

2.NISのメモリ上限を制限

RaspberryPi3は1Gのメモリを積んでいます。
一方でNISの使用メモリはというと、実行ファイルをテキストエディタで開いてみると、
f:id:Ocknamo_crypt:20161107013048p:plain
初期メモリ(Xms)が512M,最大メモリ(Xmx)が1Gです。明らかに大きすぎますね。
というわけでこのオプションを書き換えます。
f:id:Ocknamo_crypt:20161107013102p:plain
数値は512mとか640mとか諸説あるようですがXmxの値をXmsと同じにして1Gより下げるのが基本です。
*3

稼働時間の測定方法

これは直接の対策ではありませんが、NISの稼働時間を測定するためにメモリを監視する方法について書いておきます。
おそらくもっとスマートな方法がありますので、教えてください(おい)

まずNISとNCCを起動します。
次にターミナルをもう一つ起動してJavaの動いてるプロセスを取得するために以下のコマンドを使用。

$ jps

こういう感じに表示されます
f:id:Ocknamo_crypt:20161107014637p:plain
2つある’CommonStarter’がNISとNCCでどちらがどちらかわかりませんが、いろいろ調べてみると番号が若いほうがNISであるとわかります。
上の画像の場合は1093がNISのメモリです。
これを監視します。

$ jstat -gcutil 1093 3600000

「1093」は毎回違う数字なので起動するたびにjpsで確認しています。
その右の「3600000」は監視するインターバルをミリ秒で指定するオプションです。
3600000msはちょうど1時間なので1時間に1度NISのメモリ使用をリアルタイム監視してくれます。
実際にやるとこんな感じになります。
f:id:Ocknamo_crypt:20161107015507p:plain
一行が1時間なので、この行数を数えれば稼働時間がわかります。

現状報告

  1. 連続稼働は約44時間を確認しています。
  2. ラズパイでの収穫は全て合計して24xemです。

今後の課題

  1. 農家の過疎が深刻
  2. 40時間程度では短すぎる。無限に稼働できるようにするか自動的に再起動かけられるようにしたい
  3. ミスって電源が抜けたり停電で再起動することが多発するのでUPS自作したい
  4. nanoWalletへの移行
  5. 自然エネルギーを用いたハーベストへの挑戦
  6. 収穫少ない

……などなど

 

課題はたくさんありますが、めんどくさい分収穫の味は(多分)格別です!
皆さんぜひラズベリー農家になりましょう。

つづき
ocknamo-crypt.hatenablog.com

*1:しかし、これはあくまで2016年11月現在判明している設定方法であり最長で44時間しか連続稼働を確認していないのでさらに設定を探求する必要があります。

*2:ヒント:ウォレットのあったリンク先

*3:この方法については、オプションを書き換えた後でもリアルタイムで見てみるとメモリ1Gぎりぎりまで使用していたり(NIS+NCCですが)、NISを起動したときのログには「Xms512m,Xmx1G」と記述があったりよくわからないことが多い。ミジンコ氏によると両方512mに設定して効果はある様子

Raspberry Pi3の初期設定をする2_日本語設定まで

前回OSのインストールを行ったので、今回は日本語の設定して日本のサイトが見られるようにします!

 

f:id:Ocknamo_crypt:20160914001918j:plain
超めんどくさいけどやればできるレベル。
とりあえずウィンドウズしか使ってないひとでも何とかわかる感じに書きます。

 

日本語設定までの流れ

  1. Wi-Fiの設定をしてインターネットに接続
  2. ターミナルを使用してコマンドでソフトをアップデート
  3. 日本語の設定

1.Wi-Fiの設定をしてインターネットに接続

ツールバーの右上に無線っぽいマークがあるのでそこをクリック

 

f:id:Ocknamo_crypt:20160914003953p:plain
使用するWi-Fiを選択してキーを入力
スマホやタブレットの設定と大差ないので簡単。説明は省略します。

 

2.ターミナルを使用してアップデート

ターミナルはLinuxを使うには避けて通れない道らしいです。しらんけど。
スパーハッカーをイメージしながらコマンド打ち込んでターン!とエンターキーを叩いて頑張りましょう
(すぐに飽きます)

 

まずターミナルを起動
ツールバー左側のあいこんの黒いディスプレイのマーク(先の画像参照)をクリック。
すると画面に黒いウィンドウが出現
f:id:Ocknamo_crypt:20160914002448p:plain

 

コマンドを画像のように打ち込みます。
$ sudo apt-get update
f:id:Ocknamo_crypt:20160914003227p:plain
(もう日本語化しとるやんけ! という突っ込みはなしでお願いします。リアルタイムに画像保存しておく余裕がなかったのです)
とりあえず呪文だと思って意味など考えす一字一句このまま打ちましょう
意味が気になったら自分で調べましょう
自分も表面的な理解しかありませんが……

 

全部打ち込んで’Enter’を押すと
アップデートが始まります。
f:id:Ocknamo_crypt:20160914003234p:plain
回線速度などで時間は変わります
初回だと長いかもしれないっすね
写真のようになって終わるまで、放置しましょう

 

以上でアップデートは終わり

 

3.日本語設定

フォントのインストール

まず入れられる日本語フォントの一覧を出します
もう一度ターミナルに以下のコマンドを打ってみます

$ sudo apt-cache search font japanese
f:id:Ocknamo_crypt:20160914005347p:plain

使用できるフリーフォントがずらっと出てきます
例えばIPAfontとIPAEXfontがほしい場合は(IPAexフォント/IPAフォント

 

$ sudo apt-get install fonts-ipafont fonts-ipaexfont
とターミナルに打ち込めばダウンロード・インストールできます。
やってみましょう
f:id:Ocknamo_crypt:20160914011036p:plain
途中でy/nを問う文章(画像と違って英語で)が出てくるので’y’を入力して’Enter’
f:id:Ocknamo_crypt:20160914011515p:plain
これでフォントのインストールが完了

 

日本語入力ソフトのインストール

次に日本語入力ソフトのAnthyをインストールします
以下コマンドのみ

$ sudo apt-get install ibus-anthy
フォントと同様にインストールします
日本語入力ソフトはほかにもいろいろあるみたいですね~

 

インストールできたら日本語表示と日本語入力の設定をしましょう

 

日本語表示と日本語入力の設定

日本語表示のためローカライズを日本に設定します。
ツールバー左の’Menu’から’Preferences’そこから’RaspberryPi Configuration’に移動’Localisation’を開きます
f:id:Ocknamo_crypt:20160914233115p:plain
‘Local”Timezone”Keyboad‘を全部日本語と日本に設定します。’Wi-FiCountry’は設定しなくても使えたのでよく分かりませんが、とりま日本に設定します
f:id:Ocknamo_crypt:20160914234419p:plain
f:id:Ocknamo_crypt:20160914234438p:plain
日本語に変更
f:id:Ocknamo_crypt:20160914234644p:plain
タイムゾーンを東京に変更
再起動=REBOOTすると変更が反映されます

 

日本語入力のためにIBusの設定をします
さて’Menu’から’設定’、’IBusの設定 (iBus Preferences)’に移動します
‘インプットメソッド (Input Method)’のタブの右のボタンの’ADD’からJapaneseを選びAnthyを選んで追加します
f:id:Ocknamo_crypt:20160914234657p:plain
なぜか初めからあるJapaneseでは日本語入力できません(笑)

‘General’タブに移動すると日本語入力に切り替えるときのショートカットを設定できます

 

以上で日本語表示、日本語入力、設定が完了しました!
これでtwitterできます

参考記事
Raspberry Pi 3 Model B Anthyを使って日本語が入力できるようにする | ゆうそうとITブログ
Raspberry Piを日本語化してみた: Raspberry Piでやってみた

Raspberry Pi3の初期設定をする。(OSのインストールまで)

f:id:Ocknamo_crypt:20160831221034j:plain

 

前回の記事(http://ocknamo-crypt.hatenablog.com/entries/2016/08/27)で、必要なものがそろったところで、
初期設定=「RasPiをパソコンとして使えるようにする」を行います。

ここに関してはネットに詳しい文献が山ほどあるので、このページではなるべくシンプルに短く説明します。公式のクイックスタートガイド(英語)+α(最低限必要なもの)というような内容です。RasPiは初心者だけどパソコンはまあまあ使っているというような人を想定しています。

ちなみに筆者の環境はWindows10なのでそれに準拠しています(それ以外わからん)
なお、本記事がRasPi初心者の参考になるといいなとは思うものの、記事の内容を実行したことによって発生したいかなる損害の責任も筆者は負わないので、すべて自己責任でお願いします。
一方で、わからないことがあったらコメントに書いていただけると助かります。
参考にさせていただいたサイト様 : Raspberry Pi 3 Model B の設定。OSを入れてWebサイト表示ができるまで | ゆうそうとITブログ
https://www.raspberrypi.org/files/legacy/qsg.pdf

 

0. 初めに
RasPiを使うにはSDカードにオペレーションソフト(以下”OS”)をインストールする必要があります。
そこでOSをインストールする前にSDカードを一度フォーマットしてきれいな状態にしてから、OSのパッケージ(NOOBS)をSDカードに入れます。
これらの作業はRasPiとは違うパソコンを使って行います。

1. microSDカードのフォーマット
ネットにつながったパソコンで公式指定のフォーマッターを以下からダウンロードしてください。
SD Memory Card Formatter for Windows Download – SD Association
ページ下段のAcceptをクリックするとダウンロードが行われます。
自分のパソコンにソフトをインストールして起動させ、microSDカードをパソコンに接続。(アダプタ使用)
フォーマッターでRasPi用のmicroSDカードを選択。
オプション設定のボタンを押し、論理サイズ調整をONにしてクイックフォーマットを行います。
※当然ですが間違ったカードをフォーマットするとデータが消えるし「やり直し」はできないので注意。

2. パッケージのダウンロード
NOOBS(New Out Of Box Softwareの)を以下のURLからダウンロード
“NOOBS”と”NOOBS LITE”があるがすぐつかえる無線LAN環境がある場合はNOOBS LITEでよい。
「Download ZIP」ボタンでダウンロードされます。
www.raspberrypi.org

 

ダウンロードできたら、解凍し、展開されたファイルを全てさっきフォーマットしたmicroSDカードにコピーします。

3. 配線
RasPiにmicroSDカードを挿入、上下の向きがあるので注意します
電源ケーブル”以外”の配線を全て先にやります。
マウス、キーボードをつなぎ、そしてHDMIケーブルでモニタ(もしくはテレビ)に配線します。

4. 起動
電源ケーブルをつなぐと勝手に起動!
モニタが黒いままの場合はモニタの電源と入力が正しいかどうか真っ先に確認してください。
進めていくとスマホなどでもよくあるWi-Fiの接続画面が出てくるので自分のネットワークを選択して接続します

5. OSの選択
Raspbianを選択(RasPiに最適化されたOSだそうです*1
「本当にインストールしますか」的な警告ウィンドウが出るのでYesを選択。
黒い画面になってインストールが始まります。
インストールには大体30分以上かかるので気長に待ちましょう。
終わるとデスクトップが立ち上がります!

 

以上でRasPi3にRaspbianをインストールできました!!
次はネット接続,日本語設定について解説していきます!!

*1:Win10 for Iotの実力はちょっと気になりますが