2019年8月7日水曜日

RazpberryPi Zero WでJavaを使おう

というわけでRaspberryPiどころか家でPCにも触ってなかったのですが最近Ryzen 5 2600XなPCを組んでからプログラミングやらいろいろ再開中で、RaspberryPiでWebサーバでもと思ったら2Bが行方不明なのでZero Wを買って挑戦してみることに。
いろいろ罠にはまります。
  • RaspberryPi Zero WとWHをスイッチサイエンスで1つずつ購入
  • microSDXCカード 128GBを2枚購入していた(危険 class 10、UHS-Ⅰ Speed Class 1、A1対応)
  • microSDHC 8~32GBが推奨
  • USBキーボードがなかった(Logiのワイヤレスドングルので可。SANWAのキーボードもあった)
  • てきとーなmicroUSBで繋がる電源
  • PuTTYとWinSCPでリモート接続

本体の選択

まずは本体の選択、初心者はできれば3B+かな。Zeroは2台目以降でもいいのかもしれない。
フルサイズUSB端子がある、有線LANがある、無線LANもある、HDMIがフルサイズ、などの理由です。変換ケーブル類も高いので予備がないなら3B+です。
Zero Wは、シングルコアARMv6、microUSB OTGがある、有線LANがない、無線LANがある、HDMIがminiサイズ、といろいろと不便です。Zeroになると無線LANまでないので別途用意しないといけません。
Javaを動かしたいならARMv7以降のCPUのものを選ぼう。NOOBSにはARMv7対応のJava11くらいが入っていた。Zero WはARMv6です。あとで対応したJavaを探します。

メモリーカード、OSの選択

メモリーカードの設定から入ります。microSDHC、microSDXCが使えますが、推奨は8GB以上のようです。microSDXCはフォーマットがFAT32ではないという理由で初心者にはおすすめしません。というわけで、初心者向けの容量は8GBから32GBの間で選びます。挑戦したい人はmicroSDXCも今は512GBくらいまであるので選び放題です。
速度など容量以外の選択基準では、class10、UHS不要、A1かA2対応のスマホ用に最適化されているようなものや、書き換えに高耐久なもの、がおすすめです。PCで最初に書き込むのが速い方がいいという理由でUHSスピードクラスの速いものを選んでも全然かまいません。

次にOS(インストーラ)ですが、NOOBSにしてみます。ファイルをコピーするだけで簡単です。OSは、Raspbianなども選択できます。

書き込んでみる(microSDXCで難儀)

64GB以上のmicroSDXCは特殊事情により標準のフォーマットがexFATです。RaspberryPiではこれをFAT32にする必要があります。
http://www.ridgecrop.demon.co.uk/index.htm?guiformat.htm
RasPiサイトでおすすめのフォーマッタはこれなのでこれでFAT32にフォーマットしてみました。
次にNOOBSのファイルをダウンロード、解凍して入れるだけ。Torrentも利用できるようです。とりあえずインストーラは完成。

繋ぐ+トラブル

RaspberryPi Zero WにmicroSDXCカード、miniHDMI、microUSB電源、キーボードを繋ぎ起動、インストーラ選択画面まで表示、操作できません。
原因は電源不足電源とデータの接続が逆。USBとPWRの刻印があるので注意しましょ。電源が外側の端子のようです。また、データ側のUSBを抜き差ししても再起動してしまうことがよくあるのでインストール用にUSB HUBなどをあらかじめ繋いでおきます。
無線LANを設定、OSを選んでインストールでなんとか進みます。インストーラの言語を日本語にしたりもできます。

OS入れた

インストールが進むと再起動、何かのOSがGUIで起動しました。このあとWi-Fi(選択するだけ、パスワードは設定済み?)など少し設定を進めます。言語のダウンロードなどがなぜか失敗。とりあえず完了のようなのでsshで繋ぐのとCUIで起動するくらいに少し設定を触ってみたりで再起動。
# java うごかない openjdk-11-jdkが入っていてARMv7以降に対応していました。RaspberryPi Zero WはARMv6のようですよ。なぜ。

設定が終わればキーボードマウスは使わないのではずしてしまっても安全です。
というわけで、いろいろ設定できるものを探してみるところからまたはじめようかと思います。
Bluetoothが繋がるタイミングも調べてみないとわかりませんね。

Javaを探す

Raspberry Pi Zero Wではopenjdk11が入っていても動かないのでバージョンを下げる対策が必要なようです。

# java -version
Error occurred during initialization of VM
Server VM is only supported on ARMv7+ VFP
javaコマンドを叩いてみるも、JDKが動きません。 server VMがARMv7用だとか。
何が入っているのか探してみます。
# which java
コマンドの位置を調べるコマンド which
 /usr/bin/java
# dpkg -S /usr/bin/java
ファイルのパッケージを調べるコマンド dpkg
反応がない…リンクされているのでその先をたどります。
# ls -l /usr/bin/java
最終的にたどりついたのは /usr/lib/jvm/java-11-openjdk-armhf/bin/java のようです
# dpkg -S /usr/lib/jvm/java-11-openjdk-armhf/bin/java
openjdk-11-jre-headless というパッケージに当たったので消し去ります。
openjdk-10-jre-headlessやopenjdk-9-jre-headlessも入っていたら消します。
# apt-get remove openjdk-11-jre-headless
openjdkとopenjreが消えてくれます。
# apt-get install openjdk-8-jdk
openjdk 8をインストール
# java -version
openjdk version "1.8.0_212"
OpenJDK Runtime Environment (build 1.8.0_212-8u212-b01-1+rpi1-b01)
OpenJDK Client VM (build 25.212-b01, mixed mode)
動いてくれました。

ここまでくれば、あとはてきとーに楽しめます。

0 件のコメント:

コメントを投稿