LD_PRELOAD を使い WSL2 と X410 を接続する。
コンテンツ
LD_PRELOAD
を使い WSL2 と X410 を接続する。
TLDR
次のように実行時環境変数 LD_PRELOAD
を変更する。これによりシステムの shared object file を置き換えずに VSOCK 対応の XCB library を利用する。
|
|
なお HOME/lib/libxcb-1.14-vsock-x64/libxcb.so.1.1.0
は https://gitlab.com/vsockfy/libxcb-1.14-vsock/-/releases/v1.14-vsock のVSOCK 対応 XCB ライブラリを展開したもの。
TCP と VSOCK
WSL2 と X410 を接続する方法は TCP と VSOCK がある。
TCP は特別な準備なし使えるため手軽である。しかし、TCP/IP に問題が発生すると WSL2 の GUI アプリケーションも影響を受けてしまう。例えば、ノートPC の WIFI 接続が切れると、WSL2 の GUI アプリケーションが終了してしまう。
VSOCK は仮想マシンとホスト間で通信するためのアドレスファミリ。VMware, KVM, Hyper-V に対応している。TCP/IP に依存しないため上記のような問題はない。一方で VSOCK を使うための準備が必要である。
VSOCK 利用のための準備
公式サイト https://x410.dev/cookbook/wsl/using-x410-with-wsl2/ に2つの方法が紹介されている。コマンド socat
をバックグランドで実行する方法と X protocol C-language Binding (XCB) ライブラリに手を加える方法である。公式サイトではシステムの XCB ライブラリの shared object libxcb.so.1.1.0
を置き換える手順を紹介している(https://x410.dev/cookbook/transparently-adding-native-support-for-vsock-in-x11-apps/)。
バックグラウンドでプログラムを実行するのは面倒である(二重起動の防止や死活監視など)。 一方、システムのパッケージマネージャに管理されている shared object を置き換えるのも、できれば避けたい。
この問題は LD_PRELOAD
を使い参照されるライブラリを上書きすることで解決できる。具体的な方法は冒頭に記載した通りである。
作成者 Toru Mano
最終更新時刻 2023-01-01 (c70d5a1)