1. LXC を用意
ここを参考にして LXC を用意する。条件は以下 (↓)。
コンテナ
項目 内容 備考 コンテナ名 xvfb - IP アドレス 10.0.3.11 - OS AlmaLinux 9.6 (Sage Margay)
amd64AlmaLinux10 では以下が未サポートなので 9 を使う。
- openbox や fluxbox 等の軽量ウィンドウマネージャ
- xorg-x11-server-Xvfb (Xvfb 本体)
- x11vnc (VNC サーバ)
VNC ポート 5901 慣習的に 5900 ~ 5909 を使う。(自由に変更して構わない)
本稿では Xvfb :1 としてディスプレイ番号 1 を使うためポート 5901 を開く。
親 OS (KVM のゲスト OS)
項目 内容 備考 ホスト名 guest1 KVM のゲスト OS として作成 IP アドレス 192.168.11.20 - OS AlmaLinux 10.0 (Purple Lion) 本稿記述時の最新版
PC
項目 内容 備考 IP アドレス 192.168.11.21 - Windows Windows11 Pro 24H2 - VNC クライアント TightVNC 2.8.85 (64-bit) ダウンロードはここから
2. ポート転送の設定
2-1. 親 OS からコンテナへポート転送する。
親 OS のポートへ接続してきたら、コンテナのポートへ転送する。(PC → 親:1159 → コンテナ:5901)2-2. コンテナで VNC サーバのポートを開ける。
guest1$ su
guest1# firewall-cmd --permanent --add-forward-port=port=1159:proto=tcp:toport=5901:toaddr=10.0.3.11
guest1# firewall-cmd --reload
guest1# firewall-cmd --list-forward-ports
guest1# exit
port=1159:proto=tcp:toport=5901:toaddr=10.0.3.11
guest1$
guest1$ ssh admin@10.0.3.11
xvfb$ su
xvfb# firewall-cmd --permanent --add-port=5901/tcp
xvfb# firewall-cmd --reload
xvfb# firewall-cmd --list-ports
xvfb# exit
5901/tcp
xvfb$
3. Xvfb と確認用アプリケーションをインストール
下記をすべてインストールすると (計算が合わないが) 約 1.2GB のディスク容量を必要とする。
3-1. Xvfb と漢字フォントをインストールする。
xvfb$ su3-2. 動作確認用アプリケーションをインストールする。
xvfb# dnf install -y epel-release # EPEL リポジトリ情報 (2.1MB)
xvfb# dnf config-manager --set-enabled crb # Code Ready Builder (開発者向けパッケージ) を有効にする
xvfb# dnf install -y xorg-x11-server-Xvfb x11vnc # Xvfb と x11vnc (199MB)
xvfb# dnf install -y google-noto-sans-cjk-ttc-fonts # 漢字フォント (125MB)
xvfb# dnf install -y openbox gtk3 gobject-introspection python3-gobject # ウィンドウマネージャ (289MB)
xvfb# dnf install -y xterm kmines # ターミナルエミュレータ、マインスイーパー(ゲーム) (333MB)
xvfb# exit
xvfb$
4. X の起動と VNC サーバのリンク
4-1. 仮想 X サーバを起動する。(X は元々仮想なので、仮想を強調するのもおかしいが…)
xvfb$ Xvfb :1 -screen 0 640x480x24 &4-2. X の画面「:1.0」を VNC にリンクする。(ポート 5901)
xvfb$ x11vnc -display :1.0 -rfbport 5901 -nopw &
5. X の中にアプリケーションを起動
openbox を画面「:1.0」に起動する。(ディスプレイ番号1、画面番号0)
xvfb$ DISPLAY=:1.0 openbox &
xterm を画面「:1.0」、座標 (10,20) に起動する。
xvfb$ DISPLAY=:1.0 xterm -geometry 80x24+10+20 &
マインスイーパーを画面「:1.0」、座標 (380,100) に起動する。
xvfb$ DISPLAY=:1.0 kmines -geometry 240x320+380+100 &
6. PC から VNC で接続
親 OS のポート 1159 に接続する。
ここでは TightVNC を使用する。
⇓
− □ × >_ Windows PowerShell × + | ∨
Windows PowerShell Copyright (C) Microsoft Corporation. All rights reserved. 新機能と改善のために最新の PowerShell をインストールしてください!https://aka.ms/PSWindows PS C:\> # TightVNC Viewer を起動する PS C:\> & "C:\Program Files\TightVNC\tvnviewer.exe" 192.168.11.20:1159 ⏎ PS C:\> exit ⏎