バックアップディスクが不調になったのとほぼ同時にDebianがブートしなくなったのは偶然ではない

何言ってるか解らない題だと思いますが,自分宛のメモです.

現在Linux WSの第1 OSはManjaro,第2 OSはDebianです.両OSは同じ1TBのSSDのパーティションにあります(だいたい半分ずつ).このほか仮想マシン(KVM/QEMU)のディスクイメージを保存するのに2TB SSDを,そのディスクイメージをバックアップするために3TB HDDを,ManjaroとDebian本体をバックアップするのに2TB HDDを使用してきました

そのバックアップ用の2TB HDDが数日前から不調で,バックアップのためマウントしようとしても出来ません.取り出して外部のSATA用のアダプターに接続したら読み出すことが出来たので,手持ちの1TB SSD 2基に中身をコピーしました.

この不調が生じたのとほぼ同時期からDebianがブートしなくなりました.

よく考えてみると,Debianはバックアップ用のHDDの第1パーティションをEFIに使っているのです.メインOSのManjaroが自分のドライブの第1パーティションとしているのでDebianはそこを使えないためです.

もちろんManjaroのEFIから導かれたGRUBにはDebianも表示されますが,Debianが主体のEFI/GRUBがあった方が便利です

このため,DebianのEFI/GRUBが置かれたバックアップ用の2TB HDDが不調になったらDebianはブートできないのです(起動時にマウントすべきEFIパーティションが見つからないため).

2TB HDDの後任には2TB SSDを新規購入してあてがいました.今どき2TBだとSSDはHDDとほとんど値段が変わらなくて驚きました.

故障したSeagateの2TB HDDと新規購入したOricoの2TB SSD

2基の1TB SSDに待避したバックアップの中身を新規購入したSSDへコピーしましたが速いです.なんか,バックアップ用にするのはちょっともったいない気もします.

4基ともPCの筐体内に設置してあります.
とはいえなかなか煩雑ではあります.

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と電子工作

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