こんにちは、インフラエンジニアの落合です。
この記事は、TECHSCORE Advent Calendar の最後の記事です。
最後の記事ですが、
年末年始にご家族に喜ばれるサーバってなにかないかなーと考えました。
ITリテラシーの激低な、私の妻にも、インフラエンジニアってスゲーっと言われそうなものユルーイもの・・・
・・・・
ってことで、Raspberry Piで、PCで撮りためた動画などをご家庭のTV(DLNA対応機種)で観れるようにしたいと思います!
DLNAサーバの構築箇所だけ記事にしようと考えてましたが、あまりにも簡単すぎるので、最初からささっとやってみようと思います。
記事を書こうとして気づいたのですが、結構みなさんされていて、似たような文献もあちこちあるんですね。^^;
そういうわけで、敢えて本記事を参考にしたいという方は以下の方が対象かとおもいます。
- 全部CUI環境でやってしまいたい。(Raspberry PiでXを使わない)
- 作業は全部Linuxでやるんだ!
それでは・・
Raspberry Pi b+ のインストールまで
○作業に必要なもの
- ちゃんと動く、Raspberry Pi
- Amazonなどで、買い揃えたら1万円ちょっとで手のひらサイズサーバが手に入るかと思います。
- 私が購入したのは Raspberry Pi b+ です。
- Raspberry Pi をセットアップするための作業用Linux
- お手持ちのGentoo Linux なんかで良いと思います。
- DHCPでIPが自動付与されるネットワークセグメント
ちなみにこんな感じの作業環境でした。左の小さい透明の箱が Raspberry Pi b+ です。
○OSのインストール作業
Raspbianをここではインストールします。(いわゆるRaspberry Pi用Debian)
・作業用LinuxにMini SDHCカードを接続します。
1 2 3 4 5 6 7 8 9 10 11 12 |
# dmesg ----- [18901.217962] sd 8:0:0:0: [sdb] Attached SCSI removable disk ----- # fdisk -l ----- Disk /dev/sdb: 29.7 GiB, 31914983424 bytes, 62333952 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes ----- |
上記から、わかることは、
- /dev/sdb としてSDHCカードが認識されている。
- 容量はおよそ32GbyteなSDHCカードである。
そんなところです。
・ダウンロードしたOSイメージを、上記のSDHCカードに書き込みます。
1 2 3 4 5 |
$ wget -O 2014-09-09-wheezy-raspbian.zip http://downloads.raspberrypi.org/raspbian_latest $ sha1sum 2014-09-09-wheezy-raspbian.zip ----- 951a9092dd160ea06195963d1afb47220588ed84 2014-09-09-wheezy-raspbian.zip ----- |
ダウンロード後チェックサムを確認しています。このチェックサムが正しいかどうかは、公式のチェックサム値と比べてください。
・OSイメージををダウンロードして、上記のSDHCカードに書き込みます。
1 2 |
$ unzip 2014-09-09-wheezy-raspbian.zip $ sudo dd bs=1M if=2014-09-09-wheezy-raspbian.img of=/dev/sdb |
"of=" で指定しているデバイスは、最初に dmesgして検出したものを間違いないように指定してくださいね。
Raspbianへのリモート接続まで
ここからがちょっとコツがいります。
(なんせこのRaspbery Piには、ディスプレイもキーボードもつながってないわけですから)
- 上記で作成したOSイメージ入りのSDHCカードをRaspberry Piにセットします。
- DHCPがとれるネットワークセグメントにRaspberry PiをLANケーブルで繋げます。
- 電源を入れます。
- (祈ります)
- 緑のSDHCアクセスランプが、チカチカ光って、動いてるような気配を感じます。
- fping などで、Raspberry Piの所在地を確認します。
(例:DHCPのレンジが、192.168.0.0/24の場合)
1 2 3 4 5 |
$ fping -aq -g 192.168.0.0/24 ----- 192.168.0.1 192.168.0.3 ← 新しい接続機器を発見!(これがRaspberry Piだろうと簡単に推測できる) ----- |
・リモート接続(SSH接続)
作業用Linuxから、
1 2 |
$ ssh pi@192.168.0.3 ←上記で見つかったIP $ pi@192.168.0.3's password: raspberry ←初期パスワードです。 |
Raspbianの初期設定まで
以下のことを駆け足で実施してしまいましょう。
1.パッケージを最新に更新
1 2 3 |
$ sudo su - ← これで、piユーザはrootになれるようになってます。 # apt-get update # apt-get upgrade |
2.作業を助けるアプリケーションのインストール(任意)
1 2 3 |
# apt-get install chkconfig vim mlocate # cp -p /etc/vim/vimrc /etc/vim/vimrc.ORG # sed -i 's/"syntax on/syntax on/' /etc/vim/vimrc |
これで、vimが見やすくなり、サービス起動On/Offがやりやすくなりました。
Debianだと、今どきは、insservを利用しますが、個人的には、chkconfigをインストールして使ったほうがDebianは使いやすいです。
(ちゃんとinsservのラッパーとして機能してくれます。)
3.SDHCカードの認識Disk領域の拡張
ddでイメージを書き込んでいるので、非常に小さいサイズしかOSが認識していないので必須です。
1 2 3 4 5 |
# raspi-config 「 1 Expand Filesystem 」を選択 リサイズが終わったら一度再起動 $ df -h 最大領域まで認識していればOK |
4.SWAP領域の拡張
1 2 3 4 5 6 7 8 9 10 |
# vi /etc/dphys-swapfile MB 単位でスワップ・サイズを指定します (例:1GBに変更) ----- CONF_SWAPSIZE=1024 ----- # /etc/init.d/dphys-swapfile stop # /etc/init.d/dphys-swapfile start # free -m 変更されていればOK |
5.日本語環境の整備
1 2 3 4 5 6 7 8 9 10 11 12 |
# dpkg-reconfigure locales ----- 「ja_JP.UTF-8 UTF-8」を選択 ----- Shellのログインし直し、echo $LANG などで確認 # dpkg-reconfigure tzdata ----- 地域にアジア、都市に東京を選択 ----- $ date 日本時間になっていればOK |
6.無駄なサービスの停止
1 2 3 4 5 6 7 8 |
# chkconfig --list # chkconfig rsync off # chkconfig x11-common off # chkconfig lightdm off # service rsync stop # service lightdm stop # service x11-common stop |
Xなんて使わないので私は上記などを停止しました。
DLNAサーバ構築
さて、いよいよ本題です。そして、あまりやることがありません^^;
○MiniDLNAサーバインストール
おもむろに、どんなDLNAサーバアプリがあるか検索してみました。
1 2 3 4 |
# apt-cache search dlna ----- minidlna - lightweight DLNA/UPnP-AV server targeted at embedded systems ----- |
えぇ!? これだけしか見つかりませんでした・・・Debianなのにちょっとがっくりですね。
Raspberry Pi用のリポジトリなので仕方ないですが。
・仕方ないのでこれをインストールしてみます。
1 |
# apt-get install minidlna |
・helpとかmanとかみてみます。
1 2 |
$ minidlna -h $ man minidlna |
manでも書かれてることほぼ一緒ですね。簡単そうです。
・稼働状態を確認します。
1 2 3 4 5 6 7 8 |
# chkconfig --list minidlna ----- minidlna 0:off 1:off 2:on 3:on 4:on 5:on 6:off ----- # service minidlna status ----- [ ok ] minidlna is running. ----- |
インストールすると、自動起動はONで、サービスもすでに稼働してますね。
このへんはDebianの思想ですよね。(アプリを入れるということは、動かすということ。)
○MiniDLNAサーバ設定
・ちょっとログを確認してみましょうか。
1 2 3 4 |
# cat /var/log/minidlna.log ----- [2014/12/24 01:56:35] inotify.c:195: warn: WARNING: Inotify max_user_watches [8192] is low or close to the number of used watches [2] and I do not have permission to increase this limit. Please do so manually by writing a higher value into /proc/sys/fs/inotify/max_user_watches. ----- |
おや?こんなWarningが。 では、カーネルパラメタ変更しましょう。
(例:8192を10倍にする)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
# sysctl fs.inotify.max_user_watches 変更前確認 ----- fs.inotify.max_user_watches = 8192 ----- # echo "fs.inotify.max_user_watches = 81920" > /etc/sysctl.d/minidlna.conf # sysctl -p /etc/sysctl.d/mnidlna.conf ---------- fs.inotify.max_user_watches = 81920 ---------- 変更後確認 # sysctl fs.inotify.max_user_watches ----- fs.inotify.max_user_watches = 81920 ----- |
これで、先ほどのログのWarningはなくなったはずです。
・さて、設定です。
(例:メディアの保存場所を/DATA/dlnaに変更)
1 2 3 4 5 6 7 8 |
# cp -p /etc/minidlna.conf /etc/minidlna.conf.ORG # vim /etc/minidlna.conf ---------- #media_dir=/var/lib/minidlna ↓ media_dir=/DATA/dlna ---------- # service minidlna restart |
これだけです、私は他に何もいじっていません。
ほとんどの場合は、デフォルトで十分だとおもいますが、お好みで以下のところを触ってみてもいいかもしれません。
- notify_interval:メディア認識間隔の変更(デフォルト895秒間隔)
あとはhelpやmanなので確認して適宜変更してください。簡単です。
○MiniDLNAサービスを確認しよう!
1 2 |
# netstat -ltapn | grep 8200 tcp 0 0 0.0.0.0:8200 0.0.0.0:* LISTEN 3041/minidlna |
ポート8200番で何やら動いてますね。
ブラウザで確認してみます。
1 2 3 4 5 6 7 8 |
http://192.168.0.3:8200 ←別のローカルネット上のマシンのブラウザからアクセスしてみる ---------- MiniDLNA status Audio files: 0 Video files: 0 Image files: 0 --------- |
ほうほう、認識可能なメディアファイルを然るべきに場所におくと、この数値が変化します。
つまりMiniDLNAサーバがメディアを認識しているということです。
MiniDLNAを使ってみる!
/DATA/dlna/配下 に mp4な動画ファイルをおいてみました。
そしてブラウザでアクセス中の画面をリロードすると、
1 2 3 4 5 6 7 |
---------- MiniDLNA status Audio files: 0 Video files: 1 ← 数が増えた! Image files: 0 --------- |
一つ認識したようです。
※反映されないようであれば、 # minidlna -R してみてください。
さて、我が家の同じネットワーク上にいるAQUOS(LC-60G7)だとこんな感じでメニューから認識して動画をみることができました。
(Raspberry Pi を認識してますね。)
使ってみてわかるのですが、非常にスムーズに動画が動きます。最近のARM機ってすごいね。
そして、こういうわかりやすいサーバは妻にもウケがよいようです。
もう一台買ってくれそうな手応えがあります。
まとめ
- 常時稼働していても、、
- 極めて省エネであること。
- 音がしないこと。
- ITリテラシーが低くても、、
- 初心者に直接恩恵があるもの
が、私の妻に認められる唯一のサーバであると。
みなさまもご家族とよいサーバライフを!