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追加】

【OpenRD Ultimate】原因判明。ACアダプター故障

ハードディスクケースの12V3AのACアダプターを OpenRD Ultimateに接続したら電源が入った。

ACアダプターの故障のようだ。慌てて raspberry PI4 買う事も無かったのう。

そしてACアダプターを発注。多分変換プラグが無いと合わないので、変換プラグ付きを注文。

ハードディスクケースのACアダプターはOpenRD Ultimateに繋いでいるハードディスクケース用なので、これをOpenRD Ultimateに接続すると、今度はハードディスクの電源が無くなってしまって結局起動できないんだな。

Raspberry PI4 8GBこうにう

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

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

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

【業務連絡】再起動のfsckで引っかかる

サーバーがおかしくなったので、シリアルで繋いでみたら

[6879670.724188] ata2.00: failed to read SCR 1 (Emask=0x40)
[6879670.729572] ata2.00: failed to read SCR 0 (Emask=0x40)
[6879670.734932] ata2.01: failed to read SCR 1 (Emask=0x40)
[6879670.740297] ata2.15: exception Emask 0x4 SAct 0x0 SErr 0x0 action 0x6 frozen
[6879670.747575] ata2.00: exception Emask 0x100 SAct 0x0 SErr 0x0 action 0x6 frozen
[6879670.755037] ata2.00: failed command: READ DMA EXT
[6879670.759975] ata2.00: cmd 25/00:08:20:bc:c9/00:00:e8:00:00/e0 tag 2 dma 4096 in
[6879670.759975] res 40/00:00:00:4f:c2/00:00:00:00:00/00 Emask 0x4 (timeout)
[6879670.775019] ata2.00: status: { DRDY }
[6879670.778896] ata2.01: exception Emask 0x100 SAct 0x0 SErr 0x0 action 0x6 frozen
[6879670.786353] ata2.15: hard resetting link
[6879671.272764] ata2.15: SATA link up 1.5 Gbps (SStatus 113 SControl F310)
[6879671.280206] ata2.00: hard resetting link
[6879672.380925] ata2.01: hard resetting link
[6879673.424658] ata2.01: failed to resume link (SControl 0)
[6879673.435971] ata2.00: configured for UDMA/33
[6879673.441275] ata2: EH complete

なんてのが延々出ていた。
そして強引に電源ブチで再起動してみると、fsckが走り出し、異常終了。

/dev/sda2: UNEXPECTED INCONSISTENCY; RUN fsck MANUALLY.
(i.e., without -a or -p options)
fsck exited with status code 4
done.
Failure: File system check of the root filesystem failed
The root filesystem on /dev/disk/by-uuid/a655bf7a-3a32-4f2a-b0f1-fa0086bc9c39 requires a manual fsck

マニュアルで fsck をやれというのでやっているがとてつもなく時間が掛かりそう。

One Mix 3修理

画面半分ブラックアウト

タブレットにして使っていたせいか、折り曲げたら画面半分が消えるようになった。

恐らくヒンジ部分の配線が切れ掛かってるのかもしれない。
まだ買ってから1年経ってないので、GeekBuyingに問い合わせたら、「修理イケるで。無料になるかは製造元次第やけど」という返事を貰ったので、修理に出す予定。

やっぱり、支那製は長持ちせんなあ。

ajax通信中に他のajaxが保留になる

最近、jQuery で複数同時通信する処理を書いたが困った事になっている。

【条件】
1. $.ajax() で1分間位返ってこない処理。
2. 1秒毎にインターバルで呼び出す$.ajax() で、処理はされるがHTTP通信が全部保留(pending)。

という状態なのだが、firefox 75.0でもchrome 73.0.3683.75でも1つしか通信中状態を認めない。

1 の処理が終了すると、保留されていたHTTP通信が一挙に実行されて結果が返ってくるが、もはや1の処理が終了しているので、「完了」という結果が山程返ってくるだけ。

これって非同期でも全く意味無いじゃん。何でこんなバカな仕様になってるんだろう?

確かにJavascript で組んでて、非同期で結果が返らない内に他の処理が走ってしまうというマヌケな相談が山程あるけど、それらはプログラムの組み方で解決できる話であって、それを救済する為に非同期処理のメリットを完全に潰す事は馬鹿げている。

それか、HTTP/2.0 だと、一つの接続で複数のページをまとめて送信する仕様だが、そっちへ移行させる為の嫌がらせ?

1つの処理をやってて、それがサーバーに動作状況をファイルに書き出し、もう一つが、書き出したファイルを読み出して状態を返すって処理組めねーじゃん。

ウェブブラウザ開発してる連中ってバカ揃いかよ!?

しょうがないので、1 のPHP処理で exec()使ってすぐに戻ってこさせて、バックグラウンドで実行させるしか手が無いな。クソが。

監視カメラダウン?

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。

【jQuery】「このサイトを離れますか?」を無効にする

登録フォームを飛ばして確認フォームからスタートする処理を組んでいたが、ブラウザback、もしくは「戻る」ボタンで history.back() 実行をやると、ブラウザのフォーム入力中警告が出る問題が発生。

入力せずに予めこちらで設定したデータを既存のフォームの確認ページに表示させるというやり方をしているので、文言の変更はしないし、実際には入力中じゃない。

にも関わらず、「移動しますか?」と警告ダイアログを表示してくれやがりますので、ちょいとgoogle検索すると、beforeunload というイベントに介入すれば良いのが分かった。

理屈上は、e.preventDefault() のみや、$(window).off(…)のみで良さそうに思えるのだが、どちらも必須。

この辺の理不尽な仕様は、javascript に苦しめられてきた者なら分かるかもしれないけど、google検索しても出てこなかったので、経験を積んでないと難しいかもしれないなあ。

腹痛で会社休んで艦これイベントクリア

なんか腹を通しているのだが、原因が分からん。
変なものを食った覚えはないが…。

で、会社を休んだのをこれ幸いと、艦これの甲作戦やってたが、終了日までにクリアできそうにないと思ったので、乙に切り替え勝利S 6回でクリア。

ボス面は、甲作戦だと、随伴艦に戦艦ボス二隻のところ、乙作戦だと普通の戦艦になるので無茶苦茶楽。6回中4回は夜戦せずに昼戦で全滅できてた位。

最近までで、難易度が高すぎるイベントが無かったけど、今回は高難易度で酷かったのう。