Ubuntuの下からKVMでビデオカードを転送する

先史時代



約2年前、私は完全にLinuxに切り替えることにしましたが、Vendの必要性は下がらなかったため、常に2つのオペレーティングシステムを維持しました。 約1か月前、VirtualBoxをインストールしてWindowsをインストールしようとしましたが、一般に2つのオペレーティングシステムで作業するのが好きでしたが、1つの問題があり、コンピューターグラフィックスのみをプログラミングし、OpenGL 3.3以降のサポートが必要でした。機会。 グーグルはXenのようなものに遭遇し、その上で何かをしようと長い間試みましたが、その結果、何も起こりませんでした。おそらく主なビデオカードによるものです-nVidia GeForce 580 GTX、ハイパーバイザーは単にWindowsは言うまでもなくubuntuさえも起動したくありませんでした。 私は他のハイパーバイザーを探し始め、KVMに出会い、それをいじらなければなりませんでしたが、最終的にはうまくいきました。



構成



必要なのは:



私の構成:





準備する



まず、BIOSを再起動してIOMMUを有効にする必要があります。 IOMMUがAMDで動作するかどうかを確認するには:



dmesg | grep -iE "(IOMMU|AMD-Vi)"







またはIntelの場合:



dmesg | grep -iE "(IOMMU|VT-d)"







ここで、grubでiommuを有効にする必要があります。 / etc / default / grubを開き、GRUB_CMDLINE_LINUXを探し、見てみましょう:



GRUB_CMDLINE_LINUX="max_loop=64 iommu=pt iommu=1 amd_iommu=fullflush"







したがって、ループデバイスの数を増やし、AMDのIOMMUサポートを有効にします。 オペレーティングシステムのロード時にすべてがフラットになった場合(通常2つのビデオカードが原因)、nomodesetを前の行に追加すると、次のようになります。



GRUB_CMDLINE_LINUX="nomodeset max_loop=64 iommu=pt iommu=1 amd_iommu=fullflush"







また、不具合を減らすために、AMDからドライバーをダウンロードすることを禁止できます(AMDから両方のビデオカードを持っている場合、これを行うべきではありません)、それらをブラックリストに追加します。 /etc/modprobe.d/blacklist.confを開き、次を追加します。



blacklist fglrx





blacklist radeon







次に、ホストのドライバーからビデオカードを切断し、pci-stubに接続して、転送のためにビデオカードを準備する必要があります。 マップを選択するには、lspciと入力してマップを探します。



02:00.0 VGA compatible controller: Advanced Micro Devices [AMD] nee ATI Cypress PRO [Radeon HD 5850]





02:00.1 Audio device: Advanced Micro Devices [AMD] nee ATI Cypress HDMI Audio [Radeon HD 5800 Series]







私の場合、02:00.0と02:00.1です。 02:00 a.m.はサウンドチップです。 ビデオカードはビデオおよびオーディオとして表示されるため、一緒に転送する必要があります。

次に、ベンダーIDとデバイスIDが必要です。 -nスイッチを指定してlspciを実行すると確認できます



02:00.0 0300: 1002:6899





02:00.1 0403: 1002:aa50







次に、デバイスをpci-stubに接続します。 ビデオカード:



echo "1002 6899" > /sys/bus/pci/drivers/pci-stub/new_id





echo "0000:02:00.0" > /sys/bus/pci/devices/0000\:02\:00.0/driver/unbind





echo "0000:02:00.0" > /sys/bus/pci/drivers/pci-stub/bind







VendorIDとDeviceIDの間にコロンは配置されないことに注意してください。

サウンドカード:



echo "1002 aa50" > /sys/bus/pci/drivers/pci-stub/new_id





echo "0000:02:00.1" > /sys/bus/pci/devices/0000\:02\:00.1/driver/unbind





echo "0000:02:00.1" > /sys/bus/pci/drivers/pci-stub/bind







便宜上、スクリプトを作成して自動実行に追加できます。



スクリプトを表示
 #!/bin/bash hostgr="0000:02:00.0" hostau="0000:02:00.1" grid="1002 6899" auid="1002 aa50" # echo $grid > "/sys/bus/pci/drivers/pci-stub/new_id" echo $hostgr > "/sys/bus/pci/devices/$hostgr/driver/unbind" echo $hostgr > "/sys/bus/pci/drivers/pci-stub/bind" echo $auid > "/sys/bus/pci/drivers/pci-stub/new_id" echo $hostau > "/sys/bus/pci/devices/$hostau/driver/unbind" echo $hostau > "/sys/bus/pci/drivers/pci-stub/bind"
      
      





設置



最初に、いくつかのパッケージをインストールする必要があります。



sudo apt-get install qemu-kvm libvirt-bin ubuntu-vm-builder bridge-utils







これはGUIなしのサーバーへのインストールです。kvmでの作業を便利にするため、virt-managerもインストールします。



sudo apt-get install virt-manager







その後、メニュー項目「Virtual Machine Manager」がメニューに表示されます。

次に、allow_unsafe_assigned_interrupts = 1オプションをkvmモジュールに渡します。 /etc/modprobe.d/kvm.confに内容を含むファイルを作成し、モジュールを再起動します。



options kvm allow_unsafe_assigned_interrupts=1







次に、virt-managerを実行すると、ウィンドウが表示されます:



画像



localhostを右クリックして[新規]を選択するか、パネルの左側にあるモニターをクリックします。 次に、指示に従って仮想マシンを作成します。 システムをインストールしたら、必要なデバイスを転送できます。 [表示]-> [詳細]メニューに移動します。 次のようなウィンドウが表示されます。



画像



[ハードウェアの追加]ボタンをクリックし、PCIホストデバイスを選択して、ビデオカードを探します。 ビデオカードのサウンドチップでも同じことを行う必要があります。 同様に、USBホストを転送して機能させることができます。コントローラーUSBの[モデル:USB2]フィールドで指定する必要があります。

コンピューターのデバイスで起動すると、アダプターが表示されます。



画像



次に行う必要があるのは、ドライバーのダウンロードです。 製造元のWebサイトからダウンロードして、システムにインストールします。 ドライバーをインストールしようとすると、システムは必死にBSODに移行し、新しいWindowsをインストールすることでこの問題を解決しました。 デバイスマネージャーからドライバーをインストールすることもできますが、私にとっては単にハングしました。

これを完了するには、仮想マシンをオフにしてコンピューターを再起動します。これを行わない場合、システムを再起動するとBSODに移行する場合があります。

現時点では、転送されたビデオカードでゲストを再起動すると、kvmはシステム全体をハングアップするため、仮想マシンをオフにすると、コンピューター全体も再起動する必要があります。



まとめ



これで、開始後、ビデオカードドライバーをロードした後、仮想マシンのコンソールがオフになります。Windows7の場合、「Starting Windows」という画像は残りますが、画像自体は転送されたビデオカードに既に出力されているはずです。 イメージは大麻に表示されませんが、それでも入力デバイスからデータを送信し、通常の仮想マシンとしてキーボードとマウスからゲストを制御できます。

転送されたビデオカードに2番目のモニターを固定し、完了した作業を楽しみます。

最後に、システムパフォーマンス評価のスクリーンショット:



画像



ソース



help.ubuntu.com/community/KVM

www.linux.org.ru/wiki/en/仮想マシンへのビデオカードの転送



All Articles