ラズパイでカメラ安定化バージョン3
前の記事でhttps://ameblo.jp/fc2miha/entry-12833773023.html
新型のラズパイOSでうまく良くといいなーという取り組みだったんですが、
やっぱり1週間程度で停止してしましました。
今回はディスクのramdisk化を実施してみます。
今度はちゃんと安定して動くといいなー
■今回の方針
・Linux raspberrypi 5.10.60+ #1449をインストール。
・sshが動くように設定
・カメラが動くように設定
(ここまでは前回も同じ)
・OSのディスクに書き込まないように設定
・USBメモリ認識
・sambaが動くように設定
・カメラ関連シェルをUSBメモリ上で動くようにする
・OverlayFSの有効化
・この状態で安定しているか確認する
■Raspberry Pi OS(32bit)をインストール
Raspberry Pi Imagerを使用してRaspberryPiOS(32bit)を選択して
MicroSDに起動ディスクを作って
ラズパイゼロWHにセットして
起動する
パスワードの設定、ロケーションの設定、WIFIの設定
ソフトの最新化を実施しておく。
1時間ぐらいかなかかります。
ちなみに、uname -aの結果は
Linux raspberrypi 5.10.60+ #1449
■sshを有効化
sudo raspi-config
interfaceing Options → SSH
Wold you the SSH server to be enables?
Yes
Finish
reboot
■カメラを使えるようにする
sudo raspi-config
Interfacing Options → Camera
Yes
Ok
rebootされる
■一枚撮ってみる。
pi@raspberrypi:~ $ python
Python 2.7.16 (default, Oct 10 2019, 22:02:15)
[GCC 8.3.0] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import picamera
>>> camera = picamera.PiCamera()
>>> camera.capture('image.jpg')
>>> quit()
pi@raspberrypi:~ $ ls
Bookshelf Documents Music Public Videos picamera
Desktop Downloads Pictures Templates image.jpg
pi@raspberrypi:~ $
■OSのディスクに書き込まないように設定
https://ameblo.jp/fc2miha/entry-12833772931.html
これをやると、落っこちにくくなる。
でも、ジェシー用なので今も同じかはわからない
free -h
sudo swapoff --all
free -h
sudo vi /etc/fstab
以下を追加
tmpfs /tmp tmpfs defaults,size=200m 0 0
tmpfs /var/tmp tmpfs defaults,size=20m 0 0
tmpfs /var/log tmpfs defaults,size=200m 0 0
書き込んでviを終了
:wq
sudo reboot
df -h
上記で追加したのを確認
sudo vi /etc/rc.local
以下を追加
mkdir -p /var/log/apt
mkdir -p /var/log/fsck
mkdir -p /var/log/ntpstats
mkdir -p /var/log/samba
chmod 750 /var/log/samba
chown ntp:ntp /var/log/ntpstats
chown root:adm /var/log/samba
touch /var/log/btmp
touch /var/log/lastlog
touch /var/log/wtmp
chmod 600 /var/log/btmp
chmod 664 /var/log/lastlog
chmod 664 /var/log/wtmp
chown root:utmp /var/log/btmp
chown root:utmp /var/log/lastlog
chown root:utmp /var/log/wtmp
exit 0
:wq
sudo vi /etc/rsyslog.conf
以下の行をコメントにする
#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
#mail.info -/var/log/mail.info
#mail.warn -/var/log/mail.warn
#mail.err /var/log/mail.err
#*.=debug;¥
# auth,authpriv.none;¥
# news.none;mail.none -/var/log/debug
:wq
以下のumountコマンドでエラーになるので少し遠回りだけど
別のSDで起動してUSBで接続した/dev/mmcblk0p2に対して
ジャーナルを取り除くコマンドを入れる
#sudo umount /dev/mmcblk0p2
#sudo tune2fs -O ^has_journal /dev/mmcblk0p2
#sudo tune2fs -l /dev/mmcblk0p2 | grep features
#Filesystem features: has_journal ext_attr resize_inode dir_index filetype needs_recovery extent flex_bg sparse_super large_file dir_nlink extra_isize
#has_journalが含まれていなければOK
sudo shutdown -h now
別のSDで起動して、今までインストールしたSDはUSB接続する
下記では/dev/sdc2で認識されている
pi@raspberrypi:~ $ df -h
ファイルシス サイズ 使用 残り 使用% マウント位置
/dev/root 118G 41G 72G 37% /
devtmpfs 181M 0 181M 0% /dev
tmpfs 185M 0 185M 0% /dev/shm
tmpfs 185M 5.4M 180M 3% /run
tmpfs 5.0M 4.0K 5.0M 1% /run/lock
tmpfs 185M 0 185M 0% /sys/fs/cgroup
/dev/mmcblk0p1 44M 23M 21M 52% /boot
tmpfs 37M 0 37M 0% /run/user/1000
/dev/sdc2 14G 1.2G 13G 9% /media/pi/rootfs
/dev/sdc1 253M 48M 205M 19% /media/pi/boot
/dev/sda1 1.9G 236M 1.7G 13% /media/pi/BUFFALO
sudo umount /dev/sdc2
sudo tune2fs -O ^has_journal /dev/sdc2
tune2fs 1.43.4 (31-Jan-2017)
sudo tune2fs -l /dev/sdc2 | grep features
Filesystem features: ext_attr resize_inode dir_index filetype extent flex_bg sparse_super large_file dir_nlink extra_isize
sudo shutdown -h now
元のSDで起動してジャーナルがなくなっていることを確認する
sudo tune2fs -l /dev/mmcblk0p2 | grep features
has_journalが含まれていなければOK
■USBメモリ認識
USBメモリを接続
df -h
ファイルシス サイズ 使用 残り 使用% マウント位置
/dev/root 14G 3.4G 10G 26% /
devtmpfs 152M 0 152M 0% /dev
tmpfs 184M 0 184M 0% /dev/shm
tmpfs 184M 2.9M 181M 2% /run
tmpfs 5.0M 4.0K 5.0M 1% /run/lock
tmpfs 184M 0 184M 0% /sys/fs/cgroup
tmpfs 200M 4.0K 200M 1% /tmp
tmpfs 20M 0 20M 0% /var/tmp
tmpfs 200M 172K 200M 1% /var/log
/dev/mmcblk0p1 253M 49M 204M 20% /boot
tmpfs 37M 4.0K 37M 1% /run/user/1000
/dev/sda1 1.9G 236M 1.7G 13% /media/pi/BUFFALO
BUFFALOで認識された
sudo vi /etc/fstab
/dev/sda1 /media/pi/BUFFALO auto defaults 0 0
sudo reboot
■カメラ関連シェルをUSBメモリ上で動くようにする
cd /media/pi/BUFFALO/picamera
sudo chmod +x camera.sh file_del.sh
sudo vi camera.sh file_del.sh
ディレクトリパスを調整
sudo crontab -e
* * * * * for i in `seq 0 5 59`;do (sleep ${i}; /media/pi/BUFFALO/picamera/camera.sh) & done;
0 * * * * /media/pi/BUFFALO/picamera/file_del.sh
:wq
■sambaが動くように設定
sudo apt-get install -y samba
設定
sudo vi /etc/samba/smb.conf
[pi]
comment = Welcome to pi Server
path = /media/pi/BUFFALO/picamera/data
browseable = yes
wriable = yes
guest ok = no
force create mode = 0666
force directory mode = 0777
read only = no
create mask =0777
directory mask = 0777
sudo smbpasswd -a pi
sudo service smbd restart
■OverlayFSの有効化
これをやると、bootパーティションが書き込み禁止になります。
sudo raspi-config
Performance Options → Overlay File System
はい
Finish
reboot
■camera.sh
python /media/pi/BUFFALO/picamera/camera.py
■file_del.sh
find /media/pi/BUFFALO/picamera/data/* -name '*.jpg' -cmin +150 -exec rm -f {} ¥;
find /media/pi/BUFFALO/picamera/data/* -type d -ctime +0 -exec rm -rf {} ¥;
■camera.py
import picamera
import datetime
import os
import shutil
now = datetime.datetime.now()
base_directory = '/media/pi/BUFFALO/picamera/data/'
YYYYMMDD = now.strftime('%Y%m%d')
output_directory = base_directory + YYYYMMDD
if not os.path.exists(output_directory):
os.makedirs(output_directory)
os.chmod(output_directory, 0777)
filename = now.strftime('%H%M%S')
filename_fullpath = output_directory + '/' + filename + '.jpg'
camera=picamera.PiCamera()
camera.hflip = True
camera.vflip = True
#camera.resolution = (640,480)
camera.resolution = (1024,768)
camera.capture(filename_fullpath)
shutil.copyfile(filename_fullpath, base_directory + '/now.jpg')
■10日後・・・(2021.10.25)
動かなくなった。
症状としては
sambaの反応がなくなった。
sshの反応がなくなった。
pingの反応がなくなった。
暫定対処
→電源切り→電源入り
sambaが動作
写真の中身をみると、直近までカメラデータが残っていたので、
単純にNWが落っこちて、その他は動いていたっぽい。
本格対処。
crobtabに以下の一行を追加
0 0 * * * sudo reboot
0時に再起動します。