[blog-日々のこと]健忘録-raspiでrtk2rtkとデータ保存

こんにちは

久しぶりの更新です。 裏でROSをやったり色々していたのですが、なかなか公開までこぎつけていません。

ということで今回は既に公開しているのですが、いろんなことを忘れてしまうため、まとめとしてここに記録して残しておきたいと思います。

raspberry piで動いていたrtk2rtkが止まってしまいました。 というか気が付いたのはディスクに時間毎にデータを書き込んでいたのですが、書き込み時に一瞬LEDが点灯するのですが、待っても待ってもLEDが点灯していないようで、そこで書き込みが停止したのに気が付いたというのが本当のところです。

気が付いたのはそうとう日数がたったあとのようで、しかもraspberry piそのものが起動しなくなっていました。

ということで健忘禄も兼ねてインストールに再チャレンジ(やり方を忘れていまっていたので改めてここに健忘禄として書いておこうと思っています。)

 

機材

 

raspberry pi B+

8GB SDカード

windows10

(SD メモリカードフォーマッター、Win32 Disk Imager)

 

Raspbian Stretchのインストール

 

以下のサイトから情報を入手しました。

Raspbian Busterリリース!Stretchとの違いと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+上で行います。

Raspberry PiでRTKLIBを使う

を参考にして

Raspberry PiでRTKLIB

手順にしたがってgit cloneしmakeを実行しました。 raspberry pi B+ではmakeに結構時間がかかりました。もう少し早いraspi 2でも使えばよかったのですが、古い機種も使わないともったいないということで使い続けています。 

以下の所からgit clone

tomojitakasu/RTKLIB

 

$ 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のフォーマットなど

以下のサイトを参照して

Raspberry Pi3で外付け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です。

データの保存

以下のサイトから

 

RTCM3とかを保存する

 

コマンドについてまとめました 【Linuxコマンド集】

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

時間毎にデータの保存は行われます。

コメント