« RPiでエアコンの温度調節 | トップページ | RPiでUSBメモリを使う »

2015年8月 6日 (木)

RPiでRAMディスクを使う

RPiで10分ごとに測定したデータをSDカードに書き込みしていたけど、こんな使い方をすると数か月でSDカードが壊れるらしい。特に安物を使っているので危ない。

そこで、測定データをRAMディスクに書き込むようにした。でもそうすると、停電とかでデータが失われてしまうリスクがある。データが失われるリスクは多少残るけど、cronで1日1回SDカードに書き戻すようにする。あるいは、USBメモリーなら壊れても交換が楽なので、バックアップに使うのがよいか。

ところが、/etc/rc.local に追加したコマンドが実行されない。しょうがないので、別にスクリプトを書いて、/etc/init.d/に登録した。また、ウェブサーバーの動作がおかしい。リロードしてもデーターが更新されない。/var/www をRAMディスクに変更したのが原因だと思うけど、起動後、データをSDカードから書き戻した後にlighttpdをリスタートするようにスクリプトに追加して解決した。

●スワップワイルの無効化
sudo swapoff --all
sudo apt-get remove dphys-swapfile

●tmp,logフォルダをRAMディスクに割り当て
sudo nano /etc/fstab

tmpfs /tmp tmpfs defaults,size=32m,noatime,mode=1777 0 0
tmpfs /var/tmp tmpfs defaults,size=16m,noatime,mode=1777 0 0
tmpfs /var/www tmpfs defaults,size=16m,noatime,mode=1777 0 0
tmpfs /var/log tmpfs defaults,size=32m,noatime,mode=0755 0 0
を追加

●起動時の初期化

sudo nano /etc/init.d/init-ramdisk
sudo chmod 755 /etc/init.d/init-ramdisk
sudo chkconfig --add init-ramdisk

#!/bin/sh
### BEGIN INIT INFO
# Provides:       init-ramdisk
# Required-Start: $local_fs
# Required-Stop:  $local_fs
# Default-Start:  2 3 4 5
# Default-Stop:   0 1 6
### END INIT INFO

# 起動時、自動的にディレクトリを作成
mkdir -p /var/log/ConsoleKit
mkdir -p /var/log/samba
mkdir -p /var/log/fsck
mkdir -p /var/log/apt
mkdir -p /var/log/ntpstats
mkdir -p /var/log/lighttpd
chown www-data /var/log/lighttpd
chgrp www-data /var/log/lighttpd
chown root.ntp /var/log/ntpstats
chown root.adm /var/log/samba
# 起動時、自動的にLastlogとwtmp,btmpファイルの空ファイルを作成
touch /var/log/lastlog
touch /var/log/wtmp
touch /var/log/btmp
chown root.utmp /var/log/lastlog
chown root.utmp /var/log/wtmp
chown root.utmp /var/log/btmp
# 起動時バックアップを復元
cp -r -p /home/pi/www /var
service lighttpd restart

●syslog でログを制限
sudo nano /etc/rsyslog.conf

●追記:
/etc/rc.localが実行されない件をネットで調べたら、コマンドはexit 0の前に書けとか、sudoはつけるなとか、的外れな回答しかない。唯一かすってそうなのがあった。確かに、dphys-swapfile を削除した。でもインストールしてみたけど相変わらず/etc/rc.localは実行されない。結局、誰も解決策は知らないということか。

>RE: Running script at boot not working(rc.local)

>I own Raspberry Pi with 256MB ram, and in my case the lack of swap was the problem !?!
>The file rc.local started execute after installing dphys-swapfile  package !?!

>Hope it also helps... Smile

>PS. It also helped with generating locales, which failed every time without swap...

« RPiでエアコンの温度調節 | トップページ | RPiでUSBメモリを使う »

RaspberryPi」カテゴリの記事

カテゴリー

フォト
無料ブログはココログ