箱庭遊び13: Debianの仮想マシンの復元作業で連戦連敗

今年の読売の対阪神戦のようです

少し実用に近い作業をしていますが,昨日は使える時間をすべて使って取り組んだにも関わらず全く成果が得られませんでした.

何をしているかというと,某所で実用的に動いている仮想マシンが現在Debian 11.x Bullseyeのままなので,その某所のネットワーク管理者に叱られる前にDebian 12.x Bookwormにupgradeする必要があり,その下準備です.

その某所の仮想マシンについては,「ホストの管理者権限をもっていない」という大きな制約があります.したがって作業は慎重に慎重を重ねてやっていますが,これまで動かしてきた1年ちょっとの間に数回リブートできないトラブルに見舞われました.

そのうち1度はブートの仕組みをぶっ壊してしまい,手元にあるバックアップファイルから仮想ディスクを再構築して,仮想マシンのホストの管理者(以下「大家さん」)にSDカードに書き込んだ仮想ディスクを郵送して差し替えてもらいました.

残りのブート失敗はKVM/QEMUのバグで,何回かブートするとブートの一番最初のあたりで引っかかって先に進まないものです .このトラブルの場合には,大家さんに仮想マシンの強制リスタートをかけてもらえばたいていというかこれまでのところ全部解消してきました.

それで今回の話に戻りますが,しばらくその実用的なDebianの仮想マシンはいじっていないのて勘所をすっかり忘れています.そこで,そのマシンのバックアップから仮想ディスクを作り,仮想マシンとして起動して,Debian Bookwormまでupgradeをするという手順の確認と習熟を手持ちのマシンでするという非常に生産的な作業をしています.

最初は最新状態のManjaroで空の仮想ディスクを作ってext4にformatしてnbdでマウントしてバックアップをコピーし,Debian 12.1 (Bookworm)のインストールDVDイメージからchrootしてgrubのインストールを試みましたが,何度やっても自分で起動するようになりません.ときどき “unknown filesystem” っていうエラーメッセージが出ている事に気づきました.FEATURE_C12の呪いを忘れていました.

Debian 11.xの仮想ディスクはDebian 11.xでformatして作らないとNGです

それを思い出してから作業をしていますが,Debian 11.xのインストールDVDから仮想ディスクイメージにchrootする選択をして,grub-installなりupdate-grubをするとエラーなくコマンドは通るのですが,いざ仮想ディスクイメージからブートしようとしてもgrubのrescueモードになってしまい,コマンドラインを打ち込んでもKernel Panicで止まってしまいます.

寝ながらいろいろ考えましたが,既に考え得ることは全てやり尽くしたように思います.しかし,昨年,確かにバックアップの内容から仮想ディスクを作り直し,その仮想ディスクで現在サーバーが稼働しているわけですから,できないはずはないです.

一つ可能性があるとしたら,Debianのインストール用DVDイメージのchrootで,必要なおまじないをしていないのかもしれません.

ということで,今日時間が取れたら,DVDイメージのRescue Modeから起動しても仮想とディスクへのchrootは自分でおまじないをしてからしてみる,というのを試みてみます.

これまで散々悪行を尽くしてきたのにこの成績とは,って誰か言ってました.
筆者がいじっている仮想マシンのうち唯一の実用マシンです😓
昨年トラブったときにネット検索をしていくつか事例を見つけたのですが,今回は面倒なので調べません.
筆者の経験則としては,10回に1回程度でしょうか.
当然最新のmkfsにFEATURE_C12をdisableにするオプションがあるはずですが,今のところ発見できていません😓

箱庭遊び12: EFI+GRUBがうまく行かない

うまく行かない最大の理由は,よく理解していないということなのはよくわかっています😓

箱庭遊びの範囲がそもそもの定義である「仮想マシン遊び」から,第2WSの第2OSのパーティションでの遊びまで広がってしまいました.第2OSのパーティションもほぼ制約なく書き換えたり消したりできますので,ここもなし崩し的に箱庭の範囲に含めてます.

さて,何がしたいかというと,第2WSに積んでいる3機のマスストレージの,第1OSのブート用SSDではないマスストレージにEFIのパーティションを設けて,そこから第2OSをブートさせるということです.これは今夏の箱庭遊びを始める前にはできていました.

ここ数日は,バックアップ用の2TB HDDに設けたEFIパーティションを現在第2OSにしているUbuntuの/boot/efiにマウントして,いろいろ試していますが,うまくいきません.

今日からはVMの仮想ディスク保存用のSSDでできないかやってみます.

一応この辺を参考にしています.

workstation.
rootディスク用の1TB SSD, VM(仮想マシン)仮想ディスクを保存している2TB SSD, OSバックアップ用の2TB HDD.

箱庭遊び9: Slackware64 仮想マシンから実マシンへ移行

仮想マシンのSlackware64にfcitx5-mozcのインストールが成功しました.ローマ字入力しかできないなどと馬鹿な独り言を書いてしまいましたが,Mozcの設定のダイアログはコマンドラインから起動できることを思い出し,かな入力もできるようになりましたし,他のマシンで培った😓 ユーザー辞書のインポートもできました.

あとは,あきらめたSlackware 32bitの間借りしていた実マシンのパーティションに移植するだけです.コピーにはいつものように,qemu-nbdなどを使います.

Slackware 32bitのときと同じくManjaroのGRUBから起動できれば十分なので,お手軽簡単にManjaroから

update-grub

をかけてみましたが,うまくブートしてくれません.kernelモジュールがないと文句を言っているようなので,もとの仮想マシンの仮想ディスクのイメージを確認すると,KernelはSlackwareの最新パッチの5.15.117なのに,initrd.gz内のモジュールは初期の5.15.19のままです./boot/initrd-tree内に5.15.117のモジュールのツリーをコピーして,

mkinitrd

をしてみましたが,ブートしてくれません.なお,これだけの修正をするのに

仮想マシンの作業を終えて仮想マシンを止める
modprobe nbd      ← 初回のみ
qemu-nbd --connect /dev/nbd0 /仮想/マシンの/ディスクイメージ.qcow2
fdisk -l /dev/nbd0   ← ルートパーティションを確認する(初回のみ)
mount /dev/nbd0pなんとか /mnt/hd1 -oro
mount /dev/sdなんとか /mnt/hd2
rsync -artlvd /mnt/hd1/ /mnt/hd2/
場合によっては/mnt/hd2の修正作業
umount /mnt/hd1
umount /mnt/hd2
qemu-nbd --disconnect /dev/nbd0
update-grub
reboot

の作業が必要です.これでだめならまた仮想マシンのディスクの修正作業からやります.

Manjaroのgrub頼みはいったんあきらめて,chrootの手続きにより,Slackware64自身によるブートの仕組みをこしらえてみます.

第2 WS(workstation).
第2 OSの定位置.
Manjaroで,root権限です.
qemu-nbd --disconnect /dev/nbd0をしないと,Manjaroのgrubに/dev/nbd0なんとかがブート可能なパーティションとして追加されてしまいます.まあ,全部終わったら削除すればいい話かもしれませんが.

箱庭遊び8: Slackware64にfcitx5-Mozcをインストール

結論から言うと,難なくインストールできました.sbopkgで,fmt, zulu-openjdk17をインストールしてから,fcitx5, fcitx5-qt, fcitx5-gtk, fcitx5-configtoolとbuild & installして,最後にfcitx5-mozcをbuild & installで動きました.

たぶん,slackbuildスクリプトのメインテナーが自分で試しているホストがSlackware64なのだと思います.対してfcitx-mozcのメインテナー(別のかた)のホストは32bitなのでしょう.いずれも他のホストについては試されてなく,インストールできない(インストールできても動かない)ことを認識されていないのだと思います.

話は遡りますが,Slacware64 15.0は,仮想マシンとしてクリーンインストールしたものです.今回の作業前のsnapshotを撮ってから,上記の作業をしました.

めでたくMozcが動くようになりましたが,かな入力への切り替えが今のところできないので,使い物になりません.Mozcの設定のダイアログをどうやっても出せません.

設定ファィルを探し出して手で編集するか,かな入力ができているManjaroからコピーするか,など試してみます.

追記(2023/09/09)

Slackware (32bit版)では,fcitx5-mozcのインストールはできません.必要なパッケージの一つがbuildできません.fcitx-mozcはインストールできます.

ローマ字入力もできなくはないですが,罰ゲームというか,拷問というか😓

箱庭遊び7: Slackware仮想マシンの実マシン化 (4)

今日一日箱庭遊びをした結果,仮想マシンから実マシンに移行したSlackware 32bitは,ぐしゃぐしゃです.Slackbuildsに,fcitx5-mozcがあることに気が付き,使いにくいfcitx(4)-mozcと入れ替えようとしましたが,なかなか難航して,結局失敗しました.キーボードの “かな” キーを押すと「Mozc(使用不可)」というメッセージがカーソルの直下に出て,実際日本語が入力できません.

fcitx(4)-mozcが動く状態まで戻すには,箱庭なので😅 もう一度仮想マシンのコピーからすればいいのですが,いまさら面白くないので,今度はSlackware64の仮想マシンを実マシンに移行してみます.

Slackware64で,fcitx(4)-mozcは使えなかったので,fcitx5-mozcならば動くのではないかという淡い期待があります.

そうか,実マシンに移行する前にsnapshotを撮った上でfcitx5-mozcのbuildを試してみて,うまく行ったら実マシンに移行してみます.