今後は Windows 10 for IoT が無償提供されるという話もあり、ハードウェア周りをちょっと触ってみたかったので Raspberry Pi 2 を Pimoroni で買ってみました。
Raspberry Pi 2 with Pibow Case - Pimoroni
Raspberry Pi 2 本体とケースで £42 ですが、これに送料が £6 追加されるので合計で £48 になりました。
残念ながら現時点で 1 ポンド 183 円という円安のため、日本で Raspberry Pi 2 を買うよりもそこそこ割高になってしまいましたが、ケースのクオリティには満足しています。
組み立ては説明書とか無かったので戸惑いましたが、何とかなりました。
Mono 3.12.0 をインストールする
OS には Debian ベースの Raspbian を選んだので、Mono は古いバージョンなら apt-get install mono-complete で割とあっさりとインストール出来ます。新しいバージョンはソースからビルドするしかなさそうなので、Mono 公式のドキュメントを読んでビルドしました。
Compiling Mono on Linux | Mono
Debian 向けに書かれている情報なら Raspbian でも同じように出来るのが楽です。今回は最新の Mono 3.12.0 をビルドしてみたところ 3 時間ぐらいかかりました。
コンパイルを並列で行えば、もうちょっと速く処理できたかもしれないです。
XRE をインストール
これで Mono に関しては問題が無いはずなので、XRE をインストールします。
curl -sSL https://raw.githubusercontent.com/aspnet/Home/master/kvminstall.sh | sh && source ~/.kre/kvm/kvm.sh
これを実行すると kvm コマンドが使えるようになるので、kvm upgrade を実行して最新の XRE をインストールします。インストール後は kpm や k コマンドが使えるようになっています。
サンプルコードとして aspnet/Home · GitHub を clone して sample 内にある HelloMvc を動かしてみます。project.json で参照しているバージョンが古いので beta2 か * に変更します。
その修正後に kpm restore を実行してパッケージの復元を行います。そして kpm restore で失敗する場合は SSL 周りが原因なので、以下の Issue を参考にコマンドを叩き込みます。
kpm restore fails on Linux · Issue #197 · aspnet/Home · GitHub
sudo certmgr -ssl -m https://go.microsoft.com sudo certmgr -ssl -m https://nugetgallery.blob.core.windows.net sudo certmgr -ssl -m https://nuget.org mozroots --import --sync
kpm restore が成功したら、後は Kestrel を実行するために必要な libuv をインストールします。
git clone https://github.com/libuv/libuv.git cd libuv ./autogen.sh ./configure make sudo make install sudo ldconfig
これで Kestrel が動作するようになるので k kestrel コマンドを実行します。
Started が表示されたら無事にサーバーが起動した証拠です。ブラウザから http://{Raspberry Pi の IP アドレス}:5004/ にアクセスすると ASP.NET 5 のページが表示されるはずです。
まだ MusicStore などの複雑なアプリは実行できませんでしたが、超小型の ASP.NET 5 サーバーが手に入りました。検証環境としては十分だと思いました。