SVX日記
2024-10-31(Thu) 宇宙を目指してリモートデスクトップ
自分は自宅でも職場でも主にFedoraのMATEデスクトップ環境を使って作業をしているのだが、自宅のメインマシンであるThinkPad A285がそろそろピンチである。
「四の五の言わんとカーネル上げるんだよゴルァッ!!」と客に叫びまくっている割には、自分の環境はFedora30に5年以上も塩漬けである。いや、だってねぇ、デスクトップ環境を整備すんのは面倒なのよ。ちょっとずつ変わるから、常に同じ方法で同じ使い勝手が維持できるとは限らないし。せめて、前の環境を残しつつ切り替えられればいいけれど、前に試したらうまくいかなかったし。
オフィシャルにリリースをアップグレードする方法があればいいのに……と、思ったら、 最近はあるのか。でもなぁ。こういうのは失敗しがちだからなぁ。バックアップしたとて、環境が壊れたら戻るわけでもないし。
しかし、Firefoxが古いからか、見えないページの割合が増えてきた。Chromeを入れて凌いできたが、そのChromeもサポート外ディストリだと騒ぎ始める始末。そして、決定打はFactorio。Space Ageが出たので、最新バージョンに上げたら動きゃしない。glibcが古すぎるんだと。いや、まったくそのとおりなんですが。
こうなったら、先日のワーケーションで活躍してもらったミニPCにリモートデスクトップ環境を立ち上げ、そいつがそこそこ使い物になったら、そのノウハウをフィードバックして、メインマシンを最新のFedoraに上げる、という手順を踏むしかない。急げ、Space Ageという、宇宙ガ、マルゴト、マッテイル、のだ。
ミニPCにはFedora40が入っているが、別にたいして磨いてもいない壊れてもいい環境なので、ついでに上記のアップグレードを試してみた。工房は1階、ミニPCは2階にあるので、横着してリモートで作業したのだが、問題なくFedora41に上がった。なるほど。で、xrdpをインストールして、リモートから接続……しても、いつまでも画面真っ黒なんですが……。
そうだ。自分にはcrdplusというテもあったんだ、と、Fedora39の環境を立ち上げるが、同じ症状。なんだよもー、ごもー、ろくもー。
リモートデスクトップは、だいぶ前から幾度となく構築しているが、いつも引っかかるんだよなぁ。今回は何だよ……ということで、調べ始める……つうても、どこを調べればいいのか。そこそこの試行錯誤の後、プロセスの状態に不審な点があることに気づいた。
# pstree -p
systemd(1)-+
:
|-xrdp(406)---xrdp(448)
`-xrdp-sesman(402)---xrdp-sesexec(449)-+-Xvnc(460)-+-{Xvnc}(465)
| `-{Xvnc}(466)
|-startwm-bash.sh(468)---startwm-bash.sh(514)-+-glxinfo(515)-+-{glxinfo}(519)
| | |-{glxinfo}(520)
| | |-{glxinfo}(521)
| | `-{glxinfo}(522)
| |-grep(516)
| |-head(517)
| `-sed(518)
`-xrdp-chansrv(469)---{xrdp-chansrv}(470)
glxinfoってなんや。grep, head, sedを従えているのも極めて怪しい。んー、殺すか。死ね、glxinfo。と、killするとリモートデスクトップ画面にデスクトップが現れた。そりゃいったい、どういう理屈やねん。glxinfoが起動処理を止めていた?
起動の都度、glxinfoを殺してもいいんだが、シリアルキラーになるのも気分が良くない。もっとスマートな回避手段はないのものか、と、調べに調べていると、ようやくglxinfoを呼び出している部分が見つかった。確かに、grep, head, sedを従えている。
# cat /etc/X11/xinit/xinitrc.d/10-qt5-check-opengl2.sh
#!/usr/bin/bash
if [ -z "$QT_XCB_FORCE_SOFTWARE_OPENGL" ]; then
QT5_CHECK_OPENGL_VERSION=`LANG=C glxinfo 2> /dev/null | grep '^OpenGL version string: ' | head -n 1 | sed -e 's/^OpenGL version string: \([0-9]\).*$/\1/g'` ||:
if [ "$QT5_CHECK_OPENGL_VERSION" == "1" ]; then
QT_XCB_FORCE_SOFTWARE_OPENGL=1
export QT_XCB_FORCE_SOFTWARE_OPENGL
fi
unset QT5_CHECK_OPENGL_VERSION
なんかよーわからんが、QtにOpenGLの状態を伝える処理っぽい。「QT_XCB_FORCE_SOFTWARE_OPENGL=1」だとアクセラレーションが無効化されるらしい。glxinfoが止まるのがよくないのだろうが、QT_XCB_FORCE_SOFTWARE_OPENGLをどこかで手動で設定すれば、処理をスキップできる。
# tail ~user/.bashrc
:
export QT_XCB_FORCE_SOFTWARE_OPENGL=1