Moving to RPi OS (debian)

当BLOGの前身はもともとはx86_64のSlackware64で動いていました.それをSlackware ARM 14.xに移行したのは2016年頃であったようです.

Slackwareを使っているといつも遭遇するのですが,ソフトの陳腐化です.パッチレベルでは新しいものが配給されますが,メジャーバージョンのupgradeは基本的にありません.それで14.2でしびれを切らせていた頃15.0が出てくれました.

そのSlackware ARM 15.0に移行したのが2022年4月です.それから3年ちょっとですが,いくつか前述のように最新のソフトをキャッチアップしない故の不具合が出てきました

長年愛用してきたSlackwareを離れてRaspberry Pi OSに移行することにしました.まあそれなりに慣れたdebianみたいなもんです.

GUIなしでRaspberry Pi 4 Model B (RAM 4GB)に仕立てて,うまくいったらサーバーをスイッチし,さらにRaspberry Pi 5 Model Bにして,GUIもいれます.

なかなか前途は多難だと思いますが,ひと頑張りしてみます.

詳しくは書きませんが😓

バックアップから仮想マシン作成 (Debian)

長年こんなことをやってます.ただし,年がら年中でなく,時々思い出したようにやるのでたいてい前のことは覚えていません.

そんなわけで自分用のメモです.

前提条件

稼働している実マシンないし仮想マシンから,定期的にrsyncにて差分もしくは完全バックアップを取っている.

まあ,完全と言っても,/dev, /tmp, /proc, /sysはたいてい外していると思います.

また,バックアップ元のマシンはSWAPはzramのみでSWAPパーティションはなく,ルートパーティションも一本でマウントするボリュームはなしです.

仮想ディスクの作成

仮想ディスクは,qemu-imgで作ります.形式はQEMU/KVMならばqcow2,VMWareならばvmdkでしょう.もちろんraw形式や他の形式でも大丈夫ですが,最終的に収まる仮想マシンのデフォルトにしておくのが無難でしょう.

qemu-img create -f qcow2 ファイル名.qcow2 40G

次にパーティションを切ります.nbdの出番です.以下はroot権限での作業になります.

modprobe nbd
qemu-nbd --connect /dev/nbd0 ファイル名.qcow2
fdisk /dev/nbd0

パーティション形式はGPTにします.EFI用のパーティション512MBを “BIOS boot” 形式にして,残りをLinux filesystemにします.

そして,mkfsでフォーマットします.

mkfs -t ext4 -j /dev/nbd0p2
mkfs -t vfat /dev/nbd0p1

引き続き,/dev/nbd0p2を/mnt/hdなどにマウントして,

rsync -artlvd --numeric-ids バックアップのディレクトリー /mnt/hd

バックアップしてない必要なディレクトリーを作ります.

cd /mnt/hd
mkdir dev tmp sys proc
chmod -v a+rwx tmp
cd
umount /mnt/hd
qemu-nbd --disconnect /dev/nbd0
rmmod nbd

仮想ディスクをブータブルに (GPT)

仮想ディスクを仮想マシンのホストで一つの仮想マシンのディスクとして登録します.次に,バックアップしたDebianと同じバージョンのインストーラーをダウンロードして,その仮想マシンのDVD/CDとして登録し,起動ディスクに指定します.

あとは,Advanced > Rescueとして,メニューに従って進めば,仕立てた仮想ディスクをルートにマウントしてくれるので,

dpkg-reconfigure grub-pc

とすれば,ブータブルになりますので,DVD/CDを外してディスクから起動させます.何かエラーが出たら修正します.

仮想ディスクをブータブルに(MBR)

仮想ディスクをGPTでなくてMBRでパーティションを切ってしまった場合,上記の方法ではうまく行かないかもしれません.この場合,筆者の標準的なパーティションはルートだけの一つになっています.

grub-install /dev/sda
grub-mkconfig -o /boot/grub/grub.cfg

で,うまく行くと思います.

起こりがちなエラー

エラーとしてありがちなのは,/etc/fstabに記したルートドライブの情報が仮想マシンの仮想ディスクとマッチしないことです.その場合は,もう一度レスキューモードにして,/etc/fstabを修正したうえで,dpkg-reconfigure grub-pcをやり直します.

ネットなどについては起動してから修正できます.

案外簡単です.

不定期的でも問題ないですが.

LIRC再び (2)

自分の記事を元にLIRCに再挑戦のつもりが,あまりに設定などに違いがあるので,他所様の記事を参考に設定完了までこぎつけました.

しかし,その先がいかんです.参考にした記事はsystemdではない😅

まあでも,そこだけ気をつければ行けそうです.

systemctl status lircd
sudo systemctl stop   lircd
mode2 -d /dev/lirc1

で,なんかそれらしいものを受信するようになりました.

次は目的のリモコンのコードの解析です.

LIRC再び

非常に重要かつ現実的な問題に対処するため,LIRCを再びインストールしてみます.

直面している問題は,睡眠時にエアコンをかけっぱなしにすると,明け方冷えてくることです.たぶん日が出ると室外機に日が当たるので,温度制御に誤差が出てくるのではないかと推測しています.

まず,恐ろしく陳腐化している筆者自身が6年前にまとめたRaspberry Pi (LIRC)を参考に始めます.

受信器を電源を3.3V, GNDはGND,信号出力はGPIO 18にそれぞれ接続しています.GPIOのピンレイアウトは公式サイトを参照するのが無難でしょう.

次に,ソフトウエアの準備です.Raspberry Pi OSの場合は,

apt install lirc

でインストールできます.また,/boot/firmware/config.txtの適当な場所に,

# For LIRC
dtoverlay=gpio-ir,gpio_pin=18
dtoverlay=gpio-ir-tx,gpio_pin=17

などと記述しておきます.そして,rebootしますが,

lsmod | grep lirc

しても何にもありません.やはりこの6年の間にずいぶん色々変わってしまったようです.新しいドキュメントを探すことにします.

秋月電子通商で購入した, “OSRB38C9AA” .
参考にしたページ: Raspberry Piと電子工作

本稿と参考にしたページとではピン接続が異なります.

ThunderbirdがDovecotに繋がらなくなった件 (解決済み)

自前のサーバーで動くLet’s Encryptの証明書をupdateしてからどうもクライアントであるThunderbirdの挙動がおかしくなりました.

TLSのimap (=imaps)でつないでいます.ログインはできて新着メールは読めるのだけれど読んだメールをサブディレクトリーに移そうとしてもうまく操作ができません.

Appleの iOSやmacOSの “Mail” では正常に動作します.

サーバーのログを見ると,

というのがあり,たぶんこれだと思います.ネット検索した所,どうもDovecotのSSL/TLS設定が良くなかったようです.これまで,/etc/dovecot/conf.d/10-ssl.confのssl_certの設定は,

ssl_cert = </etc/letsencrypt/live/FQDN/cert.pem

としていました.これでこれまでAppleの “Mail” (iOS, macOS)もThunderbirdもつながっていましたが,

ssl_cert = </etc/letsencrypt/live/FQDN/fullchain.pem

としないといけないようです😅

これで,サーバーのDovecotのログにエラーは出ず,Thunderbirdも正常にサブフォルダーをアクセスできるようになったようではあります.

しかし,違うマシンのThunderbirdでアクセスすると見えないサブフォルダーが存在するなど今いち動作の信頼に欠けます.

Distroによっては番号が違う場合があります.