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完了後に再インストールしておきました.何に使うかよくわかりませんが😓

実マシンの仮想化 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を修正して今夜は終わりにします.

実マシンの仮想化 Lesson 1 予習

振り返ると,一昨年末から昨年初めくらいにかけて,仮想マシンの実マシン化,実マシンの仮想マシン化をしていたようです

手順としては,

  • qcow2のディスクイメージを作るかどこからか持ってきて,パーティションを切って,formatする
  • メインディスクの部分を実マシンにマウントして,rsyncで実マシンの内容をコピーする(/devに注意が必要)
  • 起動の仕組みをなんとかする

です.しかし,考えてみると/devの中身はディスクが活きているとudevがマウントされていて,起動に必要不可欠なディバイスがない可能性があります.

そこで,別の実マシンを起動して,実マシンのディスクも読み込み専用にして,コピーすることにします.そのためというわけではないですが,サブマシンは,dual bootできるようになってますから,その利便性を活用しない手はないです.死んだディスクから死んだディスクへのコピーですから,/devなども何も考えないでコピーできます(完全なクローニング).

となると,起動の仕組みをなんとかするのが唯一頭を使う作業です.クローニングした仮想ディスクイメージをマウントして,chrootしてちょちょいのちょいと行きたいところですが,実マシンはUEFIのgrubで起動していますが,仮想マシン環境でUEFIの環境を整えるのはかなり困難なようなので整えていませんからコピー先の仮想マシンの仮想ディスクのマウントポイントにchrootしてgrubのインストールコマンドを実行すると,UEFIでないgrubがちゃんとインストールはされないはずです.

じゃどうすればいいかというと,たぶん,ManjaroのインストールDVDイメージから起動してそこにクローニング完了した仮想ディスクをマウントしてchrootしてgrubのインストールコマンドを実行すれば良いのだと思います.

と思ったけど,当BLOGの記事を調べてもよく解りません.そんなに昔じゃないけどすっかり忘れた感じです.