SDカードでパフォーマンスがかなり違う

Raspberry Pi (RPi)の話です.表記は当たり前の話ですが,最近実感しています.

Rpi 3 Model B (RPi3), 同+ (RPi3+), RPi4 (4GB, 8GB)が手持ちのRPiの中で生きているものです

これらはどれもUSB接続でSSDを接続すればある程度のスピードで動いてくれますが,SDカードのみで動いたほうが例えばテレビの裏側に置くようなアプリケーションでは都合がいいです.

とはいえ,これまでもさんざんSDカードをルートドライブとして動かすテストをしてきましたが,「使えないな」というのが体感的な総合評価です.

ところが,近年SDカードの弱点を補うかなり決め手的な技術が普及してきました.ZRAMです.SDカードは読み出し速度はまあまあだけど,書き込み速度はコンピューターのマスストレージとして使用するには致命的に遅いです.その遅い書き込み速度でメインメモリーの内容を退避するSWAPに使用するのは実用的ではありませんが,Raspberry Pi OSのデフォルトではそうなっています.

昨年はZRAMの素晴らしさを実感して,手持ちのRPiはすべてZRAMで稼働するようにしました.またLinux x86 64bitの実機や仮想マシンも全てZRAMにしました.したがってLinux x86 64bitのディスクはパーティション1つでよくなりました.

ごく最近なんですが,自分で動かしているRaspberry Pi OSを含むLinux環境で,/tmpがtmpfsでなく,ルートディスクのサブディレクトリーそのものを使っているものがいくつかあるのに気が付きました.これらをtmpfsにすることで,体感速度が上がりました

Linux Foundationが定めるFilesystem Hierarchy Standard (FHS)では,/tmpは「再起動時に内容は保持されない」としているのでtmpfsで終了時にデータの退避などする必要も全くなしです.たまに,この定義を知らないプログラムがあって,再起動ごとに初期動作をするものもありますが,気になるほどはありません.

再起動しても内容を保持したい一時ファイルは/var/tmpを使えばよいです.

ここまでやってもどうもRPi4のworkstation (WS)はSDカードをルートにすると遅いです.体感的にRPi3+よりも遅いので,SDカードを入れ替えてみたところ,体感速度が大幅に向上したので,これはSDカードの遅さに引きずられているようです.

写真のToshibaの64GBが遅いmicroSDカードで,かなり古いものだと思います.SanDiskの32GBは去年買ったもので速いと実感するRPi3で使用しています.そこでこの際古いSDカードを新しいのに置き替えることにします.

このToshibaのmicroSDカードはまだ使えるのですが,また忘れてRPiのルートドライブに使ってはいけないのでなにか印をつけようと考えました.字は書けないのでブランド名の上を赤のマッキーで塗りつぶしました.

たぶん何か月したら塗りつぶした意味を忘れると思うので,このBLOGに記した次第です.遅いながらもまだ書き込みでエラーは出ないので使い道はあると思います.

初代RPiや,RPi 2とたぶんRPi3も1台死亡しましたが,捨てましたので😅 手持ちはみんな生きています.
microSDカードです.もはや標準のSDカードは使っていません.以下も “SDカード” と書いてあっても “microSDカード” の話です.
Raspberry Piの場合.

LIRCまたやります

心の中でやろうやろうと思ってもなかなか腰が上がらないので,一応公に宣言してやる気を掻き立てることにします.

LIRCは随分前にRacpberry Piで試しましたが,今回扇風機を回すために再び挑戦します.リビングで石油ファヒーターを運転中,サーキュレーター代わりに扇風機を回すと,部屋の一部に淀んでいた熱気がうまく部屋全体に拡散して具合がいいことを最近発見しました.ただ家人には,冬に扇風機を動かすというのに固定観念からくる抵抗があるようで,それならRaspberry Piから自動で赤外線リモコン信号を発信して扇風機を起動してやろうという目論見です.

以前LIRCについては,受信する方は結構それなりに取り組んだことがあります.そのときにLEDや受光器を買い揃えていたはずだと思って探してみたら,な,なんと,Raspberry PiのDIOに繋げば動くようなところまで準備したものが出てきました.それも2セット😥

テスト用にリード線を長くしてあって,完成というか実装する場合はなんかもうひと工夫しなければならなそうですが,とりあえず,送受信のテストをするには十分です.

2018年6月なので5年半前.

RTSPの再生が安定しない (vlc)

その後も利用価値のあまりなくなった,Raspberry Pi 3 Model B (RPi3)と同B+(RPi3+)を防犯カメラの映像をRTSPで見るモニターとして利用する試みを続けています.

Raspberry Pi OS (RPiOS)の配布するvlcで一時期RTSPを見ることができませんでしたが,それも使えるように戻してくれたようで,RP3(+)に電源を入れて起動すると,メインユーザーで自動ログインした上でvlcも自動的に起動してカメラからのRTSP映像をHDMIでつないだディスプレーに表示するようにしていますが,どうも不安定で,数時間〜半日前後でvlcがブランク画面を表示するか,ある時刻の静止画のままになります.

OSは生きていて他のマシンからsshでログインできます.

これまで確認しているところ,カメラがトラブってRTSPを吐き出さなくなる場合と,カメラは生きているけれど,vlcがトラブる場合があるようで,他のマシンからカメラにつなぐことでどちらか確認できます.

前者のトラブルの場合,カメラの電源を切って再起動しますが,その場合RTSPにログインするためのUser IDとパスワードが変わるので,クライアントのスクリプトを修正する必要がありちょっと厄介です.しかし,幸いというか,このトラブルよりも後者のvlcのトラブルのほうが多いです.

しばらくvlcの使用はやめて,またffplay (FFMPEG)に戻して様子を見ることにします.明らかにCPU loadはvlcよりもffplayのほうが大きいです.

Manjaro ARM64 ぶっ壊れる

Raspberry Pi 4 Model B (RPi4)をWS(workstation)として使える可能性を一番示してくれているdistroである表記Manjaro ARM64を使い続けてきました.当BLOGの記事からすると2年半とかになると思います.ローリングモデルの性(さが)といいますか,途中でパッケージマネージャーのデータベースにほつれが出てだんだんおかしくなってきました.

コマンドライン版のpacmanではupdate/upgradeできるのですが,GUI版のpamac-managerではなにもしなくてもいつも”Up to date”になる状態が1年以上続いたと思います.それに本日終止符が打たれました.コマンドラインのpacmanで依存性に衝突が生じてupdateができなくなりました.

たぶん,パッケージデータベースを修復する方法もあると思うのですが,このWSではあまりややこしい設定はしていませんので,新規インストールをすることにしました.

といっても完全に新規でなくて,夏頃から取り組んできたRTSP表示のためManjaro AMR64をSDカードにインストールしたものが使わずに放置されていたのでそれを使いました.

/bootのパーティションはvfatにフォーマットした2GBのSDカードにコピーし,ルートパーティションはSSDの旧Manjaroのあったところにコピーです./boot/cmdline.txtと/etc/fstabを修正して起動しました.その後でバックアップからメインユーザーのデータをコピーしてほぼ元通りです.

Manjaroにjoeがないと以前騒いでいましたが,素直にコンパイルできるパッケージなので自分でmakeして/opt/binに置きました.

Raspberry Pi OSにphpMyAdminのインストール

標記の件,あちこちに書いてあると思いますが,自分ナイズした手順をメモっときます.

前提としては,別所ですでにphpMyAdminが動いていた/var/lib/mysql以下をバイナリーで手元に持ってきて,データベースとして正常に動作している状態であることです.

apt install phpmyadmin

いろいろ依存ファイルがインストールされ,最後にdpkg-なんとかで設定するかと聞いてきますが,すでにphpmyadminが動くように設定済みのMariaDBが動いているわけですから “No” です.

これでApache2を再起動してもphpMyAdminは機能してくれませんでした.設定が足りていません.

設定の最初ですが,phpMyAdminというデフォルトのpathは攻撃者の格好の標的となりますので,/etc/phpmyadmin/apache.confの最初の方にあるAliasを他の人が想像しにくいように変えます.

次に,Debian的に進めるために,/etc/apache2/conf-availableに,/etc/phpmyadmin/apache.confのsymlinkを貼ります.

cd /etc/apache2/conf-available
ln -s /etc/phpmyadmin/apache.conf phpmyadmin.conf

次に,Debianらしいコマンドa2eanbleを実行し,apache2の設定をreloadすれば完了です.

a2enable phpmyadmin.conf
systemctl reload apache2

次はLDAP

次は,OpenLDAPをインストールして,これも別所のデータをバイナリーで移してみます.これはx86からARMにもってきたときは失敗したと記憶しています.

slapdが動くようになったら,phpLDAPadminを動かしてみます.

あとでも良いのですが.