Raspberry Pi 2 Model B(通称2B)が届きました。今までWebサーバー&ファイルサーバー&Webカメラ配信をしていたRaspberry Pi Model B(通称B)を2Bへアップグレードします。
今回のRaspberry Piの箱のデザイン。
とりあえずBを最新の状態にアップデートします。
sudo rpi-update sudo reboot sudo apt-get update sudo apt-get upgrade sudo reboot sudo apt-get dist-upgrade sudo reboot sudo apt-get install raspberrypi-ui-mods sudo shutdown -h now
参考:UPDATING RASPBIAN ON YOUR MICROSD FOR THE RASPBERRY PI 2
BはSDカードを使っていますが、バックアップ用のUSBアダブタにさしたマイクロSDカードがあるのでそれを使って2Bを動かしてみます。
Raspberry Piの完全バックアップ、外部マイクロSDカードへの自動バックアップ
マイクロSDカードを同期させて最新版にします。
sudo rsync -aEv --delete-during --exclude-from=/rsync-exclude.txt / /media/usb1/ //同期が終わったらBを止める sudo shutdonw -h now
バックアップ用のマイクロSDカードを2Bに入れて起動してみます。
なぜか無反応。。いろいろ試してみましたがうまくいきませんでした。B+だとバックアップ用のマイクロSDカードでも起動するんだけど2Bだと起動のはじめのところでつまずいている感じがします。
あきらめて普段使っているBのSDカードのimgファイルををパソコンで読み込んで、それをマイクロSDカードに書き込みます(Model BのSDカードをバックアップ)。Bのimgファイルを書き込んだマイクロSDカードを2Bに挿入して起動しています。
2Bの起動に成功しました。
freeをしてみます。
free total used free shared buffers cached Mem: 998096 504188 493908 0 30580 343200 -/+ buffers/cache: 130408 867688 Swap: 0 0 0
ちゃんとメモリは1GBを認識しています。16MBはビデオメモリで使われています。
なお、最初に確認した時は740MBしか認識されていませんでした。いつの間にか1GB認識されていました。Memory Splitのまわりで問題があるらしく気になる人はPi 2 Memory Splitを見てください。私の場合は、いつの間にか直っていました。
Raspberry Pi 2 Model BのGPIOの不具合
Raspberry Pi 2 Model Bは前のモデルと完全互換といっていますがGPIOで不具合があります。
Raspberry Pi 2 Model Bでwebiopiが動かない。
NameError: global name ‘GPIO’ is not defined
WebIOPiだけの問題ではなく、2BでCPUが変更された関係でGPIOのアドレスが変更されました。しかし2Bの登場がいきなり過ぎてGPIOを使っているモジュールが対応できずに軒並み不具合を起こしています。
RPi.GPIOだけ使っている場合は既に修正方法がWebで見つかりました。
python Python 2.7.3 (default, Mar 18 2014, 05:13:23) [GCC 4.6.3] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import RPi.GPIO Traceback (most recent call last): File "<stdin>", line 1, in <module> RuntimeError: This module can only be run on a Raspberry Pi! >>>
2BはまだRaspberry Piの仲間に入れていないようです。近いうちにapt-get upgrade;apt-get updateで不具合が修正されると思いますが、RPi.GPIOだけなら下記の方法で治せます。
sudo apt-get install python-pip sudo pip install -U RPi.GPIO sudo apt-get install python3 sudo apt-get install python-setuptools sudo apt-get install python3-pip sudo apt-get install build-essential python-dev python-pip mercurial hg clone http://hg.code.sf.net/p/raspberry-gpio-python/code raspberry-gpio-python-code cd raspberry-gpio-python-code sudo python setup.py install sudo python3.2 setup.py install
How To Fix Error Loading RPi.GPIO Python Library On Your Brand New Raspberry Pi 2
これでRPi.GPIOは動くようになりました。
だけどWebIOPiはまだダメです。
sudo webiopi -d -c /etc/webiopi/config WebIOPi - ERROR - global name 'GPIO' is not defined Traceback (most recent call last): File "/usr/local/lib/python3.2/dist-packages/WebIOPi-0.7.0-py3.2-linux-armv7l.egg/webiopi/__main__.py", line 75, in <module> main(sys.argv) File "/usr/local/lib/python3.2/dist-packages/WebIOPi-0.7.0-py3.2-linux-armv7l.egg/webiopi/__main__.py", line 69, in main server = Server(port=port, configfile=configfile, scriptfile=scriptfile) File "/usr/local/lib/python3.2/dist-packages/WebIOPi-0.7.0-py3.2-linux-armv7l.egg/webiopi/server/__init__.py", line 52, in __init__ self.gpio.addSetups(config.items("GPIO")) File "/usr/local/lib/python3.2/dist-packages/WebIOPi-0.7.0-py3.2-linux-armv7l.egg/webiopi/devices/digital/gpio.py", line 62, in addSetups self.addGPIOSetup(gpio, params) File "/usr/local/lib/python3.2/dist-packages/WebIOPi-0.7.0-py3.2-linux-armv7l.egg/webiopi/devices/digital/gpio.py", line 55, in addGPIOSetup self.addGPIO(self.gpio_setup, gpio, params) File "/usr/local/lib/python3.2/dist-packages/WebIOPi-0.7.0-py3.2-linux-armv7l.egg/webiopi/devices/digital/gpio.py", line 45, in addGPIO func = GPIO.OUT NameError: global name 'GPIO' is not defined
GPIOが見つかりません。
RPi.GPIOを参考にWebIOPiのソースコードを見よう見まねで直して再インストールしてみましたが、うまくいきませんでした。
頑張ったけど、あきらめました。
私は頭のいい人が登場して直してくれるのを待つことにしました。GPIOの問題は有名な不具合なので、早くて2,3日、遅くても2週間くらいで修正方法がネットで見つかるようになると思います。
Raspberry Pi 2 ModelBの実際のパフォーマンス
一言で言うと、とにかく速くなりました。
Raspberry Pi 2 ModelBを使っているサイト
金魚の金太郎
(WebカメラのコントロールにWebIOPiを使っているため現在Webカメラを動かせません)
BだとWordpressの管理画面がすごく重かったのですが、2Bで2分の1以下の重さになった感じがします。Wordpressのサイト自体もおそらく速くなっていると思います。Webmasterでサイトの速度が線グラフで出てくるので2,3週間したら速度の違いを追記します。BやB+だとなんとかギリギリ使っていた感じですが、2BでWebサイトとして実用的に使える状態になりました。
Webカメラの負荷が減りました。Webカメラを使って配信しているのですが、BだとCPUを50%〜60%を使っていました。2BにするとCPUの使用率が30%ちょっとに低減しました。かなり素晴らしいです。
ファイルサーバーが速くなった。WebサーバーとWebカメラ配信とファイルサーバーが同居していたため、ファイルサーバーのアクセスが遅かったです。それが2Bにして1.5倍から2倍くらい速くなりました。
Raspberry Pi ModelA/B/B+は細々と使える感じでしたが、今回のRaspberry Pi 2 ModelBは本格的にいろいろ使えるものになりました。
追記1:不具合2 カーネルパニック?
Pi2で動かしているWebサイトでエラーが出るようになった。
500 – Internal Server Errorが出る。
Message from syslogd@raspberrypi at Feb 13 01:10:33 ... kernel:[314654.237211] Internal error: Oops: 5 [#53] PREEMPT SMP ARM Message from syslogd@raspberrypi at Feb 13 01:10:33 ... kernel:[314654.591254] Process php5-cgi (pid: 17913, stack limit = 0xb1880238)
リブートしようとしたけど、リブートしなかったので直接電源切った。
RPi 2 Model B Locking Upにも似た様なこと?が書いてあった。
とりあえず最新版に更新する。
sudo rpi-update sudo reboot sudo apt-get update sudo apt-get upgrade sudo reboot
はて?再起動したらデータベースが動いていない。
また再起動してみる。
mysqldが止まったまま。
syslogを眺めたらこんなエラーが出ていた。
error: ‘Can’t connect to local MySQL server through socket ‘/var/run/mysqld/mysqld.sock’
/var/run/mysqld/mysqld.sockが見つからなくなった….
syslogを眺めてみると、なんかデータベースのデータがぶっ壊れたような気がスル…
あとPi2のLANアダプタの接続がおかしい気がするー。
うーん、ということでバックアップからデータを戻すことにしました。
めんどくさかった。
データを戻してアップデートした。
mysqldもちゃんと動いてる。
とりあえずOKということで様子見です。
一度Pi2を味わうとPi1にはもう戻れないー!
追記2:Raspberry Pi 2のWebサーバーとしての性能
Raspberry Pi 2 ModelBで動いているWordpressサイト、金魚の金太郎
ウェブマスターツールのクロールの統計情報のページのダウンロード時間(ミリ秒)
2015年2月6日以前はRaspberry Pi ModelBを使っていました。そのときのダウンロード時間の平均は3.6秒くらい。キャッシュを使ってもこんだけ時間がかかっていました。
2015年2月6日以降、Raspberry Pi2 ModelBにアップグレードした結果、ダウンロード時間は平均1.0秒くらいになりました。2月15日前後にカーネルパニックみたいなのに遭遇してダウンロード時間は上昇してしまいましたが、ソフトウェアをアップデートすることで、再び1.0秒くらいになりました。
この結果、Pi2でWordpressが実用的に使えるようになったといえます。
こちらの情報を参考にさせていただいて、次の試作ができました。ありがとうございます。
「退役寸前のブラウン管TVのリサイクル回収料金*2で、捨てずに先進ネットTV化し、
URL入力・ネットサーフィンは無線KB/Mouseで快適という環境を実現しました。
もちろん、Youtube、インターネットラジオも視聴できます。」
ウェブサイトに製作記事を載せています。
手持ちのUSBチューナー(HDUS)も、たくさん修正して、何とか、TSファイル出力に成功しました。
ホーム画面を付ければ、SmartTVの完成です。