先史時代
約2年前、私は完全にLinuxに切り替えることにしましたが、Vendの必要性は下がらなかったため、常に2つのオペレーティングシステムを維持しました。 約1か月前、VirtualBoxをインストールしてWindowsをインストールしようとしましたが、一般に2つのオペレーティングシステムで作業するのが好きでしたが、1つの問題があり、コンピューターグラフィックスのみをプログラミングし、OpenGL 3.3以降のサポートが必要でした。機会。 グーグルはXenのようなものに遭遇し、その上で何かをしようと長い間試みましたが、その結果、何も起こりませんでした。おそらく主なビデオカードによるものです-nVidia GeForce 580 GTX、ハイパーバイザーは単にWindowsは言うまでもなくubuntuさえも起動したくありませんでした。 私は他のハイパーバイザーを探し始め、KVMに出会い、それをいじらなければなりませんでしたが、最終的にはうまくいきました。
構成
必要なのは:
- 仮想化をサポートするプロセッサー(IntelではVT-d、AMDではAMD-Vi)。 重要:チップセットもこのテクノロジーをサポートする必要があります。
- I / Oメモリ管理ユニット(IOMMU)を搭載したマザーボード
- 2つのビデオカード。ゲストOSの場合、AMDビデオカードを使用することをお勧めします。 問題はないはずです。 NVidiaグラフィックカードは機能しません。
私の構成:
- AMD Phenom II x4プロセッサー
- マザーボードASUS M5A99X EVO R2.0
- Ubuntuのビデオカード:NVidia GeForce 580 GTX
- ゲストOS用のビデオカード:AMD Radeon HD 5800
準備する
まず、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/仮想マシンへのビデオカードの転送