libvirt: monolithic vs modular

libvirt(d)のドキュメントなどを少し読んでます.

もともとlibvirtdは,1つのデーモンで何でもこなすようになっていたようですが,最近では,機能別にモジュール化したデーモンを使う方向に移行しているそうです.

QEMUをhypervisorとするときの担当daemonは,virtqemudだということです.Gentoo(AMD64)の/usr/sbinを覗くと,

ls -l /usr/sbin/virt*
-rwxr-xr-x 1 root root 482520 Feb  7 09:09 /usr/sbin/virtinterfaced
-rwxr-xr-x 1 root root  81272 Feb  7 09:09 /usr/sbin/virtlockd
-rwxr-xr-x 1 root root  81080 Feb  7 09:09 /usr/sbin/virtlogd
-rwxr-xr-x 1 root root 482520 Feb  7 09:09 /usr/sbin/virtnetworkd
-rwxr-xr-x 1 root root 482520 Feb  7 09:09 /usr/sbin/virtnodedevd
-rwxr-xr-x 1 root root 482520 Feb  7 09:09 /usr/sbin/virtnwfilterd
-rwxr-xr-x 1 root root 486616 Feb  7 09:09 /usr/sbin/virtproxyd
-rwxr-xr-x 1 root root 482520 Feb  7 09:09 /usr/sbin/virtqemud
-rwxr-xr-x 1 root root 482520 Feb  7 09:09 /usr/sbin/virtsecretd
-rwxr-xr-x 1 root root 482520 Feb  7 09:09 /usr/sbin/virtstoraged

てな具合です.一方,macOSでは,

ls -l /opt/local/sbin/virt*
-rwxr-xr-x 1 root admin 79152 8 4 2020 /opt/local/sbin/virtlockd
-rwxr-xr-x 1 root admin 80424 8 4 2020 /opt/local/sbin/virtlogd
-rwxr-xr-x 1 root admin 439400 8 4 2020 /opt/local/sbin/virtproxyd
-rwxr-xr-x 1 root admin 434832 8 4 2020 /opt/local/sbin/virtsecretd
-rwxr-xr-x 1 root admin 434832 8 4 2020 /opt/local/sbin/virtstoraged
-rwxr-xr-x 1 root admin 434832 8 4 2020 /opt/local/sbin/virtvboxd

です.virtqemudやvirtnetworkdなどがありません.当然,同時にbuildされた,monolithicなlibvirtdにも,virtqemudなどの機能は含まれていないと想像できます.

macOSで,KVMが機能しないのは解りますが,QEMUも動かないんでしょうか.かつて,Qという,QEMUのアプリがありましたからそうではないと思います.が,MacPortsの中身がさっぱり解らないので,お手上げです.

VirtualBoxは削除

ちなみに,VirtualBoxで動くGentooは,あいかわらずSegfault乱発で,まともに動いてくれないので,削除しました.

MacでQEMUは難航

MacPortsもなんにも知らないで使ってきたのですが,GentooのUSEflagに似たような,Variantというのがあるのを知りました.

MacPortsでは,理由は知りませんが,Apple謹製のXQuartzに変えて,MacPortsによるXorgの移植品を使う方向に切り替えつつあるようです(当社調べ).

で,どうも,Virt-Managerに関連したソフトの一つが,もはやXQuartzをサポートせず,Xorgのみに対応しているようです.そこで,

/opt/local/etc/macports/variants.conf

に,なんやかんや書くようなのですが,どうしたわけか,記憶と実態とが違っているので,中身を掲載するのはやめます(あとで,はっきり理由がわかったら掲載します).

で,なんやかんや書いて,virt-managerまでbuildできて動くのですが,libvirtdを動かしているにもかかわらず,virt-managerで接続しようとしても,繋がりません.

macOSで,virsh uriをroot権限で実行すると,

virsh uri
error: failed to connect to the hypervisor
error: internal error: Failed to create vbox driver object.

という具合にエラーになります.Gentooの実マシンで同様にvirsh uriを実行すると,

virsh uri
qemu:///system

と,教科書通りに出ます.

virsh -Vは,macOSでは,

virsh -V
Virsh command line tool of libvirt 6.6.0
See web site at https://libvirt.org/

Compiled with support for:
Hypervisors: VMware VirtualBox ESX Test
Networking: Remote
Storage: Dir
Miscellaneous: Daemon Secrets Debug Readline

となり,一方Gentooの実マシンは,

virsh -V
Virsh command line tool of libvirt 6.8.0
See web site at https://libvirt.org/

Compiled with support for:
Hypervisors: QEMU/KVM VMware ESX Test
Networking: Remote Network Bridging Interface udev Nwfilter VirtualPort
Storage: Dir Filesystem SCSI
Miscellaneous: Daemon Nodedev Secrets Debug Readline

大きな違いは,MacPort (macOS)のほうは,HypervisorsにQEMUが含まれていないことでしょう.

これが,virsh uriでエラーになり,virt-managerが接続できない原因でしょう.

さて,どうしていいか,さっぱりわからない😥

いろいろ扱いにくいんでしょうね.知らんけど.

Web cam買いました

USB接続でパソコンにつないでweb会議するのに使うやつです😓

大昔に,Kensingtonのものを2種類くらい買ってずいぶん長く使っていました.その頃の印象が強いので,USB web camはそんなにいいもんじゃないように思っていました.

コロナ禍でも,web会議に参加することはそんなにないのですが,Macbookで2度ほど,あと1度はiPhoneを使いました.

Macbookの内蔵カメラは解像度が低くいのは残念ですが,使用するのは楽です.iPhoneも手軽ではありますが,参加者の顔が小さくしか見えないは残念です.モニターをつなぐ手もありますが,使用中はiPhone本体もかなり熱を持つので,それなら,パソコン(というかMac mini)にカメラをつないだ方が良かろうと言うことで,久しぶりにUSB web camを買うことにしたわけです.

時代が時代なので,選択肢が多くて決断するまで悩みましたが,値段とブランドでLogcool (Logitech)の実売価格3,000円の,C505にしました.

SVGAとかのKensingtonのものと比較すると画質は雲泥の差ですね.コンパクトで,モニターの上部に簡単にセットできますし.

モニターの下に置いてもテストしましたが,けっこう目線を下げ続けるのはつらいので上で行くことにしました.

Logicool C505 USB web cam
今は,カメラ類は扱ってないようです.

Gentoo RPi (4) やっと動く

電流不足の見立ては正解なようで,Raspberry Pi(RPi)4とUSB-SSDの間にSelf-powered HUBを入れることで,安定してSSDからブートするようになり,途中でSSDがdisconnectすることもなくなりました.

やっと,RPi 4が自力で動けるようになりました.

ブートすれば,あとは普通のAMD64やx86マシン同様,systemdのハンドブックに従い,まずはネットの設定をしてから,その他の設定をしていけば良いはずです.

しかし,ネットの設定ではまりました.同ハンドブックには,

/etc/systemd/network/50-dhcp.network

[Match]
Name=en*
 
[Network]
DHCP=yes

とありますが,これをこのままコピーしてしました.

最初は話を簡単にするために,有線のLANにつないでいます.Raspberry Pi 4の場合,正解は,

Name=eth*

です.ip aコマンドで,eth0になっていることを何度も確認しているのに,このファイルの内容との不整合に気がつきませんでした.

一時は,ネットがつながらないならQEMUを使ったクロスプラットフォームによるchrootでインストールを続けようと試みようとしましたが,内容が古くてだめでした(/usr/portageなんか使っている).

あとで思えば,なんでこんなところでと悔やまれます.もちろん,RPiいじりを一日中やっているわけではありませんが,これで,1日くらいロスしました.

ネットにつながれば,それこそsystemdやおおもとのハンドブックの手順で設定していけます.

しかし,遅い😓

今,rustとかいう言語ツールのコンパイル中ですが,rustc自身がツールの何かひとつをコンパイルするのに,2つのCPUをフルに使い,メモリーを4割使って既に80分以上コンパイル中です.他の3つのタスクも長時間多くのメモリーを使い,swap領域もかなり使っています.これじゃ時間がかかるわけです.

はたしていつ終わるのだろうか😓

Gentoo (15) 迷走中

現状として、サブのWSであるところのSlackware 64のマシンで動かしている、KVM/QEMU環境内にインストールしたGentoo AMD64 systemdには、日本語入力、webブラウザーそしてメールソフトをインストールして、WSとして9割がたの仕事が出きるようになりました。

まあ、細かい点をいえば、Anthyによる日本語入力は効率が悪すぎるし、仮想マシンなので大家の実マシンよりはもさもさ感があり、敢えて仮想マシンを動かして仮想WSとする必要があるのか大いに疑問です。

つまるところ、むかし、はまり込んでいた、Linuxインストール遊びだったんです。ここまでくればおしまいです。あとは消して別のdistroをインストールすればよいです。ああ、箱庭遊びといってもいい。

メンテ性については、DebianとかUbuntuのように、updateをバイナリーで持ってくる方が現実的ですね。Gentooでは、updateのコマンドを実行すれば、あとは自動でコンパイルしてくれ、手間はかかりませんが時間がかかります。

だから、陳腐化して困っているSlackwareの後がまに据えるdistroの候補としては、Debianより有力とは言い難いです。

筆者の現有のPCのうちで、もっともパワーがあるのは、Mac miniなのですが、そのゲストとして動くLinux WSとしての可能性はあります。ところが、VMWare Fusion下では、画面の解像度を800×600以外に設定できません。今時800×600では、何の仕事もできません。

そこで、VirtualBoxを思い出して、Gentooを1からインストールし直してみたり、ほぼ完成したKVM/QEMUのqcow2をVMDKにコンバートして稼働させてみたり、いろいろやっていますが、エミュレーターが安定しません。すぐ落ちます

ということで、KVM/QEMU下では、ほぼ十分なところまで来ましたが、WSとしての価値は見出せないし、Mac miniの有り余るパワーを活用して動かすLinux WSとしては技術的な壁に突き当たっている状況です。

2TBのHDD上で動いているので消す必要もないですが。
VMWareの機能拡張とVirtualBoxがコンフリクトしている感じもしますが、そもそも無料のVirtualBoxを使わないで有料のVMWare Fusionを長年使っているのは、このあたりに原因があったのかもしれません。まったく思い出せませんが。