Azure Linux VMでGPUが使えるGUI環境を構築してみる
2020-02-19
azblob://2022/11/11/eyecatch/2020-02-19-azure-vm-gpu-vnc-000.jpg

こんにちは、Ubuntuと日々戦っている石川です。AzureのVM(Ubuntu 18.04)でGPUアクセラレーションを有効にしたGUI環境を整える必要があり、どうにか確立できたのでメモ程度ですが記事にしておきます。

そもそもAzureのVMには(VM側から見た)ディスプレイが存在しないためちょっと変なことをしないとハードウェアアクセラレーションが効かないようです。

物理的に接続されているデバイスがないのでHeadless環境とも言うそうです。

もくじ

  1. GPUドライバのインストール
  2. 必要なソフトのインストール
  3. ドライバ等の設定
  4. VNCサーバの起動

1. GPUドライバのインストール

GPUがあってもドライバがないとどうしようもありません。

少し前の記事を参考にインストールします。

sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt install -y ubuntu-drivers-common
ubuntu-drivers devices
sudo apt install -y nvidia-driver-440

2. 必要なソフトのインストール

AzureのVMにインストールされるUbuntuはServer版なのでGUI環境がありません。

まずGUI環境をインストールします。

# ubuntu desktopのインストール
sudo apt install -y ubuntu-desktop

インストールしたんですが、Ubuntu標準のGUIではうまいこと動かないのでXfce4をインストールします。

# Xfce4のインストール
sudo apt install -y xfce4 xfce4-goodies

次にディスプレイマネージャーをインストールします。標準のGDM3ではこれまたうまいこと動かないのでこいつも必須です。

# lightdmのインストール
sudo apt install -y lightdm

インストール時に使用するディスプレイマネージャーを選択する画面が現れるのでlightdmを選択しましょう。

最後にVNCサーバーをインストールします。

# x11vncのインストール
sudo apt install -y x11vnc

3. ドライバ等の設定

必要なものを入れてしまったので設定していきます。

まずはXサーバーの設定です。nvidia-xconfigで割と楽に生成してもらえます。

# nvidia-xconfigでxorg.confを生成
sudo nvidia-xconfig -a --virtual=1920x1080 --allow-empty-initial-configuration --use-display-device="DFP-0" --connected-monitor="DFP-0" --custom-edid="DFP-0:/etc/X11/edid.txt"

実際に存在しないモニタに対して描画を行うのでちょっと項目が多くなっています。

モニタのパラメータ?ファイルを/etc/X11/edid.txtに記述する必要があります。

00 ff ff ff ff ff ff 00 1e 6d f5 56 71 ca 04 00 05 14 01 03 80 35 1e 78 0a ae c5 a2 57 4a 9c 25 12 50 54 21 08 00 b3 00 81 80 81 40 01 01 01 01 01 01 01 01 01 01 1a 36 80 a0 70 38 1f 40 30 20 35 00 13 2b 21 00 00 1a 02 3a 80 18 71 38 2d 40 58 2c 45 00 13 2b 21 00 00 1e 00 00 00 fd 00 38 3d 1e 53 0f 00 0a 20 20 20 20 20 20 00 00 00 fc 00 57 32 34 35 33 0a 20 20 20 20 20 20 20 01 3d 02 03 21 f1 4e 90 04 03 01 14 12 05 1f 10 13 00 00 00 00 23 09 07 07 83 01 00 00 65 03 0c 00 10 00 02 3a 80 18 71 38 2d 40 58 2c 45 00 13 2b 21 00 00 1e 01 1d 80 18 71 1c 16 20 58 2c 25 00 13 2b 21 00 00 9e 01 1d 00 72 51 d0 1e 20 6e 28 55 00 13 2b 21 00 00 1e 8c 0a d0 8a 20 e0 2d 10 10 3e 96 00 13 2b 21 00 00 18 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 26

次にVNCパスワードの設定をします。

# VNCパスワードの設定
x11vnc -storepasswd

入力を求められるので入力して保存するとOKです。

これで準備完了です。

4. VNCサーバーの起動

# VNCサーバーの起動
x11vnc -auth guess -display :0.0 -rfbauth .vnc/passwd -rfbport 5900 -forever -loop -noxdamage -repeat -shared

起動して適当なVNCクライアントから接続できれば成功です。

上の起動コマンドでは5900/TCPでVNC接続を待ち受けます。

試しに繋いでみます。

まずはポート開放。

接続時にパスワードを求められますがx11vnc -storepasswdで指定したパスワードを入力。

ログイン画面が見えました。ユーザー名の横の白い丸からXfceを選択してログインするといい感じのデスクトップが使えます。

おわり。

参考にさせていただいたサイト様