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を操作する場合、次の方法があります。
sudo systemctl enable serial-getty@ttyUSB0.serviceにより、ttyUSB0でのgetty(ログイン受け付け)を設定してあるためです。
OverlayFS化を外した状態では、GUIでのシャットダウン操作またはコマンドラインでの シャットダウン
sudo shutdown
が必要です。なおRaspberry Piではshutdownコマンドの --poweroff オプションは効きませんので、 電源を落とすにはシャットダウン終了後(30秒程度かかります)に実際にACコンセントや AC電源アダプタを抜く作業が必要です。
Telemetra-1の動作にネットワーク接続とシステム時刻の管理に最低限設定が必要なファイルは 次の3つです。
各ネットワークインターフェースの設定ファイルです。初期設定ではDHCPサーバーから動的な 設定を受けるようになっています。静的なIPアドレス設定はこのファイルに記述する必要があります。
なお、有線LANのインターフェース名は多くの場合"eth0"等ですが、OverlayFS化した場合に
それが"enx*"("*"の部分はイーサネットアドレスの16進数12桁)の"predictable interface name"に
なっている場合がありますので注意が必要です。
このファイルは起動時にUSBメモリから読み込ませることができます(下の項目参照)。
Wifiを利用する場合には、このファイルにSSIDやパスフレーズを記述する必要があります。
このファイルは起動時にUSBメモリから読み込ませることができます(下の項目参照)。
2020年5月以前の出荷品では systemd-timesyncd を使っていましたが、同年6月以降の出荷品からは chronyを使っています。chronyの方が高機能で、特にモバイル回線では同期誤差が 小さくなるとみられるためです。
起動時や定期的に実行するプログラムを管理するためのコマンドとファイルです。
このうち前の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はそれを利用しています。
上述のようにTelemetra-1ではOverlayFSを利用して、microSDカード上のファイルシステムは 読み出し専用マウントし、一見元通りに見えながら実際の書き込みはRAMディスクに 行われるようにしています。この設定はJosep Sanz氏による手順 に従ったものです。これにより、OverlayFS化状態ではいつ電源断があってもmicroSDのファイルシステムが壊れることは ありませんが、再起動したときは前回の起動時の状態に戻ります。システムの設定変更等の時にはこれでは 困りますから、OverlayFS化状態で一時的にmicroSDファイルシステムに 書き込む方法と、OverlayFS化の有無を切り替える方法について説明します。
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 も同じ関係です。
したがって、
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マウントに戻す。
sudo mount -o remount,rw /mnt/boot-roで/mnt/boot-roディレクトリをRWマウントに変更してから、/mnt/boot-ro下のファイルを変更したのち、
sudo mount -o remount,ro /mnt/boot-roでROマウントに戻す。
initramfs initrd.gzで設定されますので、この行を無効化しておけば非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)する。
#initramfs initrd.gzの"#"を消してinitramfs initrd.gzにしてから再起動(sudo reboot)する。
という手順です。
以上の手順については/home/pi/root-ro/README.mdにも書かれています。
sudo apt-get update ; パッケージリストの更新 sudo apt-get upgrade ; インストールされているパッケージの更新によって行いますが、このうち upgrade を行った後は、上記のOverlayFSの設定のための Josep Sanz氏による手順 のうちの少なくとも
mkinitramfs -o /boot/initrd.gzを再実行しないと、OverlayFSが立ち上がらなくなる可能性がありますので要注意です。