gpsdの長年の疑問解決

gpsdというgpsのデータを流してくれるプログラムがあるのだが、起動オプションに-G を付ければ、あらゆるネットワークインターフェースで受け付けしてくれるはずだった。

しかし、Debian 7あたりから外部から接続できなくなった。
どうやら systemd が余計な事をしてくれていて、ローカルホスト以外を受け付けないように邪魔しているようなのだが、新しく導入されたシステムなので解決方法が分からなかった。

今日、検索してやっと解決方法を見つけた

But we aren’t there yet. gpsd may be listening on all interfaces, but systemd’s hold on the socket means gpsd can’t hear anything on interfaces other than the loopback. We have to tell systemd to allow gpsd to hear other interfaces. We run systemctl edit --full gpsd.socket. Then we can edit it. After editing, the [Socket] stanza looks like so:

When you are done editing, systemctl does what it needs to do internally to preserve your changes from being over-written during upgrades. It also does the equivalent of a systemctl daemon-reload for you.

We now restart both gpsd units like so:

こんなもんわかるかボケ!

これでやっとデスクトップマシンの地図表示プログラムで、サーバーからデータを取得してGPSの現在位置を表示できる。

自宅固定だからほぼ動かないけど、測定誤差でふらふら動くから結構おもしろい。

【Raspberry PI4】設定メモ

※取り敢えず、やった事のメモなのであまり参考にならないと思う。
日本語入力
$ sudo apt install fcitx-mozc

zoneminder
$ sudo apt install apache2 mariadb-server
$ sudo mysql_secure_installation
$ sudo apt install php libapache2-mod-php php-mysql
$ sudo apt install zoneminder vlc-plugin-base

VNC
GUIの「Raspberry PIの設定」ではグレーアウトしていて変更できないので、端末からコマンドで設定。

$ sudo raspi-config
→5 Intafacing Options→P3 VNC→「はい」
/var/log/syslog で libbcm_host.so が無いと怒られる。/opt/vc/lib に存在するけど、/etc/ld.so.conf にpath追加して、ldconfig するも変わらず。

How to Install VNC on Raspberry Pi OS (64 bit)
https://www.tomshardware.com/how-to/install-vnc-raspberry-pi-os

標準の設定が使えないから、tightvncserver を入れて回避するしかないようだ

IRC
$ sudo apt install ngircd

ircbotの為にJREインストールだけど、JDK入れちゃう。
GUIはOFFにする予定なのでheadless
# apt install default-jdk-headless

以下のパッケージが新たにインストールされます:
ca-certificates-java default-jdk-headless default-jre-headless java-common
openjdk-11-jdk-headless openjdk-11-jre-headless

その他
# apt install php-xml
# apt install samba
# smbpasswd -a noizumi
# apt install ntp
# apt install gpsd gpsd-clients
# apt install bind9
# apt install exim4
# apt install cron-apt

# apt install dovecot-imapd

Mixed mbox and Maildirの設定はドキュメントの通りでOKでだった。
これでサブフォルダー掘り放題や 🙂

Raspberry PI4到着

早速、64bit beta を入れて動かしている。
HDD起動は四苦八苦したけど何とかHDDブートできるようになった。

やった事は、Raspberry Pi 4 の 64bit版と USB Bootを参考にさせて貰って、HDDにSDカードコピーをやったけど、USBからブートできなかった。

そこで、SDの/boot/cmdline.txt 編集してハードディスクのカーネル起動指定して、/etc/fstab もハードディスクの領域をマウントするように書き換え。

再起動して、sudo apt update && sudo apt  upgrade やって、sudo rpi-update をやったら、SDカードなしでもUSB HDDブートするようになった。

GUI環境だが、chroniumというブラウザで、abema.tv も観られるし、艦これも動く。

Abema TVはハードウェアデコーダがあるせいかスムーズに動いているが、Youtubeの1080p動画は読み込みマークが頻繁に出て視聴に耐えられなかった。

艦これはもっさりしていて、Intel Atom X5と同等くらいかな? という感じで、遊べない事はないけど、感覚的に操作に追いついていない感じ。

監視カメラサーバーの環境構築しようと syaptic パッケージマネージャ入れて、zoneminder を検索すると……ありませんでした。

ARMの32bit版パッケージがあるから 64bit beta でも当然あると考えたのが甘かったわ。

【皇紀2680年6月7日 12:49追加】
https://wiki.zoneminder.com/Debian_10_Buster_with_Zoneminder_1.32.3_the_Easy_Way?title=Debian_10_Buster_with_Zoneminder_1.32.3_the_Easy_Way&oldid=15622

debian buster の Multimedia Repositoryを追加してないだけだった orz

【/皇紀2680年6月7日 12:49追加】

Raspberry PI4 8GBこうにう

KSYで、スターターキットV1をこうにう。
RSのページも見たが、売り切れで10月まで入らんとか書いてあったので、ちと高いけど、セットになってるのを買った(13,640円)

サーバー止まると監視カメラも記録できないし、ファイルサーバーも使えないので、早急にサーバーを立てる必要がある。10月まで待っておれん。

ただ、問題は、PI4って、USBのハードディスクブートできるのかねえ。
サクっと検索した限りではイケるっぽいので、今まで eSATAで使ってたハードディスクケースはUSBにしないといかんな。

監視カメラダウン?

zoneminder で監視カメラの運用をしているが、ふと見てみると、2月19日以降映像が撮れていない。

ディスク容量80%で古いやつを自動削除する設定にしているが、filter の設定見てみると100件該当があり、それが何らかの理由で削除できずにデッドロックしてるのかな? と思い、削除するも変わらず。

監視カメラの raspberry pi 3 をチェックすると、応答なし……。
ssh に応答しないとなると、ディスプレイとキーボード繋がないとどうなっているのか分からないが、面倒なので電源ブチ(^^;;

raspberry pi 3 は、SDカード延命の為、ログ類はシステムシャットダウンを実行すると、SDカードに書き戻すが、電源ブチではRAMDISK上で揮発してしまう。
なので、応答無しになっていた理由は分からず。

暫くシステムアップデートやってなかったし、長期間再起動してなかったから、メモリーリークのアプリケーションがメモリ食い潰したのかなあ。

という訳で、raspberry pi に自動アップデートをやってくれる cron-apt をどうにう。
ファイルサーバの openrd ultimate で導入しているが、セキュリティアップデートは自動で適用してくれ、カーネルは「更新あるで」とメールで通知してくれる。

いや、「更新あるで」と関西弁では言ってくれないが(^^;、次の様な感じ。

ただ、こいつはメールシステムが動いていないと通知してくれないので、raspberry pi 3に exim4 のスマートホストによるメール配送を設定。

raspberry pi 3 でメール読まないので、全部 noizumi@silverfox.p.noizumi.org へ配送。スマートホストは openrd ultimateのIPアドレスを設定。
※@は全角に変えてます。以後、コピペ注意

openrd ultimate の exim4 もスマートホストの設定だが、メールを受信する設定になっているので、raspberry pi 3 からメールを投げれば届くはず。

メールの運用にはDNSが必要で、DNSはローカルで立てているから、raspberrypi.p.noizumi.org の正引きと逆引きを設定。

raspberry pi 3 の端末から、noizumi@silverfox.p.noizumi.org へメール送ったら届いたので、apt cron がメール投げても多分、大丈夫。

cron-apt の設定で、 /etc/cron-apt/config を編集

確か前に openrd ultimate の設定弄っていい感じにニギッたはずなので、設定をパクる!次のファイルを追加

[/etc/cron-apt/actions.d/5-security]

[etc/cron-apt/config.d/5-security]

確かこの設定はセキュリティアップデートを問答無用で適用する為に設定したはずなので、これで危ない穴はパッチ提供時に即座に適用されるはず。

設定が終わったので、取り敢えず cron-apt の手動実行

更新したばっかりだったので、メールは飛ばず。/var/log/cron-apt/log を確認

autoclean やってくれるのね。問題は無い模様。

カーネルはさすがに自動でやっちゃうと、起動不能になる可能性もあるので、メールで通知が来たら手動で行おうと思う。

カーネル更新も自動で行ないたい場合は、/etc/cron-apt/action.d/3-download の -d オプションを削ればOK。

OpenRD Ultimateお陀仏

debian 8→9へアップデートしたところ、カーネルのNANDフラッシュ書き込みでエラーが出た。

[ 6508.167779] __nand_correct_data: uncorrectable ECC error
[ 6508.173165] end_request: I/O error, dev mtdblock0, sector 8
[ 6508.178767] Buffer I/O error on device mtdblock0, logical block 1

NANDフラッシュは起動時に読み込まれる起動プログラムが書いてあるところで、そいつの書き込み失敗という事は、もう寿命という事だな。

起動はするが、Debian 9 で、カーネルは4.9.0なのに
Linux silverfox 3.16.0-10-kirkwood #1 Debian 3.16.70-1 (2019-07-22) armv5tel GNU/Linux

なんてのが動いている。多分、NANDに書き込まれているカーネルだろう。

1GbpsのEthernetでファイルサーバーにしていたが、置き換えるとしたら、1Gbps Etherになった raspberry pi 4 かな。

まだ発売してないから、発売したら早速置き換えよう。

Raspberry pi 3アップグレード jassie→stretch

情報源: [メモ] (らずぱい) Raspbian: Jessie から Stretchへアップグレード – Qiita

このページを参考にアップグレード。更新時間は 2.5時間位。

途中新しい設定への上書き確認があり、次の様にした。

  1. 設定ファイル ‘/etc/systemd/timesyncd.conf’ N
  2. 設定ファイル ‘/etc/skel/.bashrc’ Y
  3. 設定ファイル ‘/etc/login.defs’ Y
  4. 設定ファイル ‘/etc/ntp.conf’ N
  5. 設定ファイル ‘/etc/lightdm/lightdm-gtk-greeter.conf’ Y
  6. 設定ファイル ‘/etc/lightdm/lightdm.conf’ Y

*.dpkg-old *.dpkg-dist と現在のファイルを比較して内容を確認

1. は時刻サーバーを
Servers=192.168.11.254 ntp.nict.go.jp
に変更したものだけなので、元のファイルでOK
2. は弄ってないので、新設定ファイル上書きOK
3. はPATH関係だが、/usr/local/sbin は使ってないから新設定ファイル上書きOK
4. は時刻サーバー設定関係なので、元のファイルでOK
5. 6.はGUIを使ってないので、新設定ファイル上書きOK

Raspberry Pi3設定メモ

自分の投稿を参考に、mjpg-streamerの最新版を取ってきてコンパイル。
必要なライブラリ等はインストール済なので、mjpg-streamerだけ。

# mv mjpg-streamer mjpg-streamer.old
# svn co https://svn.code.sf.net/p/mjpg-streamer/code/mjpg-streamer mjpg-streamer
# cd mjpg-streamer/
# make USE_LIBV4L2=true clean all

起動スクリプトは /root/bin/camera_stream.sh に記述してあって
#!/bin/bash
cd /root/mjpg-streamer
./mjpg_streamer -i “./input_uvc.so -f 16 -r 640×360 -d /dev/video0 -y -n” -o “./output_http.so -w ./www -p 8081” >/dev/null 2>&1 &

これを、/etc/rc.local から呼び出してraspberry pi 3が起動した際に起動させている。

Raspberry pi3のWifi

新しい無線LANルータの環境になったので、IEEE802.11nで接続したら、今までIEEE802.11g の 56Mbps だったRaspberry pi3 のWifi も高速化できるかなと思って、新無線LANルータ用に接続設定を作成。

繋いでみたが、72.2Mbpsになる。
IEEE802.11nって150Mbpsとかじゃないの? なんで? と色々調べたら、謎が解けた。

実は、今までIEEE802.11nを詳しく理解して居なかったのだが、「IEEE802.11nとは」を読んだら分かった。物によって、150Mbpsだったり、300Mbpsだったり、600Mbpsだったりするのはボンディングとストリーム数が関係する訳ね。

安物の無線LANドングルだと、1ストリームの40MHzの帯域幅で 150Mbpsくらい。
Raspberry pi3 は Broadcom の BCM43430 で、今どきありがちな安物Wifi の firmwareドライバをPCで制御するSDIO方式。

性能的には、150Mbpsくらい行けるはずなのだが、
/lib/firmware/brcm/brcmfmac43430-sdio.txt の先頭には次の文言がある。

# NVRAM file for BCM943430WLSELG
# 2.4 GHz, 20 MHz BW mode

2.4GHz の 20MHz Band Width modeって、要は 72.2Mbpsが最大速度な訳ね。
1ストリームでも40MHz使えば、150Mbpsまで速度アップが見込めるから、今後のlinuxのfirmwareの更新に期待しよう。

raspberry pi3 ログをramdisk化

ラズパイ壊れた?

結局、micro SDが壊れてたっぽい。

正常起動確率50%位でだましだまし動かしてたが、新しいmicro SDにしたら起動確率100%になった。

二年位で寿命とは情けない。とはいえ、/var/log に毎日ゴリゴリ書き込んでるんだからしょうがないか。

そこで!

Ubuntu 9.04 on USB Memory

こいつの出番。
/etc/init.d/ramdisklog を作成。

ramdisk 作って log コピーして、その ramdisk を bind で/var/logに被せるというしくみ。

# insserv ramdisklog

ついでにswapも無効化
# insserv -r dphys-swapfile

# reboot
で完了。

マウント状況はこんな感じ。

ラズパイ壊れた?

Raspberry pi3をネットワークカメラ化

我が家の監視カメラとして活躍している Raspberry Pi3 が12月7日0:30をもって映像を送って来なくなった。

家を出る時に、扉の外に設置している Raspberry Pi3 を確認すると、電源ランプが光ってない。24時間稼働はさせてたけど、1年半位で壊れるか?

家帰って、取り外して家のコンセントに挿したらランプ点いた。
でも、ssh は応答しない。さては、取り外す時に落としてしまったが、それで壊れたか?

ネットに繋がらないとなると、HDMIで直接見るしかないが、ディスプレイ繋ぎ替えるのマンドクセから、E4甲第一ゲージ削ってる艦これ攻略してからにしよう。 🙂