Raspberry PI2は、900MHz駆動のCortex A7を4つ、1GBのRAMをそれぞれ搭載した、ワンボードマイコンである。Model B+は、RJ45(10/100/1000base T)、4ポートのUSB2、microSD、HDMI、カメラポート、GPIOなどの各種IOを持ち、標準的なコンピュータシステムとして利用可能なパッケージとなっている。
→本家
OSイメージは、Raspberry Piのサイトからダウンロードして導入する。 導入用のキットとしては、NOOBSが標準的に用いられている。
OSをインストールするためのキットという位置づけのもの。Raspberry Pi2には1.4以降のバージョンで対応している。
ZIPファイルを本家、またはミラーサイトからダウンロードして、FAT32でフォーマットした microSDカードに展開するだけで導入完了である。特定のイメージライターなどを必要とはしない。
NOOBSは Raspbianを含んだ形で配布されているが NOOBS_Liteは Raspbianを除外した軽量なダウンロードイメージとして配布されている。Raspbianを導入するつもりなら、NOOBSのフルセットをダウンロードしておくのがいいだろう。
なお、インストールに当たっては、HDMI接続の可能なモニタ、USBキーボード及び、USBマウスが必要になる。マウスがなくても、TABなどのキー操作でどうにでもなるだろうと思ったら、実はどうにもならなかった。 NOOBSからインストーラーをキックするまでは少なくともマウスが必要。 あらかじめ用意しておかないと、ワタシのように、NOOBSの画面が出てから家の中を右往左往することになるので注意。
RaspbianはdebianをRasbperry Pi向けにカスタマイズしたものである。 一般的な用途としては、まずはこのOSを利用することになるだろう。
なお、NOOBS 1.4.1までは raspbian は debian 7.x (wheezy)ベースであったが、1.4.2以降は、debian 8.x (jessie)ベースとなっている。
NOOBSのOS選択画面で、ロケールを日本語にすることが出来るが、これを日本語にしてしまうと、Raspbianの設定に問題を起こす。
NOOBSの画面上は問題なく日本語も見えているが、raspi-config1)になると、コンソール用の日本語フォントが入っていないようで、大変に困ったことになる。 ロケールを日本語にするのは、最後にするべきである。2)
(2015/10/29追記)
NOOBS 1.4.2になり、ロケールを日本語にしても問題は起きなくなった。 基本的に、設定は raspi-configではなく、LXDEのメニューからXのアプリを起動して行うようになった。
但し、フォントは自分でインストールする必要があるが。
Raspbianの初期ユーザは pi である。 別にそのまま使い続けて問題があるわけではないが、存在が知られているアカウントというのは、それだけで脆弱性になるので、独自のユーザを作りたい。 いずれにしても、既存の環境が存在していれば、ユーザアカウントがあるはずで、それらと共用したいのは当然の欲求だろう。
piは UID = 1000であり、グループ pi - 同じくGID=1000-をプライマリグループとしている。 これが他と衝突している場合は、こちらのグループ名とユーザ名とを変えるなどの対応が必要となるだろう。 とりあえず、我が家ではGID=1000は他の用途に使われているので、これは名前を変更して他と整合するようにした。3)4)
※追記: スクリプト等が pi:pi など、決めうちで書かれていることに対応するために、gid=1010で、pi を作り、これにpiが属するようにした。
# groupadd -g 1010 pi
基本的には、普通に、useraddなどで、ユーザを追加していくだけなのだが、LXDEの動作上、注意しないといけない点がある。
まだ、どれが原因か突き止めていないのだけれど、piが所属しているグループのうちどれかが、LXDEを動作させる上で要求されているものであるようである。
当初、自分のアカウントは、プライマリのグループだけにしか所属させないで、xrdp経由でログインしたところ、延々とLXPanelが起動に失敗し続け、~/.xsession-errors が爆発的にふくれあがってしまった。(エラーを出し続けるから) エラーの内容ははっきりしないのだが、piでログインすると問題はなく、piの設定と全く同じ設定が各種設定ファイルにはなされている。5)
この状況で違うのはUIDと、所属グループくらいなものだったので、とりあえず、端から、同じグループに入れてみたらあっさりと動いた。
というのが、事のあらましである。 なので、グループがキーなのは判っているのだが、具体的にどれなのかは、全部一気に追加したために判っていないというわけである。
上と関連するが、sudoersの中で、piはパスワードなしで、sudo出来るようになっている。また、リモートからでもそれが可能である。
あまりに強烈なので、次のような変更を加えておきたい。
# Host alias specification Host_Alias LOCAL=192.168.0.0/24 ... pi LOCAL=(ALL) ALL
元々は
pi ALL=(ALL_ NOPASSWD: ALL
だったのだから、恐すぎる。
日本語関係は本当に最低限しかサポートされていないので、あれこれ必要になる。 とにかく、インストール直後の状態では chromiumを起動してもフォントが不足しているためあちこち表示がおかしい。
フォントについては、およそ、日本語だなと思うパッケージを端から導入しておく。 かな漢字変換は uim-anthy6)を入れる。 関連するパッケージで、uim-fep と uim-qt, uim-ximあたりも入れておく。
ターミナルから uim-fep を起動して、かな漢字変換が可能になればOK。 デフォルトでは <Shift>+<Space> でかな漢字変換のON/OFFを行うが、
/usr/share/uim/generic-key-custom.scm
を
(define-custom 'generic-on-key '("zenkaku-hankaku" "<Control> ") '(global-keys1) '(key) (N_ "[Global] on") (N_ "long description will be here")) (define-custom 'generic-off-key '("zenkaku-hankaku" "<Control> ") '(global-keys1) '(key) (N_ "[Global] off") (N_ "long description will be here"))
のようにすることで、<Control>+<Space> でON/OFFするようにすることも出来る。
RTCを持たないRaspberry Pi2では、時刻はカーネルが刻み続ける。 カーネルに時刻を与えるのは、NTPになる。
標準では、NTPを 0~3.debian.pool.ntp.org に聞くようになっているので、そのままでも動作するが、一々外部に問い合わせまくるのもよろしくないので、家庭内のNTPサーバへと問い合わせ先を変更する。
/etc/ntp.conf: server ntp.wildtree.jp iburst # server 0.debian.pool.ntp.org iburst dynamic # server 1.debian.pool.ntp.org iburst dynamic # server 2.debian.pool.ntp.org iburst dynamic # server 3.debian.pool.ntp.org iburst dynamic
のように、元々あった、serverの定義をコメントアウトし、自宅LAN内のサーバに変更する。 あとは
/etc/init.d/ntp restart
で再起動しておく。 正しく問い合わせが行われているかどうかを、ntpq で確認する。
araki@raspberry ~ $ ntpq -p remote refid st t when poll reach delay offset jitter ============================================================================== *ntp.wildtree.jp 130.34.11.117 2 u 2 64 37 0.424 5.208 1.825 araki@raspberry ~ $
余計なサーバがなく、ターゲットにしたNTPサーバが表示されていればOK。 時刻が採用されれば、サーバ名の前に *がつく。 再起動した直後ではついてないので、少し時間が経ってから再度確認してみればいいだろう。
Raspberry Pi2 は、USBポートの電流量を制限された状態で動作している。 このため、バスパワーで駆動されるHDDの類いを駆動することは、標準的な状態では不可能である。
/boot/config.txtに、次の設定を加えることで、1.2A程度までの電流を流すことが出来るようになり、バスパワーHDDの利用も可能となる。
max_usb_current=1
/boot/config.txt は、Raspberry PiのBIOS設定ファイルのようなモノで、様々なパラメータがあるが、ここでは他のパラメータについては触れない。
Raspbianは、基本的にはdebianと同じなので、aptを使ってアップグレードが出来る。 aptの参照先を新しいものに変更したら、
# apt-get update # apt-get upgrade # apt-get dist-upgrade
として、再起動する。 途中、作業が中断するなどした場合は、
# apt-get upgrade --fix-missing # dpkg -configure -a
などとして、回復を行う。
※注記:
apt の参照先は、次のファイルに書かれている。
/etc/apt/sources.list だけしか書き換えないでも一応アップグレードされるが、Raspberry Pi向けにカスタマイズされたモジュールが導入されず、debianのものが入ってくるので一部動かないものがでたりするので注意が必要。 7)
wheezy は /etc/apt/sources.list.d/collaborate.list というファイルがあったが、これはjessieでは参照先としては廃止されているので、単純にファイルを削除すればよい。
マイクロソフトが突如、無償配布を決定した Raspberry Pi向けのWindows10。 もちろんこれはフルスペックのWindows10が動作するという意味ではない。 IoT向けのディストリビューションということのようである。
とりあえず、まだ試していない。
sshdは既にインストールされているので最低限の修正をしておく。
PermitRootLogin no PasswordAuthentication no
この二つは、必ず no にする。 後者は、パスワードによる認証を禁止する-暗号鍵を使う方法のみ許可する-なので、これに先だって、~/.ssh/authorized_keys2 にアクセス元の公開鍵を設定しておく必要がある。 これを忘れると、コンソールからしかログイン出来なくなるので注意が必要。
LXDEをリモートから利用するに当たって、是非利用したいモジュールである。 デフォルトではインストールされていないので、aptでインストールする。
apt-get install xrdp
必要なのはこれだけである。 初回は手で起動する必要があるだろう。
# /etc/init.d/xrdp start
xrdpは、VNCにRDPのかわをかぶせたような実装になっているので、アクセスに当たって、WindowsのRDPクライアントを利用出来るのが利点の一つだろう。
接続すると、ログインダイアログが出てくるので、ユーザ名とパスワードを入れる。
セキュアなアクセスを望むのであれば、VPNまたはsshトンネルを使ってセッションを張るなどの対応は必要になる。
実際に外から家のPiにつないだ感じは、十分実用になるレベルである。 ただし、ブラウザなどで、写真がぱらぱらとめくれるようなエフェクトがあるページに入ると、かなり厳しいので、実用になる処理はある程度制限されると考えた方がいいだろう。
debian では、SMTPサーバとしては、他のディストリビューションで多く用いられている postfixではなく exim4が使われている。
ドメインのSMTPサーバは別途運用しているので、exim4は単に、メールをこのSMTPサーバへ投げ込むために使用する。
dpkg-reconfigure で設定を起動する。
# dpkg-reconfigure exim4-config
→スマートホストでメール送信; ローカルメールなし
→自分のドメイン名
→127.0.0.1 ; ::18)
→変更する必要なし。
→自分のドメイン名
→自ドメインまたはプロバイダのSMTPサーバ
→ <いいえ>
→ <いいえ>
→ 転送先アドレス
以前は mt-daapdというパッケージ名だったが、今は、debian では forked-daapd という名前になっているので、それをインストールする。 これは、FireFlyのプロジェクトから分岐したプロジェクトの成果物のようであるが、基本的には同じなので、問題はない。
以前は別のapt sourceから導入する必要があったが、今は、debianのパッケージとして存在しているので、それをインストールする。
設定ファイルは、/etc/defaults/mediatomb と /etc/mediatomb/config.xml とに分かれている。
/etc/defaults/mediatomb には起動時に関するパラメータがあり、MT_INTERFACE=“lo” となっているのを “eth0” に変更する。
詳細な設定は、config.xmlの方にあるが、デフォルトではsqlite3で管理するキャッシュ情報を、MySQLに置き換えてみる。
# mysql -p Enter Password: ... mysql> create database medatomb; Query OK, 1 row affected (0.01 sec) mysql> grant all privileges on mediatomb.* to mediatomb@'localhost' identified by 'パスワード'; Query OK, 0 rows afffected (0.13 sec) mysql> flush privileges; Query OK, 0 rows affected (0.01 sec) mysql> exit Bye #
データベース側の用意はこれでOK。 次に、config.xml を編集する。
<storage caching="yes"> <sqlite3 enabled="no"> ← "no"に変更 <database-file>mediatomb.db</database-file> </sqlite3> <mysql enabled="yes"> ← "yes"に変更 <host>localhost</host> <username>mediatomb</username> <password>パスワード</password> ←この行を追加しパスワードを設定 <database>mediatomb</database> </mysql> </storage>
MySQLはデフォルトでは導入されないので、追加導入する必要がある。
# apt-get install mysql-server mysql-client
これだけでOk。 root のパスワードを聞かれるので、設定しておく。
パッケージ logwatch をインストールする。
設定ファイルが存在していないので、サンプルのものをコピーする。 また、キャッシュ用のディレクトリがないのでこれも作っておく。
# copy /usr/share/logwatch/default.conf/logwatch.conf /etc/logwatch/conf/ # mkdir /var/cache/logwatch
基本的にそのままでも構わないが、レポートをメールで受け取るならば次のようにしておく。 9)
Output = mail Format = html Encode = base64 MailTo = メールアドレス
/etc/cron.daily/00logwatch としてdailyでの実行が指定されているので、必要に応じてこれを変更する。 10)
インストール中に、こんなエラーが発生して処理を完了できなくなった。
... dpkg: パッケージ raspberrypi-ui-mods の処理中にエラーが発生しました (--configure): サブプロセス インストール済みの post-installation スクリプト はエラー終了ステータス1を返しました 処理中にエラーが発生しました: raspberrypi-ui-mods #
とりあえず、dpkgコマンドに聞いてみる。
# dpkg --audit 以下のパッケージは最初の設定中に問題が発生したため、設定が終了していません。 dpkg --configure <パッケージ> か dselect で設定 (configure) メニューオプショ ンを使って設定作業を再試行しなければなりません: raspberrypi-ui-mods COnfig to customise the LXDE UI for the Raspberry Pi
#
なので、-configure してみる。
# dpkg --configure raspberrypi-ui-mods raspberrypi-ui-mods (1.20151021) を設定しています ... Backing up old config files... chown: グループ指定が不正: `pi:pi' dpkg: パッケージ raspberrypi-ui-mods の処理中にエラーが発生しました (--configure): サブプロセス インストール済みの post-installation スクリプト はエラー終了ステータス1を返しました 処理中にエラーが発生しました: raspberrypi-ui-mods #
と、同じオチに。 どうやら、dpkgの管理情報を削除してやってから再実行すればよい様子。
# ls /var/lib/dpkg/info/raspberry-pi-ui-mods.* /var/lib/dpkg/info/raspberry-pi-ui-mods.conffiles /var/lib/dpkg/info/raspberry-pi-ui-mods.list /var/lib/dpkg/info/raspberry-pi-ui-mods.md5sums /var/lib/dpkg/info/raspberry-pi-ui-mods.postinst /var/lib/dpkg/info/raspberry-pi-ui-mods.postrm /var/lib/dpkg/info/raspberry-pi-ui-mods.prerm # rm -f /var/lib/dpkg/info/raspberry-pi-ui-mods.* # dpkg --configure raspberry-pi-ui-mods #
これは、単純に失敗する postinst のスクリプトを消しているだけなので、実は問題を解決できていない可能性は高いが、面倒な場合にはこれでいいだろう。
※追記
やっぱりダメで、「管理ファイルが色々ないんだけれど」といわれるので、apt-get –reinstall で、強制再インストールした。 もちろん、同じエラーで落ちる。 原因は少し真面目に考えれば自明で、gid = 1000のグループを我が家では 'pi'ではなく、違う名前で使っているので、それに変えたため、
chown -R pi:pi ...
のようなオペレーションがみんなエラーになってしまうからダメなのだ。
# vi /var/lib/dpkg/info/raspberry-pi-ui-mods.post
で、問題の、'pi:pi'を 'pi:family'に置換してから、
# dpkg --configure raspberrypi-ui-mods
で問題なく終了した。