Open7

Proxmox構築メモ

でぶねこでぶねこ

目的

  • Proxmoxを使用し、一台のPCでWindowsやLinuxの構築を行う
  • WindowsにはGPUパススルーを使用してGPUを使用できるようにする
  • GPUはAMDのiGPU(760M)でも使用できるようにする

環境

  • CPU:AMD 8600G
  • ベアボーン:DeskMini X600
でぶねこでぶねこ

Proxmoxのインストールと初期設定

インストール

初期設定

  • サブスクリプション契約でないリポジトリを使用する
  • ホストのSSH接続に鍵認証を使用するようにする
    • 生成し、転送した公開鍵を登録する
      $ cat id_ed25519.pub >> ~/.ssh/authorized_keys 
      
  • パスワード認証によるSSHログインは禁止する
    $ vim /etc/ssh/sshd_config
    
    # パスワードログインは拒否
    -PasswordAuthentication yes
    +PasswordAuthentication no
    # 公開鍵認証を有効化(もともと出来ていたような?)
    PubkeyAuthentication yes
    # ed25519のみ受け付ける
    PubkeyAcceptedKeyTypes ssh-ed25519
    # チャレンジレスポンスは無効
    ChallengeResponseAuthentication no
    
  • SSHサーバを再起動
    $ systemctl restart sshd
    
でぶねこでぶねこ

ホスト側でGPUパススルー設定 その1

  • 設定は下記サイト様を参考とする
  • PCI IDを取得する
    # lspci -nn | grep -e 'AMD/ATI'
    04:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Phoenix1
    [1002:15bf] (rev 05)
    04:00.1 Audio device [0403]: Advanced Micro Devices, Inc. [AMD/ATI]
    Rembrandt RadeonHigh Definition Audio Controller [1002:1640]
    
    GPUの「04:00.0」「1002:15bf」、Audioの「1002:1640」は後で使用する
  • grub設定変更を行い iommu(メモリ仮想化的な?)を有効にする
    sed -i 's/GRUB_CMDLINE_LINUX_DEFAULT="quiet"/GRUB_CMDLINE_LINUX_DEFAULT="quiet iommu=pt"/g' /etc/default/grub
    update-grub
    
  • iommuなどを有効にするためのカーネルモジュールを読み込む
    echo "vfio" >> /etc/modules
    echo "vfio_iommu_type1" >> /etc/modules
    echo "vfio_pci" >> /etc/modules
    echo "vfio_virqfd" >> /etc/modules
    
  • 仮想化するデバイスを指定する(GPUとAudio)
    echo "options vfio-pci ids=1002:15bf,1002:1640" >> /etc/modprobe.d/vfio.conf
    
  • オリジナルのドライバが読み込まれる前に仮想用のものを読み込むよう指定
    echo "softdep radeon pre: vfio-pci" >> /etc/modprobe.d/vfio.conf
    echo "softdep amdgpu pre: vfio-pci" >> /etc/modprobe.d/vfio.conf
    echo "softdep snd_hda_intel pre: vfio-pci" >> /etc/modprobe.d/vfio.conf
    
  • 設定を有効にして再起動
    update-initramfs -u -k all
    shutdown -r now
    
でぶねこでぶねこ

Windwos11の環境構築

でぶねこでぶねこ

ホスト側でGPUパススルー設定 その2

  • Win11のVM準備が整ったら残りのGPU設定を行う
  • GPUのBIOS?を取り出す
    • こちらのサイト様に記載の「vbios.c」を用意する
    • ビルドして実行
      apt install build-essential
      gcc vbios.c -o vbios
      ./vbios
      
  • 生成されたbinファイルを移動する
    mv vbios_1002_15bf.bin /usr/share/kvm/vbios_7xxx.bin
    
  • WebコンソールからPCIデバイスを追加する
  • VM設定ファイルを編集する
     vim /etc/pve/qemu-server/<VM_ID>.conf
    
    +args: -cpu 'host,-hypervisor,kvm=off'
    agent: 1
    bios: ovmf
    boot: order=scsi0;ide0;ide2;net0
    cores: 10
    cpu: host
    efidisk0: local-lvm:vm-100-disk-0,efitype=4m,pre-enrolled-keys=1,size=4M
    - hostpci0: 0000:04:00.0,pcie=1
    + hostpci0: 0000:04:00.0,pcie=1,romfile=vbios_7xxx.bin
    machine: pc-q35-9.0
    memory: 24576
    meta: creation-qemu=9.0.2,ctime=1739968594
    name: Win11
    net0: virtio=BC:24:11:30:4A:9E,bridge=vmbr0,firewall=1
    numa: 0
    ostype: win11
    scsi0: local-lvm:vm-100-disk-1,iothread=1,size=250G
    scsihw: virtio-scsi-single
    smbios1: uuid=d2b3787a-b049-4b51-b9f1-dbc95a1c1547
    sockets: 1
    tpmstate0: local-lvm:vm-100-disk-2,size=4M,version=v2.0
    vmgenid: 0f284a75-d5a2-44c5-a583-551422d6fc5d
    
でぶねこでぶねこ

Win11側設定

でぶねこでぶねこ

NPU設定

ただし動作はしない模様

  • 以下のPCIデバイスを追加する
  • Win11側のデバイスマネージャーで認識していることは確認できる