当方の環境
ProxmoxVE 8.4.14
リポジトリ 6.8.12-17-pve
使用GPU Geforce GT710
注意事項
必ず VM がパススルーする GPU を使っていないことを確認してください。使用中に ROM を吸い出すことはできません。
また、 GPU がホストに見えていることを確認してください。( vfio-pci 管理下であればよい)
確認コマンドはこちらです。
lspci -nnk | grep -C 5 VGA
表示結果に Kernel driver in use: vfio-pci と表示されるか、 in use の行が存在しなければOKです。
PCIの確認
PCIの対象のアドレスは
lspci | grep -i nvidia
私の環境では
02:00.0 VGA compatible controller: NVIDIA Corporation GK208B [GeForce GT 710] (rev a1)
02:00.1 Audio device: NVIDIA Corporation GK208 HDMI/DP Audio Controller (rev a1)
と表示されたので 02:00.0 がターゲットとなります。
02 の場合が多いようですが、人によって異なるのでこの数字をメモしておいてください。
ROMの読み出し
Linux では、 PCI デバイスの ROM はデフォルトで読み取り不可なので一時的に有効化します。
echo 1 > /sys/bus/pci/devices/0000:02:00.0/rom
ここで、0000:02:00.0を先ほどメモしたidに合わせて修正してください。
ex) 0000:04:00.0
これでエラーが出ていないことを確認してください。
エラーが出たら注意事項を再読してください。それで解決しない場合は知らないです。
今、読み取り可能な状態にあります。
以下のコマンドで読み取ります。
cat /sys/bus/pci/devices/0000:02:00.0/rom > /root/GT710.rom
完了後以下のコマンドで必ず無効化してください。
echo 0 > /sys/bus/pci/devices/0000:02:00.0/rom
ROMファイルの確認
以下のコマンドでファイルが生成されていること、ファイルサイズが正常であることを確認してください。
ls -lh /root/GT710.rom
目安:
- サイズ:40KB ~ 256KB
- 0 bytes → 失敗
- 数MB → 異常(別物)
簡易チェック:
hexdump -C /root/GT710.rom | head
何かそれっぽいヘッダが表示されたらOKです。
ROMファイルの配置
/root/ からは直接読み込めないので以下のコマンドで配置します。
mv /root/GT710.rom /usr/share/kvm/GT710.rom
chmod 644 /usr/share/kvm/GT710.rom
VMにROMファイルを設定
VMの設定ファイルにromファイルを指定します。
私が使っている VM ID は 108 です。
vim /etc/pve/qemu-server/108.conf
以下の行を変更します。
hostpci0: 0000:02:00,pcie=1
ここに、romファイルの指定を書き加えて、
hostpci0: 0000:02:00,pcie=1,romfile=GT710.rom
:wq
宣伝
以上でROMの吸出しと設定の説明は終わりです。
私は、サーバー運営だけに限らず様々な記事を書いています。
もし興味があれば、ぜひとも工房鯖で知識を共有しましょう。