Raspberry Pi Zeroのセットアップ

先月スイッチサイエンスさんでRaspberry Pi Zeroを購入しました。

Raspberry Pi Zero v1.3 – スイッチサイエンス

OSのRaspbian Jessie LITEをセットアップして初期設定を行い、動作テストしたのですが、
あんまりにもちっちゃいので逆に使いづらいのと、放熱対策もやんないとな、ということで自作のリグを作成して熱対策を行いました。

最終的にはこんな感じのものが出来上がりました。

 

f:id:Ocknamo_crypt:20170430181928j:plain

左がRaspberry Pi 3、右がRaspberry Pi Zero。
ええ、言いたいことはわかりますよ。 リグを含めると大きさがほとんど変わりませんね!
でも良いんです。
消費電力は確実に少なくなり、必要な電源の電流も2.5Aから1A以下(スペック非公開)になるというのが狙いなので。

 

(今回あんまり親切でない記事なので初心者の人は申し訳ありませんが、頑張って勉強してくださいm(__)m
自分も勉強しつつやったので解説できる余裕がありません(笑))

 

Raspberry Pi Zero(以下Zero)の購入とセットアップ

以下の画像が、俺がZeroの購入時に購入したものです。

f:id:Ocknamo_crypt:20170430182914j:plain

張り切ってUSBハブとUSBWifiモジュール、microSDカード、無線マウス+キーボード、HDMLコネクタを購入したのですが、
初期設定をやっていくと、この内USBハブとUSBWifiモジュール、あとOS用のmicroSDカード以外は必要ないことが判明しました(あっても問題はないですが)

 

初期設定はこちらのサイトと、
Raspberry Pi Zeroの購入からRaspbian Jessie LITEをセットアップするまでの方法 – karaage. [からあげ]
こちらのサイトさんを参考にしています。
Raspbianをヘッドレスインストールする (SSHの有効化) : アジャイル株式会社

あとSSH関連ではこことこことここ等を参考にさせてもらいました。
インフラエンジニアじゃなくても押さえておきたいSSHの基礎知識 – Qiita
簡単にサーバにファイル転送 – usmysaの開発メモ
SSH (1)

また個人的にjava8を入れておきたかったので、ここに記載されている方法でインストール。
ラズパイでJava8を使う – Qiita

SSHとか知らなかったので大変ではあったんですがメインPCでUbuntu使ってたので比較的やりやすかったです。
最終的に自分のPCのターミナルからZeroを動かせるようになります。
f:id:Ocknamo_crypt:20170430185145p:plain

 

これでとりあえずの初期設定は終わりました。
f:id:Ocknamo_crypt:20170430185308j:plain

しかしこんな感じだとかっこわるい+放熱対策もしたかったので、リグを自作することにしました。

 

長くなったので次の記事に分割します!
それではまた。

ラズベリー農家のすすめ/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に設定して効果はある様子

IOTAの公式クライアントのインストール方法(Win)

※追記(2017.6.15)

最近IOTAが上場したためこのサイトに来る方が増えていますが、ここの情報は最新のものではありません!
ウォレットのインストール手順の参考にするくらいなら良いですが、
最新の情報はIOTAの公式Slackの日本ページに参加して確認してください。

https://iotatangle.slack.com/messages/japanese

追記終わり

 

IOT(モノのインターネット)のためのアルトコインを覗いてみよう。
f:id:Ocknamo_crypt:20160920224814j:plain

 

この記事ではアルトコイン’IOTA’(イオタ)の公式クライアントのインストール方法(Windows.ver)について記述する。
ホワイトペーパー読むのもいいけど、とりあえず動かしてみようとやってみると、意外と簡単に入れられたので記録することにした。
(すらすら英語読めればすぐできるので、そういう人は公式の解説読んでくださいね)
入れるのは簡単だけど、できたばかりのアルトコインなんて全てにおいての信頼性は未知数。自己責任で、惜しくない手間を使ってやりましょう。

 

どこで知ったか?

ブロックチェーンはだめだ、IOTAはブロックチェーンじゃない、裏で動いてるTangleすごいと斉藤’さん’が仰られていたのを聞き、IOT向けのトークンなら手を出さざるをえないと考えて……はい。正直ただの興味本位です。
ビットコイナー反省会Ep8 ゲスト SFC研究所 斉藤 賢爾さん – YouTube

 

インストール方法

1.公式サイトに行く

IOTA – Next Generation Blockchain

 

公式サイトが非常にかっこいい。そして重い。グラフィックを眺めてIOTAって何なのか知見を広めるべきかもしれないけど、とりあえずクライアント入れてみたいという人は右上の’GET STARTED’をクリック。
f:id:Ocknamo_crypt:20160920230647p:plain

 

2.インストールファイルを手に入れる

f:id:Ocknamo_crypt:20160921005610p:plain
いきなり’How to Install’に飛ぶので、’Download the Client’の章の文中リンクから以下のアドレスに移動

 

Releases · iotaledger/wallet · GitHub
f:id:Ocknamo_crypt:20160920232317p:plain
最新版(Latest release)から最新版の.exeファイルをダウンロードする。(Macであれば.dmgファイル)
2016年09月20日現在最新版は1.0.5である。

 

3.セットアップ

.exeファイルを起動するとセットアップが開始される。
f:id:Ocknamo_crypt:20160920233105p:plain

 

そのまま放置すると数分でクライアントが起動。
f:id:Ocknamo_crypt:20160920233429p:plain

 

4. ‘SEED’を設定しウォレットをセットアップ

‘SEED/Password’の欄にローマ字と’9’のみで構成された任意の81文字を入力する。
81文字以下の長さでも問題ないが、推奨は81文字。ローマ字は大文字でも小文字でも構わないが混在しているとダメな様子(エラーが出る。たぶん識別していないだけだと思う)
テキストエディタを開いて自分で打つのも手だけど、もっと簡単な方法がある。
ツールバーの’Tools’から’Generate Seed’を選択。
f:id:Ocknamo_crypt:20160921000556p:plain

 

SEEDが自動生成されるのでクリップボードにコピー
f:id:Ocknamo_crypt:20160921000931p:plain

 

忘れないようにメモ帳か何かに保存する(忘れると二度アカウントを使えませんしトークンも失います。が、81文字は人間には長すぎる)
SEEDの欄に貼り付けて’Login’をクリック
f:id:Ocknamo_crypt:20160921001925p:plain

 

ウォレットが起動します。
f:id:Ocknamo_crypt:20160921002142p:plain

クライアントのインストールは大体これで完了。
しかし送金、着金に使用するにはまだネットワークとの同期が必要。

 

5.ネットワークと同期する

ネットワークとの同期に良好な通信環境で1~2時間かかるそうです、……がしかし、うちは光回線ですがもっとかかってる!!!
同期していないと、一応アドレスを作って送金してもらうことはできるものの、着金できない。

(というかまだ同期が終わってない!? 送金着金出来たら後日追記予定)

6.その他
  1. 一つのSEEDからアドレスがいっぱい作れる。取引ごとに作り直すことを想定しているんでしょうか。
  2. IOTAの値段を見れるサイトがあります。iotawallet.com
参考/お礼

lhj.hatenablog.jp
https://slack.iotatoken.com/
LHJさんいろいろありがとうございます。なんかNEMのフォーラムでも投稿を読ませてもらった記憶があります。
IOTA
投機もいいけどホワイトペーパー読んで賛同できるコインに投資しましょう(自戒)

 

以上!

※追記

1日ほどで同期しましたが、その後ウォレットを再起動するとウォレットに入れなくなりました(泣)
秘密鍵は記録しているのでブロックチェーンならぬタングル?が存在する限りは回復できるはずですが(笑)
現在、次のユーザー向けバージョンとして,1.0.8を開発中とのことなので、そちらを待ってからのほうがいいかもしれません(-_-;)

1.0.8は10月後半にリリース予定とのことです!