モノを用意
ハードウェア
- RaspberryPi 3 Model B
- micro SDカード 32GB
- USBマウス
- USBキーボード
- SORACOM Air SIM
- 3G対応データ通信端末AK-020
- USBカメラ
OSバージョン
$ cat /etc/debian_version
9.6
ログイン
User name : pi
Password : raspberry
コマンド
シャットダウン
$ sudo shutdown -h now
リブート
$ sudo reboot
ディスク容量・使用量を調べる
全体
df -h
カレントディレクトリ
du -h
SSH接続
PuTTYなどを用いる。ポート22。
WiFi設定
$ sudo vi /etc/wpa_supplicant/wpa_supplicant.conf
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
ssid="XXXX"
psk="XXXX"
}
$ cat /etc/dhcpcd.conf
WiFiの切断
$ sudo ifconfig wlan0 down
SORACOM Air SIM
接続
sudo /usr/local/sbin/connect_air.sh
ソラコムSIMの接続確認
$ifconfig ppp0
バックアップ
同じメーカー、同じ容量よりも大きいSDカードを用いる場合(Raspi本体不要)
1.Win32 Disk ImagerでImage Fileのところでxxxx.imgと指定、SDカードのドライブを選択して、Readボタンを押し、PCに保存します
2.SD Card Formatterを用いてSDカードをフォーマットします
3.バックアップした.imgをWin32 Disk ImagerでSDカードに書き込んでRaspiに差し込めばOKです。
違うメーカー、同じ容量のSDカードを用いる場合(Raspi本体必要)
上記で説明したやり方だと、セクタの数が若干少ないことで、エラーが出たりします。そこで用いるのが、rpi-cloneです。
1.rpi-cloneをインストールします。
$ git clone https://github.com/billw2/rpi-clone.git
$ cd rpi-clone
$ sudo cp rpi-clone rpi-clone-setup /usr/local/sbin
2.microSDカードをカードリーダー(100均にもある)を用いてRaspiに挿します。認識しているか確認するには下記コマンドを実行します。/dev/sda1
をして読み込まれていました。
$ sudo fdisk -l
3.rpi-cloneを実行します
$ sudo ./rpi-clone sda -f
- Initialize and clone to the destination disk sda?:
yes
- Optional destination ext type file system label (16 chars max):
Enter
30分くらい待つとコピーが完了しました。
コピーしたmicroSDカードをRaspiに挿すことで即使えます!
参考まで
- Raspberry PiでIoTなシステム開発:SDカードのバックアップはrpi-cloneでやろう
- RaspberryPiに機能を追加
起動時にプログラムを実行したい
SORACOM SIM接続、IPアドレスの表示とPythonプログラムの実行
pi@raspberrypi:~ $ sudo vi /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.
sleep 10
# Connect SORACOM SIM
nohup sudo /usr/local/sbin/connect_air.sh > /dev/null 2>&1 < /dev/null &
# Print the IP address
_IP=$(hostname -I) || true
if [ "$_IP" ]; then
printf "My IP address is %s\n" "$_IP"
fi
nohup /home/pi/miniconda/bin/python /home/pi/programs/capture.py > /home/pi/programs/`date +\%Y\%m\%d\%H\%M`_backup.log 2>&1 &
exit 0
Pythonのパスの確認
pi@raspberrypi:~ $ which python
/home/pi/miniconda/bin/python
バックグラウンドで実行、ログを残す
nohup /home/pi/miniconda/bin/python /home/pi/programs/capture.py > /home/pi/programs/`date +\%Y\%m\%d\%H\%M`_backup.log 2>&1 &
バックグラウンドプログラムのプロセスの確認
pi@raspberrypi:~ $ nohup python /home/pi/programs/capture.py > /home/pi/programs/`date +\%Y\%m\%d\%H\%M`_backup.log 2>&1 &
[1] 936
pi@raspberrypi:~ $ ps u
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
pi 892 1.5 0.4 6140 4060 pts/0 Ss 18:57 0:00 -bash
pi 936 35.5 2.6 145776 23552 pts/0 R 18:58 0:00 python /home/pi
pi 938 0.0 0.3 7740 2968 pts/0 R+ 18:58 0:00 ps u
プロセスの確認
pi@raspberrypi:~ $ ps aux | grep python
root 556 52.5 6.8 226900 61292 ? Sl 19:09 4:31 /home/pi/miniconda/bin/python /home/pi/programs/capture.py
pi 1225 0.0 0.0 4372 532 pts/0 S+ 19:17 0:00 grep --color=auto python
プロセスを削除する場合
kill -9 [PID]
cronで定期的になんかする
cronの設定をします。
- 10分おきにpythonのプログラムを起動
- 毎日23:55に再起動
$ sudo su root
$ crontab -e
*/10 * * * * /home/pi/miniconda/bin/python /home/pi/program/capture.py > /home/pi/program/log/`date +\%Y\%m\%d\%H\%M`_backup.log
55 23 * * * /sbin/reboot
ctrl+xしたあとにy押して保存してEnterで終了します。
cronを再起動し、内容を確認します。
$ /etc/init.d/cron restart
$ crontab -l