Telemetra-1は小型コンピュータであるRaspberry Piと、そのGPIO(General-purpose input/output)端子に 接続されたMEMS加速度センサーADXL355で構成されています。Telemetra-1の地震計としての機能は、 Raspberry PiのOS(Linux)上で実行されるADXL355の制御プログラム、およびOSが提供するネットワーク をはじめとしたさまざまな機能で実現されます。

したがってTelemetra-1を取り扱うにあたっては、LinuxコンピュータとしてのRaspberry Piの操作に ついての一定の知識を必要としますが、ここでは、Raspberry Piの設定の中で、 特に地震計Telemetra-1の設定に必要な事項について、それぞれ簡単に説明します。 各ファイルやコマンドの詳しい説明や形式、それにRaspberry Piの操作全般については インターネット上や書籍に多数の情報がありますので、そちらを参照してください。

操作環境について

Raspberry PiとしてのTelemetra-1を操作する場合、次の方法があります。

HDMIモニタ、USBキーボード/マウスを接続
この場合はGUIが立ち上がり、ユーザー pi での操作ができます。ユーザー pi のパスワードは 「ariake」に設定してありますので適宜変更してください。
sshでログイン
ssh接続を受け付けるように初期設定してありますので、ユーザー pi でのログインが可能です。 ただしssh接続するにはIPアドレスを知る必要があります。
USB/シリアル変換ケーブル経由でログイン
PCのUSBポートをRS-232化するのに使う「USB/シリアル変換ケーブル」2本を Raspberry PiとPCのそれぞれのUSBポートに取り付け、それらの 間をクロス接続のシリアルケーブル(両端メスの9ピンコネクタ)でつなぎます。 この状態でRaspberry Piを起動すると、PCからログインすることができます。 これはRaspberry Piで
sudo systemctl enable serial-getty@ttyUSB0.service
により、ttyUSB0でのgetty(ログイン受け付け)を設定してあるためです。
PC側は適当な端末ソフト(TeraTermとか)を使ってください。

Telemetra-1(Raspberry Pi)の起動と停止

起動
電源スイッチはありませんので電源(AC電源アダプタ)を接続するとRaspberry Piは起動します。 起動には1分間程度かかります。Raspberry Piが起動すると、引き続いて自動的にTelemetra-1としての プログラムが立ち上がって動作し始めます。
停止
一般のUNIX(Linux)システムでは電源を落とす前にシャットダウン操作が必要ですが、 後述するように、Telemetra-1の初期設定状態ではOverlayFS(オーバーレイファイルシステム) を利用してmicroSDドライブを読み出し専用(RO)マウント していますので、シャットダウン操作は必要なく、電源を落とす(ACコンセントや AC電源アダプタを抜く)だけでかまいません。

OverlayFS化を外した状態では、GUIでのシャットダウン操作またはコマンドラインでの シャットダウン

sudo shutdown

が必要です。なおRaspberry Piではshutdownコマンドの --poweroff オプションは効きませんので、 電源を落とすにはシャットダウン終了後(30秒程度かかります)に実際にACコンセントや AC電源アダプタを抜く作業が必要です。

ネットワークと時刻管理

Telemetra-1の動作にネットワーク接続とシステム時刻の管理に最低限設定が必要なファイルは 次の3つです。

/etc/dhcpcd.conf

各ネットワークインターフェースの設定ファイルです。初期設定ではDHCPサーバーから動的な 設定を受けるようになっています。静的なIPアドレス設定はこのファイルに記述する必要があります。

なお、有線LANのインターフェース名は多くの場合"eth0"等ですが、OverlayFS化した場合に それが"enx*"("*"の部分はイーサネットアドレスの16進数12桁)の"predictable interface name"に なっている場合がありますので注意が必要です。
このファイルは起動時にUSBメモリから読み込ませることができます(下の項目参照)。

/etc/wpa_supplicant/wpa_supplicant.conf

Wifiを利用する場合には、このファイルにSSIDやパスフレーズを記述する必要があります。
このファイルは起動時にUSBメモリから読み込ませることができます(下の項目参照)。

NTPプロトコルを使った時刻同期プログラムの設定ファイル(2020.6.15変更)

2020年5月以前の出荷品では systemd-timesyncd を使っていましたが、同年6月以降の出荷品からは chronyを使っています。chronyの方が高機能で、特にモバイル回線では同期誤差が 小さくなるとみられるためです。

/etc/systemd/timesyncd.conf(2020年5月以前出荷品)
NTPプロトコルのクライアント機能のみを備えた systemd-timesyncd というデーモンが、 インターネット上のNTPサーバーへの時刻同期を行っています。このファイルは systemd-timesyncd の動作方法を設定するもので、この中にはNTPサーバーのリストが含まれています。初期設定では 適当に日本国内の複数のNTPサーバーを設定してあります。
/etc/chrony/chrony.conf(2020年6月以降出荷品)
NTPプロトコルのクライアント/サーバー機能を備えた chrony というデーモンが、 インターネット上のNTPサーバーへの時刻同期を行っています。このファイルは chrony の動作方法を設定するもので、この中にはNTPサーバーのリストが含まれています。初期設定では 適当に日本国内の複数のNTPサーバーを設定してあります。

プロセスの管理

起動時や定期的に実行するプログラムを管理するためのコマンドとファイルです。

/etc/rc.local
OS起動時に実行されるスクリプトですが、telemetra-1のためにここに設定されているのは /home/pi/telemetra/readconf.shだけです。これは起動時にUSBメモリから設定情報を 読み込むためのスクリプトで、読み込まれるのは次の4つのファイルです。
  • /etc/wpa_supplicant/wpa_supplicant.conf
  • /etc/dhcpcd.conf
  • /home/pi/telemetra/w355
  • /home/pi/_win

このうち前の2つは上述のものです。後の2つについては「設定方法」で説明します。 USBメモリは起動前に挿しておく必要があり、そのボリュームラベルは"TELEMETRA"である必要があります。 そのUSBメモリのルートディレクトリにRaspberry PiのCPUシリアル番号("cat /proc/cpuinfo"で表示される 16進数16桁)の名前のディレクトリがあればその中から、なければルートディレクトリから、上記4つの ファイルが読み込まれます(ただし/home/pi/telemetra/w355についてはタイムスタンプがより新しい場合のみ)。 OverlayFS化されている場合もmicroSDドライブを一時的にRWマウントして保存します。

なお、ユーザー pi の GUIで、USBメモリが挿されると、"/media/pi/ボリュームラベル"にマウントされるよう 初期設定されているはずで、/home/pi/telemetra/readconf.shはそれを利用しています。

OverlayFSに関して

上述のようにTelemetra-1ではOverlayFSを利用して、microSDカード上のファイルシステムは 読み出し専用マウントし、一見元通りに見えながら実際の書き込みはRAMディスクに 行われるようにしています。この設定はJosep Sanz氏による手順 に従ったものです。これにより、OverlayFS化状態ではいつ電源断があってもmicroSDのファイルシステムが壊れることは ありませんが、再起動したときは前回の起動時の状態に戻ります。システムの設定変更等の時にはこれでは 困りますから、OverlayFS化状態で一時的にmicroSDファイルシステムに 書き込む方法と、OverlayFS化の有無を切り替える方法について説明します。

OverlayFS化状態のときに設定をmicroSDカードへ保存する
OverlayFS化した状態では、たとえば dfコマンドの出力は次のようになっています。
Filesystem     1K-blocks    Used Available Use% Mounted on
udev              464360       0    464360   0% /dev
tmpfs              94948    9960     84988  11% /run
/dev/mmcblk0p7  13396268 3512912   9183148  28% /mnt/root-ro
tmpfs             474724   87728    386996  19% /mnt/root-rw
tmpfs             474724       0    474724   0% /mnt/boot-rw
/dev/mmcblk0p6     73564   34146     39418  47% /mnt/boot-ro
/mnt/boot-ro       73564   34146     39418  47% /mnt/boot-ro2
overlay           474724   87728    386996  19% /
overlay           474724       0    474724   0% /boot
tmpfs             474724       0    474724   0% /dev/shm
tmpfs               5120       4      5116   1% /run/lock
tmpfs             474724       0    474724   0% /sys/fs/cgroup
tmpfs              94944       0     94944   0% /run/user/1000

ここで、たとえば /home/pi への書き込みは、実際にはRAMディスク(tmpfs)上のファイルシステムである /mnt/root-rw 下 の /mnt/root-rw/upper/home/pi に対して行われ、/mnt/root-rw の空き領域が減っていきます。 microSD上のファイルシステムは /mnt/root-ro としてROマウントされているので、元の/home/piディレクトリは /mnt/root-ro/home/pi としてアクセスできます。同様に、RAMディスク上の /mnt/boot-rw と microSD上でROマウントされた /mnt/boot-ro も同じ関係です。

したがって、

  • 元の/home/pi(または/etc)下のファイルを変更したいときは、
    sudo mount -o remount,rw /mnt/root-ro
    
    で/mnt/root-roディレクトリをRWマウントに変更してから、/mnt/root-ro/home/pi(または/mnt/root-ro/etc)下のファイルを変更したのち、
    sudo mount -o remount,ro /mnt/root-ro
    
    でROマウントに戻す。

  • 元の/boot下のファイルを変更したいときは、
    sudo mount -o remount,rw /mnt/boot-ro
    
    で/mnt/boot-roディレクトリをRWマウントに変更してから、/mnt/boot-ro下のファイルを変更したのち、
    sudo mount -o remount,ro /mnt/boot-ro
    
    でROマウントに戻す。
という手順になります。
OverlayFSの有無を切り替える
OverlayFS設定時にmicroSD上の個々のファイルを変更するのは上の手順ですが、それではやりにくい 場合は一旦OverlayFSのない、元の状態に戻すことになります。OverlayFSは、起動時に/boot/config.txtの 中の最後の1行、
initramfs initrd.gz
で設定されますので、この行を無効化しておけば非OverlayFS化状態で起動します。つまり上記の手順を使って、
  • OverlayFS化状態を元に戻したいときはときは、
    sudo mount -o remount,rw /mnt/boot-ro
    
    で/mnt/root-roディレクトリをRWマウントに変更してから、/mnt/boot-ro/config.txtの
    initramfs initrd.gz
    
    をコメント化
    #initramfs initrd.gz
    
    して再起動(sudo reboot)する。

  • 非OverlayFS化状態(通常の状態)からOverlayFS化状態に変更したいときは、 /boot/config.txtの
    #initramfs initrd.gz
    
    の"#"を消して
    
    initramfs initrd.gz
    
    にしてから再起動(sudo reboot)する。
    

という手順です。

以上の手順については/home/pi/root-ro/README.mdにも書かれています。

OverlayFSとapt-get upgrade
Raspberry Piは、ソフトウェアパッケージの更新について、
sudo apt-get update ; パッケージリストの更新
sudo apt-get upgrade ; インストールされているパッケージの更新
によって行いますが、このうち upgrade を行った後は、上記のOverlayFSの設定のための Josep Sanz氏による手順 のうちの少なくとも
mkinitramfs -o /boot/initrd.gz
を再実行しないと、OverlayFSが立ち上がらなくなる可能性がありますので要注意です。
RAMディスクの容量について
OverlayFS化状態では、データをファイルに蓄積しない限り、ファイルシステムの容量が 心配になるのは /var/log ディレクトリです。/var/log への書き込みは上記の通り /mnt/root-rw に対して行われ、これの容量は B+仕様で約220MB、3B+仕様で約470MB、つまり実メモリの半分弱 に設定されています。ログファイルの処理については、 /etc/logrotate.d/rsyslogに設定されており、syslogについては"rotate 7/daily/compress"、 それ以外のログファイルについては"rotate 4/weekly/compress"となっていますので、1か月程度で 定常状態になるはずです。通常の状況では容量が問題になることはまずないと思われます。
ページのトップへ戻る