こんにちは
久しぶりの更新です。 裏でROSをやったり色々していたのですが、なかなか公開までこぎつけていません。
ということで今回は既に公開しているのですが、いろんなことを忘れてしまうため、まとめとしてここに記録して残しておきたいと思います。
raspberry piで動いていたrtk2rtkが止まってしまいました。 というか気が付いたのはディスクに時間毎にデータを書き込んでいたのですが、書き込み時に一瞬LEDが点灯するのですが、待っても待ってもLEDが点灯していないようで、そこで書き込みが停止したのに気が付いたというのが本当のところです。
気が付いたのはそうとう日数がたったあとのようで、しかもraspberry piそのものが起動しなくなっていました。
ということで健忘禄も兼ねてインストールに再チャレンジ(やり方を忘れていまっていたので改めてここに健忘禄として書いておこうと思っています。)
機材
raspberry pi B+
8GB SDカード
windows10
(SD メモリカードフォーマッター、Win32 Disk Imager)
Raspbian Stretchのインストール
以下のサイトから情報を入手しました。
ミラーサイトから
http://ftp.jaist.ac.jp/pub/raspberrypi/raspbian/images/raspbian-2019-04-09/
windows10にSD card formatterとWin32DiskImagerがインストールされているので、これを使ってimageをSDカードに書き込みました。
rtklib_2.4.3のダウンロードとmake
raspberry pi B+上で行います。
を参考にして
手順にしたがってgit cloneしmakeを実行しました。 raspberry pi B+ではmakeに結構時間がかかりました。もう少し早いraspi 2でも使えばよかったのですが、古い機種も使わないともったいないということで使い続けています。
以下の所からgit clone
$ git clone https://github.com/tomojitakasu/RTKLIB.git
$ cd RTKLIB $ cd app $ chmod 755 makeall.sh $./makeall.sh
結構な時間かかります。
$ /home/pi に幾つかのファイルを作ります
str2str2.service
[Unit] Description=str2str2 [Service] Type=simple ExecStart=/home/pi/str2str2.sh Restart=Always [Install] WantedBy=multi-user.target
str2str2.sh
の中身は
#!/bin/sh
/home/pi/RTKLIB/app/str2str/gcc/str2str -in serial://ttyACM0:115200#ubx -out tcpsvr://localhost:52001
$ chmod 755 str2str2.sh
これでネット内にUBXのデータが流れるはずです。
Raspberry Piが立ち上がったときにstr2str2.serviceが自動的に起動するように
str2str2.serviceの起動の仕方
str2str2.serviceは
$ /etc/systemd/system
の中にcopyしておきます。
スタート
$ sudo systemctl start str2str2.serrvice
$ sudo systemctl enable str2str2.service
なぜかエラーになることが
停止とdisable
$ sudo systemctl stop str2str2.service
$ sudo systemctl disable str2str2.service
動作しているかどうかのチェックは
$ sysemctl status str2str2.service
データの保存
データを保存するためには外部にHDDなどを用意します。
そのときに新しいHDDであれば
HDDの確認
$ sudo fdisk -l
$ Disk /dev/sda: 465.8 GiB, 500107862016 bytes, 976773168 sectors
と表示されたので 新しいHDDは /dev/sda とわかりました。
HDDのフォーマットなど
以下のサイトを参照して
HDDをフォーマット
# パーティションテーブルの設定を行います
$ sudo fdisk /dev/sda
# d でパーティションを削除
Command (m for help): d Selected partition 1 Partition 1 has been deleted.
# p で現在の状態を確認
Command (m for help): p Disk /dev/sda: 3.7 TiB, 4000787030016 bytes, 7814037168 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 4096 bytes I/O size (minimum/optimal): 4096 bytes / 4096 bytes Disklabel type: gpt Disk identifier: F3BA4D9C-C2F7-43FF-837C-D3BFBFBF5C1D
# n でパーティションを作成 その後の設定で何も入力しない場合全てデフォルトとなる
Command (m for help): n Partition number (1-128, default 1): First sector (34-7814037134, default 2048): Last sector, +sectors or +size{K,M,G,T,P} (2048-7814037134, default 7814037134): Created a new partition 1 of type 'Linux filesystem' and of size 3.7 TiB.
# p でもう一度確認 パーティションが追加されています
Command (m for help): p Disk /dev/sda: 3.7 TiB, 4000787030016 bytes, 7814037168 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 4096 bytes I/O size (minimum/optimal): 4096 bytes / 4096 bytes Disklabel type: gpt Disk identifier: F3BA4D9C-C2F7-43FF-837C-D3BFBFBF5C1D Device Start End Sectors Size Type /dev/sda1 2048 7814037134 7814035087 3.7T Linux filesystem
# w で変更を書き込みます
Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table.
$ Syncing disks.
ext4でフォーマットする
ext4でフォーマットするとLinuxシステムでの読み込みがNTFSより早くなります。その代わりWindowsで認識できなくなります。
$ sudo mkfs.ext4 /dev/sda1
Creating filesystem with 976754385 4k blocks and 244195328 inodes Filesystem UUID: fa16b72b-a2d0-4331-9693-e417727f3b53 Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968, 102400000, 214990848, 512000000, 550731776, 644972544 Allocating group tables: done Writing inode tables: done Creating journal (32768 blocks): done Writing superblocks and filesystem accounting information: done
マウントする
/etc/fstabにデバイスを登録することにより、起動時に自動マウントすることができます。 またデバイスのパスではなくUUIDを登録しておくことにより、デバイスのパスが変更されてもマウントすることが可能です。
マウントポイントを作成
必要に応じてマウントポイントを作成します。今回は/mnt/hdd1としました。
$ sudo mkdir /mnt/hdd1
HDDをすでに使用中の場合はフォーマットせずに
UUIDを調べる
# ブロックデバイスの情報を表示する
$ sudo blkid /dev/sda1
/dev/sda1: UUID="eb7093bb-32dd-4757-965f-a9c896ba4912" TYPE="ext4"
と表示されたので
fstabを編集
fstabでの設定が正しくない場合、再起動時にemergency modeで起動されます。 ハマるとずっと起動できないといったことになるので、必ずバックアップをとっておく。 また、オプションにnofailを指定することで、エラーの設定項目を無視して起動してくれる。
# バックアップをとっておく
$ cd /etc
$ sudo cp fstab fstab.org
# fstabを編集しマウント設定を追加
$ sudo nano fstab
# デバイス名 マウントポイント ファイルシステム オプション dump指定 fsck指定
UUID=eb7093bb-32dd-4757-965f-a9c896ba4912 /mnt/hdd1 ext4 defaults 0 0
を追加します。
# 再起動
$ sudo reboot
マウントされていることを確認します。
$ df
/dev/sda1 479669928 17624916 437609352 4% /mnt/hdd1
となっていればOKです。
データの保存
以下のサイトから
root で設定しないと動作しませんでした。
$ sudo crontab -e
以下を追加
$ 0 * * * * /home/pi/UBX.sh
UBX.sh
#!/bin/sh
timeout 3600s /home/pi/RTKLIB/app/str2str/gcc/str2str -in tcpcli://localhost:52001 -out file:///mnt/hdd1/`date +%s`.ubx > /home/pi/crontab-error.log > /dev/null 2>&1
$ chmod 755 UBX.sh
時間毎にデータの保存は行われます。
コメント