目次

Raspberry Pi2について

概要

Raspberry PI2は、900MHz駆動のCortex A7を4つ、1GBのRAMをそれぞれ搭載した、ワンボードマイコンである。Model B+は、RJ45(10/100/1000base T)、4ポートのUSB2、microSD、HDMI、カメラポート、GPIOなどの各種IOを持ち、標準的なコンピュータシステムとして利用可能なパッケージとなっている。

本家

ichigojam_dsc_0349.jpg 写真左がRaspberry Pi2 Model B+

システム(OS)の導入

OSイメージは、Raspberry Piのサイトからダウンロードして導入する。 導入用のキットとしては、NOOBSが標準的に用いられている。

NOOBS

OSをインストールするためのキットという位置づけのもの。Raspberry Pi2には1.4以降のバージョンで対応している。

ZIPファイルを本家、またはミラーサイトからダウンロードして、FAT32でフォーマットした microSDカードに展開するだけで導入完了である。特定のイメージライターなどを必要とはしない。

NOOBSは Raspbianを含んだ形で配布されているが NOOBS_Liteは Raspbianを除外した軽量なダウンロードイメージとして配布されている。Raspbianを導入するつもりなら、NOOBSのフルセットをダウンロードしておくのがいいだろう。

なお、インストールに当たっては、HDMI接続の可能なモニタ、USBキーボード及び、USBマウスが必要になる。マウスがなくても、TABなどのキー操作でどうにでもなるだろうと思ったら、実はどうにもならなかった。 NOOBSからインストーラーをキックするまでは少なくともマウスが必要。 あらかじめ用意しておかないと、ワタシのように、NOOBSの画面が出てから家の中を右往左往することになるので注意。

Raspbian

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を起動してもフォントが不足しているためあちこち表示がおかしい。

  1. 日本語フォントの導入
  2. 日本語かな漢字変換の導入

フォントについては、およそ、日本語だなと思うパッケージを端から導入しておく。 かな漢字変換は uim-anthy6)を入れる。 関連するパッケージで、uim-fepuim-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では参照先としては廃止されているので、単純にファイルを削除すればよい。

Windows10

マイクロソフトが突如、無償配布を決定した Raspberry Pi向けのWindows10。 もちろんこれはフルスペックのWindows10が動作するという意味ではない。 IoT向けのディストリビューションということのようである。

とりあえず、まだ試していない。

リモートアクセス

SSH

sshdは既にインストールされているので最低限の修正をしておく。

PermitRootLogin no
PasswordAuthentication no

この二つは、必ず no にする。 後者は、パスワードによる認証を禁止する-暗号鍵を使う方法のみ許可する-なので、これに先だって、~/.ssh/authorized_keys2 にアクセス元の公開鍵を設定しておく必要がある。 これを忘れると、コンソールからしかログイン出来なくなるので注意が必要。

XRDP

LXDEをリモートから利用するに当たって、是非利用したいモジュールである。 デフォルトではインストールされていないので、aptでインストールする。

apt-get install xrdp

必要なのはこれだけである。 初回は手で起動する必要があるだろう。

# /etc/init.d/xrdp start

xrdpは、VNCにRDPのかわをかぶせたような実装になっているので、アクセスに当たって、WindowsのRDPクライアントを利用出来るのが利点の一つだろう。

接続すると、ログインダイアログが出てくるので、ユーザ名とパスワードを入れる。

セキュアなアクセスを望むのであれば、VPNまたはsshトンネルを使ってセッションを張るなどの対応は必要になる。

実際に外から家のPiにつないだ感じは、十分実用になるレベルである。 ただし、ブラウザなどで、写真がぱらぱらとめくれるようなエフェクトがあるページに入ると、かなり厳しいので、実用になる処理はある程度制限されると考えた方がいいだろう。

各種サービス

SAMBA

メール

debian では、SMTPサーバとしては、他のディストリビューションで多く用いられている postfixではなく exim4が使われている。

ドメインのSMTPサーバは別途運用しているので、exim4は単に、メールをこのSMTPサーバへ投げ込むために使用する。

設定

dpkg-reconfigure で設定を起動する。

# dpkg-reconfigure exim4-config

→スマートホストでメール送信; ローカルメールなし

→自分のドメイン名

→127.0.0.1 ; ::18)

→変更する必要なし。

→自分のドメイン名

→自ドメインまたはプロバイダのSMTPサーバ

→ <いいえ>

→ <いいえ>

→ 転送先アドレス

FireFly

導入

以前は mt-daapdというパッケージ名だったが、今は、debian では forked-daapd という名前になっているので、それをインストールする。 これは、FireFlyのプロジェクトから分岐したプロジェクトの成果物のようであるが、基本的には同じなので、問題はない。

mediatomb

導入

以前は別の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

導入

MySQLはデフォルトでは導入されないので、追加導入する必要がある。

# apt-get install mysql-server mysql-client

これだけでOk。 root のパスワードを聞かれるので、設定しておく。

LogWatch

導入

パッケージ logwatch をインストールする。

設定

設定ファイルが存在していないので、サンプルのものをコピーする。 また、キャッシュ用のディレクトリがないのでこれも作っておく。

# copy /usr/share/logwatch/default.conf/logwatch.conf /etc/logwatch/conf/
# mkdir /var/cache/logwatch

基本的にそのままでも構わないが、レポートをメールで受け取るならば次のようにしておく。 9)

Output = mail
Format = html
Encode = base64
MailTo = メールアドレス

cronの設定

/etc/cron.daily/00logwatch としてdailyでの実行が指定されているので、必要に応じてこれを変更する。 10)

メモ

apt-get でエラーが発生する件

インストール中に、こんなエラーが発生して処理を完了できなくなった。

...
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

で問題なく終了した。

1)
システムの初期設定用のNcursesベースのツール
2)
インストールが全て終わったあと、LXDEが使えるようになってから、raspi-configを起動して、ロケールを切り替えればいい。
3)
幸いUID=1000はいなかったので、piを再利用する必要は無かった。
4)
raspberrypi-ui-modsなど、一部のパッケージのpostinstall作業で、chown pi:pi などの処理が仕込まれており、これと衝突するので、やはりなるべく変えないで済むならその方がよいようだ。
5)
diffしてみた
6)
つまりは anthy
7)
/etc/apt/souces.list.d/raspi.list が肝心
8)
デフォルトから特にいじる必要なし。
9)
HTMLメールなど認めない、という向きは、Format = text / Encode = none でいいだろう。
10)
特に変える必要は無いと思われる。