その他の雑記です。
Raspberry PiをMPD(Music Player Daemon)サーバにする
再生音がたまに途切れたり、SDカードの寿命を縮める恐れがありますので、このログ出力を抑止するために、上に書いたとおり alsa-base.conf におまじないを記述します。 options snd-usb-audio nrpacks=1 と書いて再起動すると、無駄なログ出力が停止し、CPU負荷が下がります。また、この対策により、再生中にときどきプツッと音飛び/音切れが発生していた問題が解消されました。
NASの負荷が大きいとか、ネットワークが劣悪ということがなければ、音切れが起きることは少ないと思いますが、念のため追記しておきました。
root@Raspyfi:/etc# cd /etc/modprobe.d
root@Raspyfi:/etc/modprobe.d# ls
alsa-base-blacklist.conf alsa-base.conf fbdev-blacklist.conf local.conf
root@Raspyfi:/etc/modprobe.d# vi alsa-base.conf
(略)
root@Raspyfi:/etc/modprobe.d# cat alsa-base.conf
# autoloader aliases
install sound-slot-0 /sbin/modprobe snd-card-0
install sound-slot-1 /sbin/modprobe snd-card-1
install sound-slot-2 /sbin/modprobe snd-card-2
install sound-slot-3 /sbin/modprobe snd-card-3
install sound-slot-4 /sbin/modprobe snd-card-4
install sound-slot-5 /sbin/modprobe snd-card-5
install sound-slot-6 /sbin/modprobe snd-card-6
install sound-slot-7 /sbin/modprobe snd-card-7
# Cause optional modules to be loaded above generic modules
install snd /sbin/modprobe --ignore-install snd && { /sbin/modprobe --quiet snd-ioctl32 ; /sbin/modprobe --quiet snd-seq ; : ; }
install snd-rawmidi /sbin/modprobe --ignore-install snd-rawmidi && { /sbin/modprobe --quiet snd-seq-midi ; : ; }
install snd-emu10k1 /sbin/modprobe --ignore-install snd-emu10k1 && { /sbin/modprobe --quiet snd-emu10k1-synth ; : ; }
# Keep snd-pcsp from beeing loaded as first soundcard
options snd-pcsp index=-2
# Keep snd-usb-audio from beeing loaded as first soundcard
#options snd-usb-audio index=-2
# Prevent abnormal drivers from grabbing index 0
options bt87x index=-2
options cx88_alsa index=-2
options snd-atiixp-modem index=-2
options snd-intel8x0m index=-2
options snd-via82xx-modem index=-2
options snd-usb-audio nrpacks=1
root@Raspyfi:/etc/modprobe.d#
このおまじないでも、NAS遅延による音切れは防げません。
Sambaの代わりにNFSでマウント出来ないか?ということですが、ターミナルからの作業が必要ですが可能です(参考サイト3)。
NFSサーバ側のエクスポート設定が終わっているものと仮定します。
root@Raspyfi:~# service rpcbind start
[ ok ] Starting rpcbind daemon....
root@Raspyfi:~# rpcinfo -p
program vers proto port service
100000 4 tcp 111 portmapper
100000 3 tcp 111 portmapper
100000 2 tcp 111 portmapper
100000 4 udp 111 portmapper
100000 3 udp 111 portmapper
100000 2 udp 111 portmapper
root@Raspyfi:~# mkdir /mnt/NFS
root@Raspyfi:~# mount -t nfs 192.168.1.64:/pool04/music /mnt/NFS
root@Raspyfi:~# df -h
Filesystem Size Used Avail Use% Mounted on
rootfs 1.5G 671M 751M 48% /
/dev/root 1.5G 671M 751M 48% /
devtmpfs 108M 0 108M 0% /dev
tmpfs 24M 504K 23M 3% /run
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 256M 0 256M 0% /run/shm
/dev/mmcblk0p1 75M 19M 56M 26% /boot
Ramdisk 256M 0 256M 0% /run/shm
//192.168.1.201/share2/iTunes 1.9T 788G 1.1T 43% /mnt/NAS/NASNE2
/dev/sda1 30G 2.2G 28G 8% /mnt/USB/usb1
192.168.1.64:/pool04/music 1.2T 500G 696G 42% /mnt/NFS
root@Raspyfi:~# ln -s /mnt/NFS /var/lib/mpd/music/NFS
root@Raspyfi:~# ls -l /var/lib/mpd/music
total 4
lrwxrwxrwx 1 root root 9 Jul 14 05:27 NAS -> /mnt/NAS/
lrwxrwxrwx 1 root root 8 Oct 16 19:12 NFS -> /mnt/NFS
lrwxrwxrwx 1 root root 9 May 21 01:41 ramplay -> /run/shm/
lrwxrwxrwx 1 pi pi 8 Jul 30 11:05 USB -> /mnt/USB
drwxrwxrwx 2 pi pi 4096 Sep 7 21:02 WEBRADIO
root@Raspyfi:~#
/var/lib/mpd/music というのが mpdが認識する楽曲ファイルの置き場です。 「Browse」で出てくる最初のリストですね。
「UPDATE MPD DATABASE」をクリックしてしばらくすると、「NFS」という項目が出てくるはずです。
あとは rpcbindが自動起動するようにして、/etc/fstabにNFSを追加すればOK、のはずなんですが上手くいっていません。
On the current version of Raspbian, rpcbind (part of the portmap package) does not start by default. This is presumably done to control memory consumption on our small systems. However, it isn't very big and we need it to make an NFS mount. To enable it manually, so we can mount our directory immediately:
sudo service rpcbind start
To make rpcbind start automatically at boot:
sudo update-rc.d rpcbind enable
update-rc.d コマンドだと「update-rc.d: using dependency based boot sequencing」とか言われてしまいます。
Debian/GNU Linux 6.0からはサービスの自動起動は insservコマンドを使うようなので、
root@Raspyfi:~# insserv rpcbind
insserv: warning: script 'K02shairport' missing LSB tags and overrides
insserv: warning: script 'shairport' missing LSB tags and overrides
root@Raspyfi:~# find /etc/ -name "*rpcbind"
/etc/rc5.d/S13rpcbind
/etc/rc2.d/S13rpcbind
/etc/rc6.d/K07rpcbind
/etc/rcS.d/S13rpcbind
/etc/rc4.d/S13rpcbind
/etc/rc3.d/S13rpcbind
/etc/insserv.conf.d/rpcbind
/etc/init.d/rpcbind
/etc/rc1.d/K07rpcbind
/etc/rc0.d/K07rpcbind
とやってみるのですが、リブートさせても
root@Raspyfi:~# rpcinfo -p
rpcinfo: can't contact portmapper: RPC: Remote system error - Connection refused
自動起動してくれてません。 ただ Sambaに対してNFSの方がメリットがあるかというと特にないので、そのまま放置しています。
NTP(Network Time Protocol)に、日本のサーバーを追加します。 /etc/ntp.conf の編集が終わったら、ntpdを再起動します。
root@Raspyfi:~# vi /etc/ntp.conf
(略)
root@Raspyfi:~# cat /etc/ntp.conf
# /etc/ntp.conf, configuration for ntpd; see ntp.conf(5) for help
driftfile /var/lib/ntp/ntp.drift
(中略)
# pool.ntp.org maps to about 1000 low-stratum NTP servers. Your server will
# pick a different set every time it starts up. Please consider joining the
# pool: <http://www.pool.ntp.org/join.html>
#server 0.debian.pool.ntp.org iburst
#server 1.debian.pool.ntp.org iburst
#server 2.debian.pool.ntp.org iburst
#server 3.debian.pool.ntp.org iburst
server ntp.nict.jp iburst
server ntp.jst.mfeed.ad.jp iburst
(以下、略)
root@Raspyfi:~# /etc/init.d/ntp restart
[ ok ] Stopping NTP server: ntpd.
[ ok ] Starting NTP server: ntpd.
root@Raspyfi:~# ntpq -p
remote refid st t when poll reach delay offset jitter
==============================================================================
ntp-b3.nict.go. .NICT. 1 u 1 64 1 7.323 3614756 0.448
ntp3.jst.mfeed. 172.29.3.60 2 u 2 64 1 8.567 3614756 0.001
あとは「dpkg-reconfigure tzdata」 コマンドでタイムゾーンを設定したりしたくらいです。