スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Raspberry Pi をジュークボックスに(その4)

ジュークボックス専用機の場合、SDメモリカードへの書き込み回数が気になる所なので、書き込みを行う動作を極力減らしたい。そこで、書き込みを行う動作を削り、動作中は必要でも電源を落とした後はなくても良い物はRAMに配置する事でSDメモリカードへの書き込みの頻度を下げるようにする。

SDメモリカードへ不要(?)に書き込みを行っている物で変更しても比較的安全な部分としてswapファイルの作成をやめる事が上げられる。デフォルトでは自動的にswapファイルを作成する様になっているので、それを止めるのだ。

$ sudo chkconfig dphys-swapfile --list
dphys-swapfile 0:off 1:off 2:on 3:on 4:on 5:on 6:off
$ sudo chkconfig dphys-swapfile off
$ sudo chkconfig dphys-swapfile --list
dphys-swapfile 0:off 1:off 2:off 3:off 4:off 5:off 6:off

ログファイルも必要最低限にしておきます。これはrsyslogの設定ファイル(rsyslog.conf)を修正する事で実現させます。

$ sudo vi /etc/rsyslog.conf
$ diff -U3 /etc/rsyslog.conf.org /etc/rsyslog.conf
--- /etc/rsyslog.conf.org 2013-07-28 11:09:07.662226004 +0900
+++ /etc/rsyslog.conf 2013-06-14 20:57:00.530257328 +0900
@@ -60,34 +60,34 @@
#
auth,authpriv.* /var/log/auth.log
*.*;auth,authpriv.none -/var/log/syslog
-#cron.* /var/log/cron.log
-daemon.* -/var/log/daemon.log
-kern.* -/var/log/kern.log
-lpr.* -/var/log/lpr.log
-mail.* -/var/log/mail.log
-user.* -/var/log/user.log
+# cron.* /var/log/cron.log
+# daemon.* -/var/log/daemon.log
+# kern.* -/var/log/kern.log
+# lpr.* -/var/log/lpr.log
+# mail.* -/var/log/mail.log
+# user.* -/var/log/user.log

#
# Logging for the mail system. Split it up so that
# it is easy to write scripts to parse these files.
#
-mail.info -/var/log/mail.info
-mail.warn -/var/log/mail.warn
-mail.err /var/log/mail.err
+# mail.info -/var/log/mail.info
+# mail.warn -/var/log/mail.warn
+# mail.err /var/log/mail.err

#
# Logging for INN news system.
#
-news.crit /var/log/news/news.crit
-news.err /var/log/news/news.err
-news.notice -/var/log/news/news.notice
+# news.crit /var/log/news/news.crit
+# news.err /var/log/news/news.err
+# news.notice -/var/log/news/news.notice

#
# Some "catch-all" log files.
#
-*.=debug;\
- auth,authpriv.none;\
- news.none;mail.none -/var/log/debug
+# *.=debug;\
+# auth,authpriv.none;\
+# news.none;mail.none -/var/log/debug
*.=info;*.=notice;*.=warn;\
auth,authpriv.none;\
cron,daemon.none;\

一時保存系のファイルをRAM上に配置するために、RAM上にディレクトリを作成して、マウントさせます。少々やることが多いですが、順を追って1つずつ確実に設定していけば何とかなります。

/tmpディレクトリと/var/tmpディレクトリがまさにその領域に当たるので、OSの起動時にRAMディスク上にマウントするように変更します。また、ログファイルもRAM上に配置します。ログファイルについては賛否両論ありそうですが、電源OFFしたら消えるという方向で割り切ろうと思います。

実は、ログファイルに関しては少々厄介な所があって、基本的にRAM上に配置する様に出来ていないので、ディレクトリ または ファイルが既に存在する事が前提になっているソフトがあります。なので、現状がどのようになっているか確認しておきます。

$ ls -l /var/log/
total 885808
-rw-r--r-- 1 root root 29694 Jun 8 10:43 alternatives.log
drwxr-xr-x 2 root root 4096 May 26 01:37 apt
-rw-r----- 1 root adm 34998 Jun 14 20:57 auth.log
-rw-r----- 1 root adm 46265 Jun 10 06:25 auth.log.1
-rw-r--r-- 1 root root 282393 May 26 01:34 bootstrap.log
-rw-rw---- 1 root utmp 0 May 26 01:26 btmp
drwxr-xr-x 2 root root 4096 May 26 02:57 ConsoleKit
-rw-r----- 1 root adm 12676 Jun 14 20:26 daemon.log
-rw-r----- 1 root adm 52242 Jun 9 22:26 daemon.log.1
-rw-r----- 1 root adm 185592298 Jun 14 20:36 debug
-rw-r----- 1 root adm 185229511 Jun 9 18:56 debug.1
-rw-r----- 1 root adm 12669 Jun 14 20:26 dmesg
-rw-r----- 1 root adm 12669 Jun 14 20:17 dmesg.0
-rw-r----- 1 root adm 5008 Jun 13 23:01 dmesg.1.gz
-rw-r----- 1 root adm 4958 Jun 13 22:52 dmesg.2.gz
-rw-r----- 1 root adm 4950 Jun 13 22:48 dmesg.3.gz
-rw-r----- 1 root adm 4963 Jun 13 22:43 dmesg.4.gz
-rw-r--r-- 1 root root 444355 Jun 13 22:14 dpkg.log
-rw-r--r-- 1 root root 24048 Jun 8 08:56 faillog
-rw-r--r-- 1 root root 1654 May 26 02:13 fontconfig.log
drwxr-xr-x 2 root root 4096 May 26 01:30 fsck
-rw-r----- 1 root adm 185719573 Jun 14 20:36 kern.log
-rw-r----- 1 root adm 185552802 Jun 9 18:56 kern.log.1
-rw-rw-r-- 1 root utmp 292584 Jun 14 20:41 lastlog
-rw-r----- 1 root adm 0 May 26 02:57 lpr.log
-rw-r----- 1 root adm 0 May 26 02:57 mail.err
-rw-r----- 1 root adm 0 May 26 02:57 mail.info
-rw-r----- 1 root adm 0 May 26 02:57 mail.log
-rw-r----- 1 root adm 0 May 26 02:57 mail.warn
-rw-r----- 1 root adm 129421 Jun 14 20:26 messages
-rw-r----- 1 root adm 327024 Jun 10 06:25 messages.1
drwxr-xr-x 2 mpd audio 4096 Jun 8 08:56 mpd
drwxr-xr-x 2 root root 4096 May 26 02:57 news
drwxr-xr-x 2 ntp ntp 4096 May 19 2012 ntpstats
-rw-r--r-- 1 root root 158 Jun 7 21:35 regen_ssh_keys.log
drwxr-x--- 3 root adm 4096 Jun 8 10:51 samba
-rw-r----- 1 root adm 519018 Jun 14 20:36 syslog
-rw-r----- 1 root adm 146037926 Jun 14 06:25 syslog.1
-rw-r----- 1 root adm 753256 Jun 13 06:25 syslog.2.gz
-rw-r----- 1 root adm 2106097 Jun 12 06:25 syslog.3.gz
-rw-r----- 1 root adm 581 Jun 11 06:26 syslog.4.gz
-rw-r----- 1 root adm 13635896 Jun 10 06:25 syslog.5.gz
-rw-r----- 1 root adm 497 Jun 14 20:26 user.log
-rw-r----- 1 root adm 1268 Jun 9 11:07 user.log.1
-rw-rw-r-- 1 root utmp 336000 Jun 14 20:41 wtmp

ディレクトリになっているのは以下の項目 & 所有者、グループ

drwxr-xr-x 2 root root       4096 May 26 01:37 apt
drwxr-xr-x 2 root root 4096 May 26 02:57 ConsoleKit
drwxr-xr-x 2 root root 4096 May 26 01:30 fsck
drwxr-xr-x 2 mpd audio 4096 Jun 8 08:56 mpd
drwxr-xr-x 2 root root 4096 May 26 02:57 news
drwxr-xr-x 2 ntp ntp 4096 May 19 2012 ntpstats
drwxr-x--- 3 root adm 4096 Jun 8 10:51 samba

また、以下の3つは空ファイルでもよいので作っておく必要があるらしい。

-rw-rw---- 1 root utmp          0 May 26 01:26 btmp
-rw-rw-r-- 1 root utmp 292584 Jun 14 20:41 lastlog
-rw-rw-r-- 1 root utmp 336000 Jun 14 20:41 wtmp

さて、下準備にかかります。
RAMにそれぞれのディレクトリをマウントできる様にします。

$ df -h
Filesystem Size Used Avail Use% Mounted on
rootfs 3.7G 2.4G 1.2G 68% /
/dev/root 3.7G 2.4G 1.2G 68% /
devtmpfs 212M 0 212M 0% /dev
tmpfs 44M 384K 44M 1% /run
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 88M 0 88M 0% /run/shm
/dev/mmcblk0p1 56M 19M 38M 33% /boot
/dev/sda1 1.9T 36G 1.8T 2% /mnt/share

$ sudo vi /etc/fstab
$ cat /etc/fstab
proc /proc proc defaults 0 0
/dev/mmcblk0p1 /boot vfat defaults 0 2
/dev/mmcblk0p2 / ext4 defaults,noatime 0 1
/dev/sda1 /mnt/share ntfs-3g defaults 0 0
tmpfs /tmp tmpfs defaults,size=32m 0 0
tmpfs /var/tmp tmpfs defaults,size=16m 0 0
tmpfs /var/log tmpfs defaults,size=32m 0 0
# a swapfile is not a swap partition, so no using swapon|off from here on, use dphys-swapfile swap[on|off] for that


$ df -h
Filesystem Size Used Avail Use% Mounted on
rootfs 3.7G 2.4G 1.2G 68% /
/dev/root 3.7G 2.4G 1.2G 68% /
devtmpfs 212M 0 212M 0% /dev
tmpfs 44M 524K 44M 2% /run
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 88M 0 88M 0% /run/shm
/dev/mmcblk0p1 56M 19M 38M 33% /boot
/dev/sda1 1.9T 36G 1.8T 2% /mnt/share
tmpfs 32M 0 32M 0% /tmp
tmpfs 16M 4.0K 16M 1% /var/tmp
tmpfs 32M 108K 32M 1% /var/log

$ free
total used free shared buffers cached
Mem: 448776 436424 12352 0 205796 189716
-/+ buffers/cache: 40912 407864
Swap: 0 0 0

先に調べておいたディレクトリ、ファイルを起動時に作成するように rc.local を編集します。

$ cat /etc/rc.local
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

# Print the IP address
_IP=$(hostname -I) || true
if [ "$_IP" ]; then
printf "My IP address is %s\n" "$_IP"
fi

exit 0


$ sudo vi /etc/rc.local
$ cat /etc/rc.local
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

# Print the IP address
_IP=$(hostname -I) || true
if [ "$_IP" ]; then
printf "My IP address is %s\n" "$_IP"
fi

mkdir -p /var/log/apt
mkdir -p /var/log/ConsoleKit
mkdir -p /var/log/fsck
mkdir -p /var/log/mpd
mkdir -p /var/log/news
mkdir -p /var/log/ntpstats
mkdir -p /var/log/samba
chown mpd:audio /var/log/mpd
chown ntp:ntp /var/log/ntpstats
chown root:adm /var/log/samba

touch /var/log/btmp
touch /var/log/lastlog
touch /var/log/wtmp
chown root:utmp /var/log/btmp
chown root:utmp /var/log/lastlog
chown root:utmp /var/log/wtmp

exit 0

リブートして、マウント出来ているか、ディレクトリ、ファイルは作成出来ているか確認します。リブートして立ち上がらなかったらショックですが、勇気を出して実行します。

$ df -h
Filesystem Size Used Avail Use% Mounted on
rootfs 3.7G 2.4G 1.2G 68% /
/dev/root 3.7G 2.4G 1.2G 68% /
devtmpfs 212M 0 212M 0% /dev
tmpfs 44M 360K 44M 1% /run
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 88M 0 88M 0% /run/shm
/dev/mmcblk0p1 56M 19M 38M 33% /boot
/dev/sda1 1.9T 36G 1.8T 2% /mnt/share
tmpfs 32M 0 32M 0% /tmp
tmpfs 16M 0 16M 0% /var/tmp
tmpfs 32M 76K 32M 1% /var/log

$ ls -l /var/log
total 72
drwxr-xr-x 2 root root 40 Jun 14 21:52 apt
-rw-r----- 1 root adm 272 Jun 14 21:53 auth.log
-rw-r--r-- 1 root utmp 0 Jun 14 21:52 btmp
drwxr-xr-x 2 root root 40 Jun 14 21:52 ConsoleKit
-rw-r--r-- 1 root adm 12794 Jun 14 21:52 dmesg
drwxr-xr-x 2 root root 40 Jun 14 21:52 fsck
-rw-r--r-- 1 root utmp 292584 Jun 14 21:53 lastlog
-rw-r----- 1 root adm 18282 Jun 14 21:52 messages
drwxr-xr-x 2 mpd audio 40 Jun 14 21:52 mpd
drwxr-xr-x 2 root root 40 Jun 14 21:52 news
drwxr-xr-x 2 ntp ntp 40 Jun 14 21:52 ntpstats
drwxr-xr-x 2 root adm 60 Jun 14 21:53 samba
-rw-r----- 1 root adm 22497 Jun 14 21:52 syslog
-rw-r--r-- 1 root utmp 3072 Jun 14 21:53 wtmp

ちゃんとマウントされて、ディレクトリ、ファイルも作成されているっポイです。よかったよかった……と一安心したのもつかの間。スマホからMPDに繋がらないのです。試しにコマンドラインで、サービスをリスタートすると繋がるようになります。rc.local の呼ばれるタイミングが MPD を起動した後なのがダメなのかな~と、ものすごく安直に考え、MPDの起動を遅らせてみました。

$ sudo chkconfig mpd off
$ sudo vi /etc/rc.local

$ cat /etc/rc.local
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

# Print the IP address
_IP=$(hostname -I) || true
if [ "$_IP" ]; then
printf "My IP address is %s\n" "$_IP"
fi

mkdir -p /var/log/apt
mkdir -p /var/log/ConsoleKit
mkdir -p /var/log/fsck
mkdir -p /var/log/mpd
mkdir -p /var/log/news
mkdir -p /var/log/ntpstats
mkdir -p /var/log/samba
chown mpd:audio /var/log/mpd
chown ntp:ntp /var/log/ntpstats
chown root:adm /var/log/samba

touch /var/log/btmp
touch /var/log/lastlog
touch /var/log/wtmp
chown root:utmp /var/log/btmp
chown root:utmp /var/log/lastlog
chown root:utmp /var/log/wtmp

service mpd start

exit 0

自動起動を止めて、rc.local の最後で起動させるようにしてみました。これで再びリブートしてみます……。

スマホから繋がる様になりました!!!!!
どうやら、MPDは起動時に所定のフォルダが存在しないとマズイようです。
スポンサーサイト

tag : RaspberryPi

tag : MPD

コメントの投稿

非公開コメント

黒ねこ時計 くろック D02
プロフィール

jujurou

Author:jujurou
運営HP:チャコの部屋
Twitter:jujurou

カレンダー
08 | 2017/09 | 10
- - - - - 1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
最新記事
最新コメント
カテゴリ
ユーザタグ

ぺるけ RaspberryPi Linux トランジスタ式ミニワッター TRminiWatterPart4 MPD OpenOCD イーサネットコンバータ FON2405E DAC buildroot FM3ペリフェラル BeagleBoneBlack FM3評価ボード library OpenGL mingw ODROID-U2 TL-WR700N Edison bitbake KiCad 計測 VMware シングル FM4 ミニワッター 6N6P プリアンプ 

月別アーカイブ
ランキング

FC2 Blog Ranking

カウンター
検索フォーム
リンク
RSSリンクの表示
QRコード
QRコード
ライセンス
クリエイティブ・コモンズ・ライセンス
Twitter
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。