SSHクライアント側の時刻をサーバに同期させるには?RLoginで(Raspberry Pi/Jetson TK1など)

組み込みLinux端末と付き合っていると時刻同期の問題が付きまとってくる。(方法だけを見たい人は■を探してね)

みんな「組み込み」だからと時刻同期用のボタン電池搭載をあきらめ電源をきったら

 

 

「時刻?あっ?忘れたわ」という呆れた態度をとってくるのだ。

※もちろんこれには理由がある。ボタン電池には寿命がある。保守部品が必要になるということは運用上めんどくさいという考え方もあるのだ。

 

 

IoTが注目されはじめ組み込みLinuxシステムの量も格段に増え、ログを一時的に保存するこれらの端末にも時刻同期が要求されることが多くなった。時刻をあわせる方法はいろいろある。私の解決するべき事例を紹介する前にどんな同期方法があるか簡単に紹介しよう。

 

 

1.組み込みLinuxをインターネットに接続し時刻サーバ(NTPD)と同期させる。

2.ローカルエリアに時刻サーバ(NTPD)を設置し同期させる。

2.RTCモジュール(ボタン電池付き)を外付けし保持できるようにする。

3.GPSモジュールを外付けし起動時に時刻同期させるようにする。

4.た~みなる~で~しゅどうで~じこくを~にゅうりょくする。

 

 

◎解決すべき事例

「私の研究室では、インターネットにつなぐことはできず、予算や保守性の問題でNTPサーバをローカルエリアに新規設置できず。GPSモジュールやRTCモジュールを組み込みLinux機に追加することはかなわず。唯一ターミナル君が正しい時刻を保持し続けており、複数台の組み込みLinux機の司令塔の役割をしているという環境におかれている。」

 

 

●解決の糸口(私の事例の場合)

・組み込みLinux機は時刻を保持できない。

・ターミナル機(SSHクライアント)は正しい時刻を保持できる。

・組み込みLinux機の処理はターミナル機からの指示で行われる。(SSH接続が定期的に行われる)

・SSHクライアント画面ではターミナル側の時刻は取得できない。

・SSHクライアント画面ではユーザが任意に時刻を設定することはできる。(sudo date -s ●●●●/●●/●●)

ssh_time_sync

 

ssh_time_sync1

■解決方法

解決方法はいたってシンプル。なんとSSHクライアントソフトのスクリプト機能で解決する方法だ。これならばSSHクライアントからSSHサーバへ接続した際にSSHクライアントの時刻をサーバへ伝えられる。

 

今回はWinodwsのRLoginというソフトを用いる。

1.起動して、ssh設定を終えている前提で話を進めよう。「編集ボタン」を押してみてほしい。

01

 

2.スクリプトのタブを開くと、スクリプトを記述できるスペースがある。

(スクリプト仕様書を見てもらってもいいが、次で時刻設定のサンプルスクリプトコードを記載する)

02

[サンプルスクリプトコード]


 

Document.Open();
wait(CONNECT);
sopen(OPEN_LOOK);
swait(6, “$”);
a = time();
str_ye = strftime(“sudo date -s 20%y/%m/%d\n”, a);
str_ho = strftime(“sudo date -s %H:%M:%S\n”, a);
sputs(str_ye);
swait(6, “:”);
sputs(str_ho);
sclose();


 

 

3.これで接続すると、SSH接続時にターミナル機の時刻がサーバに設定されるのだ。

少なくともユーザが手入力で設定するよりは、マシになった。煩わしい行程を省けたのだ。最終的にターミナル機を省き、中央の端末だけGPS受信できるようにしてクライアント兼サーバとして動作させれば完全なスタンドアロンで動作できるようになりそうだ。

ssh_time_sync2

 

同等の条件で困っている人は、非常にすくないだろうがメモとして残しておくことにする。

 



【解決】WD20EURX このハードウェアをインストールできません Windows XP

さすがにWindows XPを現役で使っている人はいないかも知れないですが、業務用途でオフライン状態のWindows XPはまだまだ大量に残っていたりします。ハードディスクなどのパーツは新しいものに変わっていき古いパソコンがついていけなくなっていきます。

 

 

今回はその問題の解決方法

 

 

 

私がトラブルに遭遇したのは、古いハードディスクから新しいハードディスクへとハードコピー行い。新しいハードディスクにてWindows XPを立ち上げた所、以下のメッセージが出てきました。

2

 

 

 

げっ!!落とし穴か!!

もちろんドライバの再インストールなんかも意味ありません。そこでメーカーのQ&Aページを参照しました。

するとWindows XPで使用する場合はジャンパホストの7-8をジャンパする必要があるではありませんか。

Specifications for Caviar Green and Caviar GP Serial ATA hard drives WD Support

 

 

[手順]

1.パソコンをシャットダウン。

2.パソコンのACケーブルを抜く。

3.HDDのジャンパホスト 7-8をジャンパする。

※必ずSATAはマザーボードの1番目に差し込んでください。セカンダリ等では症状が解消しない可能性があります。

image

4.ハードコピーやり直す。

5.パソコンのACケーブルをさす。

6.パソコンを立ち上げる。

 

1

 

無事立ち上がった後、自動で上記の通りインストールが完了しました。

一瞬冷や汗がでましたがこれで完了です。

 

 

【今回の問題に関して】

じゃあ今回の問題はなんだったの?という疑問が残ると人がいるでしょう。簡単に説明すると古いハードディスクは各物理セクタサイズが512バイトでした。それが新しいハードディスクは1024バイト,2048バイト,4096バイト)などパフォーマンスの高いものを製造する様になったのです。Windows XPなど古いOSは新しいハードディスク達の事を知らないので困ってしまっているのです。

 

 

今回のハードディスク(WD20EURX-63T0FY0)は速度こそ非常に早いものではないものの、監視用ビデオレコーダ用に設計され24時間常に電源がオン状態になっている環境下で耐久性を維持できるように設計されているハードディスクです。少し落とし穴がありましたが、これは古いOSをいつまでも保守する側が悪い気がします。

 

 

 

ハードディスクのハードコピー装置ですが個人用だと高信頼で安いものが以下の値段で手に入ったりします。良い時代になりました。

 

 

【解決】Windows 10 Update error 0x80242fff 0x80d02002 (KB3069068)

Windows10 にてWindows Update していたら何度もアップデート失敗してしまい萎えていないだろうか。

解決方法を提示しよう。

2015-07-29-windows10

 

【解決方法】

1.「Windows key + X」を押してメニューを表示

2.「コマンドプロンプト(管理者)」をクリック

3.出てきたコマンドプロンプトに以下のコマンドをコピペ

 

net stop wuauserv
net stop cryptSvc
net stop bits
net stop msiserver
ren C:\Windows\SoftwareDistribution SoftwareDistribution.old
ren C:\Windows\System32\catroot2 catroot2.old
net start wuauserv
net start cryptSvc
net start bits
net start msiserver

 

4.コマンドプロンプトを閉じてパソコンを再起動

5.Windows Updateを実行

 

ね。簡単でしょう。