zram (3) 〜zramの話ではない〜

zramをswapに使えば,SDカードで動かしているRaspberry Pi 4 Model B (RPi4) の挙動は少しは改善するかという試みですが,その答えはNOでした.遅さはswapだけの問題ではないです.

で,それを検証するのに四苦八苦しました.これまでRPi4にLinux distroをインストールする場合,インストール用イメージをSDカードに焼いて起動して,必要最低限の設定を終えたら,SDカードの中身をSSDにコピーして,多少のおまじないをしてからSSDから起動するということでうまくいってきました.

Raspberry Pi 3 Model B(+)の場合も,ルートディスクの中身をSSDにコピーしてSDカードのvfat内のcmdline.txtを書き換えてOKでした

当然,SSDで動いていれば,適切にその内容をSDカードにコピーすれば,SDカードのみで使える様になるはずです.それがなかなかうまくいきませんでした.

SDカードは,Toshibaのmicro SDカード64GBです.

過程を思い出すのがめんどうなので,結果だけ書きますと,比較のために使用した1TBのHDDはもともとgptで成功.64GB SDカードはUSBアダプターを使ってテストして,dosではだめで,これもgptにしたら成功.成功したところで,RPi4のSDカードスロットに差しても起動するようになった,といったところでしょうか.

なぜSDカードからの起動がdosパーティションではだめで,gptならうまくいくのかは調べません.64GBだからか,Toshiba製だからなのか,解りません.

将来,また今回のことを忘れで試行錯誤する自分宛のメモですが,「cmdline.txtやfstabの記述は,UUIDを使うこと」,です.具体的なディバイス名は,複数のUSBディバイスを使う時や,RPi4本体のSDカードスロットに差し込む時に変わるからです.

もうひとつ,SSD/HDDからSDカードへのrsyncによるコピーは,一晩以上かかります.

CD/DVDはともかくSDカードも「焼く」で良いかの議論はめんどうなので割愛します.
この場合は,RPi4と違って,起動用のSDカードは必要です.なんかちょっと難しいまじないをすればSDカードが要らなくなるようですが,そこまでは追求しません😓

今日は何一つうまくいかない

zram, がSDカードをルートドライブとしているRaspberry Pi 4 Mobel Bにどれくらいパフォーマンスの向上をもたらすか試したくて,SSDで動いているManjaro ARMのそのSSDの内容をまるまるSDカードにコピーして,ブートさせようとしましたが,全くうまくいきません.

SDカードからSSDにコピーするのはほとんど成功しているのに,その逆がうまくいかない訳はありません.

この時期,まだ気温は真夏より低いですが,蒸してきて,個人的には1年で一番体調管理が難しい時期です.ここのところの睡眠不足も影響してか,頭が回りません.

もう一度,公式インストールイメージをSDカードにコピーしてやり直すのが早道,というか回らない頭を使わないで済むと思います.

この他,午前中畑の草取りをしましたが,予定のエリアを完了できませんでした.

他は特に何もしてません😓

zram

Debianのサーバーを立ち上げましたが,久しぶりにLinuxいじりの気分になって,Manjaro ARMを復活させたりして遊んできました.

その中で気がついたのは,旧来,swap専用パーティションやルートディバイス上のファイルをswapに使ってきましたが,最近のdistroではzramというディバイスをswapに使っていることです.

zramについては,ネットで調べればいろいろ詳しく書いてあると思いますが,主記憶の一部を仮想的なディスクに使うものです.同じく主記憶を使うtmpfsとの違いは,保存するデータを圧縮する点のようです.

もちろん,旧来のディスク(実ディスク)のswapも併用可能ですが,zramにうんと高いプライオリティーが与えられて,実ディスクの方に書き込まれることはほとんどないようです.

この方法,Raspberry Piなどディスクとして書き込みが低速なSDカードを使っている場合特に効果的なのはいうまでもありません.

残念ながらSlackwareARM 15.0ではデフォルトではzramが使われませんが,ネットの情報を参考にして設定したら,うまく動くようになりました.

$ swapon
NAME TYPE SIZE USED PRIO
/dev/sda2 partition 4G 0B -2
/dev/zram0 partition 4G 0B 100

こんな感じです.

下記のページを参考にしました.元記事ではzram0〜3までの4つ,それぞれのサイズを512MBにしていますが,筆者の場合は,zram0ひとつだけ作って,その代わりサイズを4GBにしました(RAM 8GBのマシンです).

100など.

Systemd

世の中みんなsystemdになってきました.筆者が最初にいじったsystemdのシステムは,1〜2代前のRaspberry Pi OSで,たぶん2017年頃だったと思います.Raspberry Piに赤外線リモコンのソフトを組み込んだ時,デーモンの起動にsystemdを使いました.

その後はたぶん,Gentoo, Manjaro, Debianをインストールして評価して,いつものように,習うより慣れろ的にやってきました.

今回,とあるサーバーの更新に際して,慣れたSlackwareではなく,次のLTSへのupgradeもオンラインでできることを期待して,Debianにしました

で,いろいろ必要なサービスを設定していくのですが,そのために細かいことまでsystemdに対応するようservice設定をしているところです.設定が終わったら,

systemctl start サービス名

で,起動して,動作を確認する場合は,

systemctl status サービス名

なので,キーボードの上矢印を押して前のコマンドを編集するわけですが,まん中のコマンドを書き換えるのは,ちょっとやりにくいなと感じています.

systemctl サービス名 コマンド

というシンタックスにして欲しかったです.

それはさておき,困るのは,何か困った時に,

debian 困った事柄

で,ネット検索しても.systemdでない方の情報が圧倒的に多いことです.

いちいち検索のキーワードにsystemdを入れるか,あるいはdebianは入れずに,

systemd 困った事柄

で検索するようにしています.

実用的な用途のためのインストールではなく,インストールのためのインストール😓
Debianでそう呼ぶかは知りません😓
根こそぎupdateをSlackwareの場合リモートからできないため.

Manjaro ARM復活

RaspberryPi OS以外のARMのLinux distroでMozcは使えますよね,あ,でも実例が示せない,ということで久しぶりにManjaro ARMをインストールしてみました.サーバーの予備機の位置づけのRaspberry Pi 4 RAM 4GB (RPi4 4G)です.

しかし,新規インストールからどうやってもMozcが使えません.昔の下卑た言い方でいうと「やきが回った」ようです😓 省略しますがいろいろやりました.fcitx (古いversion4のほう)も,fcitx5も試しましたが,動いてくれません

また,けしからんことにjoeがなくて,ネットで調べるとしばらくupdateされていないから,去年のいつか,Manjaroから削除されてしまったそうです.

記憶が正しければ,去年まではMozcが使えていたはずなので,どこかに去年いじっていたManjaro ARMのバックアップはないかなとあまり期待しないで探したらありました.2021年3月23日のものです.

SSDのvfatパーティションに/bootの内容を,残りをext4のパーティションにrsyncに–deleteオプションを付けてコピーしました.

RPi4 4GにSSDをつないで起動すると,ちゃんとManjaroのログイン画面まで進みます.たいしたもんです.

しかし,ここから先が苦難の道です.わずか1年3か月前の状態なのに,GUIのupdaterではupdateできません.

あちこちを参照して,まず(以下全てroot権限),

pacman-mirrors -f

をしました.これは成功しますが,その後のupdateではエラーが出ます.エラーメッセージにlibcanberraとlibcanberra-pulseがなんだかんだ言うので,その2つを,

pacman -R libcanberra libcanberra-pulse

で削除しました.よく見ませんでしたが,依存性のあるたくさんのパッケージが削除されました.それでも,次に,

pacman -Syyu

をしたら,今度は成功します.起動するとシンプルなグリーターが出ますが,パスワードを入力してリターンしても先に進みません.

そこでさらにあちこちの情報を参照したりしなかったりして,以下のパッケージをインストールしたり削除したりまたインストールしたりしました.

  • gnome
  • gdm
  • sddm

最終的には,gnomeとgdmは削除して,

ここら辺の記事を参考に,sddmとkdeのパッケージについて再インストールしたところ,無事KDE plasma desktopが起動するようになりました.

ここまで何とか来ましたが,マウスポインターの動きが遅くて使い物にならなくなりました.これは “known issue”だそうです.

要は,/boot/config.txtの dtoverlay=vc4-fkms-v3ddtoverlay=vc4-kms-v3d-pi4 に書き換えればよいです.

Mozcもjoeも使えます.あちこち壊れている可能性もありますが,updaterは “Up to date” といいます.

やっぱりバックアップは取っとくもんです.

復活させたManjaro ARMでは,fcitx5がインストールされ,機能しています.
Powered USB HUB経由.SSDをRPi4 4G本体直結ではブートしません.
libcanberraとlibcanberra-pulseは,update完了後に再インストールしておきました.何に使うかよくわかりませんが😓