SVX日記

2004|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|05|06|07|08|09|10|11|12|
2020|01|02|03|04|05|06|07|08|09|10|11|12|
2021|01|02|03|04|05|06|07|08|09|10|11|12|
2022|01|02|03|04|05|06|07|08|09|10|11|12|
2023|01|02|03|04|05|06|07|08|09|10|11|12|
2024|01|02|03|04|05|06|07|08|09|10|11|

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をどこかで手動で設定すれば、処理をスキップできる。

  これまた、どこに書くのが適切なのか、散々に処理を追った挙げ句、ユーザの.bashrcに書けることがわかった。それがベストかはしらん。

# tail ~user/.bashrc
 :
export QT_XCB_FORCE_SOFTWARE_OPENGL=1

  つうかこれ、よく考えたら、そう他で起きるとも思えんな……。