大多数の仮想マシンを壊す

Real Time Streaming Protocol (rtsp)をRaspberry Pi 3 Model B (RPi3)でどう見るかの続きです.

残念ながらManjaroは,RPi3では動かないようです.そこで今度は,Ubuntuを試すことにしました.まずはx86_64 (AMD64)で試してからの方が早いだろうと思い,第2 workstation (WS2)の仮想マシンのUbuntuを久しぶりに動かしてみました.いつupgradeしたか全く記憶にありませんでしたが,LTS 20.04になっていました.せっかくだからこの際,最新の22.04にしようと,ネット検索してやり方を探しながら試みました.で,最後のまじない,

do-release-upgrade

を実行していたところ,突然電源が切れました.すぐに何が起こったか解りました.もともと電源コードが緩いのです.ACスイッチをON/OFFすると電源コードにどうしても触れて,しばらく繰り返すと,プラグが外れてしまいます.

それが解っているので,電源ON/OFFの際プラグを押し込む様にしていますが,しばらく忘れていたところ,一番抜けてはいけないタイミングで抜けてしまいました😓

まあ,最近はjournaling file systemなので,途中でズバッと電源を切ったところで,ファイルシステム(FS)が壊れることは滅多にありません.しかし,do-release-upgradeの途中なのでdpkgデータベースがかなり深刻にダメージを受けているに違いありません.

実際,ネットの情報を調べてaptなんとかかんとかしても,全然前進しません.こういうときのために,バックアップを取ってあります.

しかし,そのバックアップのディスクイメージをコピーすると, “input/output error” とかなんとか言ってコピーできません.rsyncでもcpでもだめです

心配になってそのディスクにあるファイルを調べてみると,ここ1年以内に作ったqcow2以外のqcow2が皆同じエラーを出します.

最初はSSDの問題か,マザーボードのインターフェースの問題か,あるいはSSDとマザーボードの相性の問題か,などと考え,問題のSSDをUSBエンクロージャーに入れて,Raspberry Pi 4 Model B (RPi4)につないでcpやrsyncを試しましたが,同じエラーが出ます.

ということで,ここ1年より前に作った,まあ,知的資産のqcow2は全滅のようです.ほとんどここ数年触っていないファイルで,今回の電源断の時もリードオンリーでさえ開いていないので,電源断が問題とは思えません.

まあ,古い仮想マシンの仮想ディスクなんか,滅多に役に立つことはないので,実害はないのですが,長年熟成してきたのに寂しい気はします.

md5sumでも同様のエラーが出ます.

Slackware 15でMozcは,〇32bit, ×64bit

2023/08/22の注: 後にfcitx5-MozcのSlackbuildsスクリプトがJW(Shinichi Abe)さんにより登録され,64bit環境で使用できることが確認できました

Slackware 14.2用にMozcのビルドスクリプトを作成されたクロさんが,Slackware 15用も作成され,SlackBuildsに登録されていました.

当BLOGにとりとめなく書いてますが,現在Slackwareは,SlackwareARM 15をサーバー用に使用していますが,GUIにいろいろ不具合や不足があるため,CUIで使用しています.

x86用,AMD64用については,つい最近まで15のインストールは試していませんでした.

ふと思って,数日前からSlackware64 15をKVM/QEMUとVMWare Fusionそれぞれの環境にインストールして試しはじめました.

日本語入力は,fcitx-anthyがお仕着せで着いてきますが,やはりMozcをインストールしたいところです.

そこで,SlackBuildsを見ると,Mozcのビルドスクリプトをクロさんが既に用意して下さっていることを知りました.

まず,VMWare Fusionのほうで,

sbopkg -b fcitx-mozc

を実行すると,少々時間はかかりますが,無事ビルドが成功します.そこで,installpkgでできあがったパッケージをインスールしました.

設定については省略しますが,ちゃんと起動して,トレイにMozcのアイコンがでますが,残念ながらキー入力しても,英数キーに対応した半角文字が表示されるのみです

試しに,32bitのオリジナルであるSlackware 15の仮想マシンをKVM/QEMUのほうに仕立てて,fcitx-mozcを同様にインストールすると,ちゃんと使えます.

Slackware 15 (オリジナルの32bit版)では,Mozcは正常に機能する

念のため,KVM/QEMU環境でインストールしたSlackware64 15の方でも試しましたが,同じようにパッケージはできてインストールできて,トレイにアイコンが出ますが,日本語入力はできませんでした.

ということで,64bitについては,ビルドスクリプトに何か64bit用のhackが必要なのでしょう.Slackwareに対する熱量もずいぶん下がってしまいましたし,多少熱量があっても全然解りそうもないので,あきらめます.

SDDMが機能しない,Konquerorなど一部のソフトが動かない.
Slackware 15やSlackware64 15に用意されているFirefox-ESRがなく,Konquerorが動かないことから,使用可能なWebブラウザが存在しない.
細かい話なので省略していますが,zinniaはfcitx-mozcの前にbuild & installしてあります.

実マシンの仮想化 Lesson 4 起動のまじない(grub)

実マシンから,仮想ディスクにまるまるコピーできたら,あとは若干のまじないが必要です.

一つは,まじないというより即物的な設定で,/etc/fstabの書き換えです.とりあえずは,仮想ディスクを/dev/sdaとして設定しておきます.この作業はコピーが終了したら仮想ディスクのイメージをマウントしたまま作業した方が楽です,というか,他にやりようがないです

次は一番肝心なgrubのインストールです.grubをインストールするためには,そのターゲットとなるディスクから起動した環境が必要となります.しかし,まだ起動の仕組みがないので自力ではできません.そのためにchrootを利用しますが,色々ややこしいので,後で自分でわかるように,固定ページに書いときました.

ちなみに,Slackwareの場合は,インストールDVDイメージから起動する際に,ルートパーティションを指定できるので,chrootしなくてもgrubのインストールができます.

ターゲットのパーティションをルートにできたら,ルート権限で,

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

実行します.これは,Slackware, Manjaro, Debian共通です.

これで,実マシンからコンバートした仮想マシンが起動しますが,Debianでは

sudo update-initramfs -u

を実行するなど,多少のチューニングが必要です.

Manjaroの実マシンの中で,仮想化したManjaroを動かしている様子.
インストール用DVDイメージから起動して,マウントしてという方法がないわけではないですが,活きているWSに,それもマウント済ですから,それを利用しない手はないです.

実マシンの仮想化 Lesson 3 ディスクのコピーのやり直し

コピーは終わりましたが, “BIOS boot” というパーティションを作っていないことを思い出して,パーティションを切り直すことにしました.

しかし,これまでupdate不能状態とは言え,その “BIOS boot” パーティションなしで動いていたのに必要なのか,と疑問がわきました.たぶん,今まではDOSパーティションだったので不要だったのでしょう.gptで “BIOS boot” パーティションを含むようにしてパーティションを切り直し,必然的にルートのパーティションをフォーマットし直しました.

もう一度,qcow2型式のルートパーティションをマウントして,念のためにリードオンリーでマウントしたコピー元になる実マシンのManjaroのパーティションからrsyncでコピーしました.

そういえば,以前はnbdで接続したディスクイメージをマウントする場合,mountコマンドにオフセット指定が必要でしたが,最近は改善されて,

mount  /mnt/nbd  /dev/nbd0p2

と,そのままマウントできるようになりました.人間がますますバカになります😥

実マシンの仮想化 Lesson 2 ディスクのコピー

コピーに使用する実マシンは,第2 Workstation(WS)の第2 OSであるDebianです.

ディスクイメージは,今回update不能と判断したqcow2を使います.formatはしません.まるまるコピーするときはformatしたほうがあとのコピーが速いケースが多いですが,update不能なほど古いとはいえManjaro同士なので多少そのまま使えるファイルがあってコピーが早く済むかなと期待しました.

実Manjaro (第2 WSの第1 OS)を念の為read onlyで,Debianにマウントし,仮想ディスクは,nbdのモジュールを使って,write enableでマウントしました.

コピーはrsyncでします.

実マシンのディスクスペースは400GBなのに対して仮想マシンは80GBしかないので,Raspberry Piのバックアップや,ISOファイルづくりの過程や完成品などはコピーしないよう,rsyncのフィルター設定をしました.

途中でなんか余計なもののコピーを始めたら,とめて,フィルターを追加してまたコピーし直すというのができるのが,rsyncでするコピーの大きなメリットです.

20分ほどでコピーが終わったので,/etc/fdiskを修正して今夜は終わりにします.