AdobeCreativeCloudをGPUで快適に使用したく、設定対象の機種がAPUとGPUを両方使える機種だったので、APUはホスト用、GPUを仮想マシンのWindows用に設定することにした。
ASUS ROG Flow x13 GV301QH AMD Ryzen 9 5900HS NVIDIA GeForce GTX 1650 Mobile / Max-Q Linux Mint 21 Vanessa virt-manager 4.0.0 QEMU 6.2.0
GPUのデバイスIDを確認する。
01:00.0 3D controller [0302]: NVIDIA Corporation TU117M [GeForce GTX 1650 Mobile / Max-Q] [10de:1f9d] (rev a1)
ArchWikiを参考にカーネルパラメーターに「amd_iommu=on」「iommu=pt」「vfio-pci.ids=[デバイスID]」を追加する。
… GRUB_CMDLINE_LINUX="amd_iommu=on iommu=pt vfio-pci.ids=10de:1f9d" …
GRUBの設定を更新してホストを再起動する。
# update-grub
Windowsの仮想マシンはvirt-managerを使用して作成した。
仮想マシンを作成してインストール前に設定変更 ファームウェアをUEFIに ハードウェアの追加でPCIホストデバイスのGPUを選択して追加 WindowsをインストールしてGPUが認識されていることを確認 ドライバなどをインストール Windowsのリモートデスクトップを有効化 LinuxからRDPクライアントで接続できることを確認 Windowsをシャットダウン 仮想マシンの詳細設定で「ディスプレイ Spice」を削除 Windowsを起動してRDPで接続し動作確認
利便性を考えてこんなスクリプトも作ってみた。起動中画面のアイコンを変えたかったらzenityに--class
付けてデスクトップエントリファイル(*.desktop)と関連付けて。
#!/bin/bash virsh start windows 1>/dev/null 2>/dev/null result=1 ( while [ ! "$result" = "0" ] do nc -v -w 1 windows-vm.local -z 3389 1>/dev/null 2>/dev/null result=$? sleep 1 done ) | zenity --progress --title="Windows起動中" --text="仮想マシンを起動中です…\n" --width=300 --height=50 --pulsate --auto-close --no-cancel remmina --connect=$HOME/.local/share/remmina/windows-vm-local.remmina 1>/dev/null 2>/dev/null