短い質問:
intel_iommu
Linuxカーネルの設定を有効にするにはどうすればよいですか?grub2ブートローダーを使用して、Debianホストを実行します。私が見たドキュメントは編集/boot/grub/menu.lst
するように言っていますが、それはgrub 1.xにのみ関連しているようです、私はそのファイルを持っていないので。
このブートオプションを変更すると、次のエラーメッセージが表示されなくなる可能性があることを理解しています(そして最後に考えられるオプション)。 /var/log/kern.log
vboxpci: No IOMMU domain (attach)
長い質問:
ゲストOSにグラフィックカードへの直接アクセスを許可する
最近、PCI Expressデバイスを介してVirtualboxで実行されているゲストOSに渡すことができることに気付きました。かっこいい!2枚のNVIDIA Quadro FXグラフィックカード(SLIブリッジ接続があり、悲しみを引き起こさないことを願っています)があり、2番目のグラフィックカードをゲストOS専用にして、OpenGL機能を使用できるようにします。 Photoshopなど。
NVIDIAは、この「SLI Multi-OS」構成を販売しています。これは基本的に私が長年設定したかったものですが、仮想化ソフトウェア(Parallelsワークステーションエクストリーム)に大金をかけたくありません。 VirtualBoxを何年も使用して非常に満足しています。
ホストシステム
Debianリポジトリからlinux-3.5.0-19を非常にハイエンドのワークステーション機器(Asus P6T7 WSスーパーコンピューターmobo w / Intel ICH10RチップセットおよびXeon W3680 CPU)で実行しており、カーネルでIOMMUサポートを有効にしたいできれば自分でコンパイルする必要はありません。
BIOS
BIOS設定で、VT-xおよびVT-dサポートが有効になっています。ただし、IOMMUについて具体的に言及しているものは見当たりませんでした。
PCIデバイスの接続
これは驚くほど簡単でした!VirtualBoxの公式ドキュメントはこちらです。私がやったことは、あまり曖昧ではなかったが、開いてnvidia-settings
、セカンダリグラフィックカードを選択し、バスID(私の場合は「PCI:5:0:0」)をメモすることでした。次に、ホストのコマンドラインから:
VBoxManage modifyvm "Windows Guest" --pciattach 05:00.0
(最初にこれを実行したとき、VirtualBoxがPIIXチップセットをエミュレートしているためエラーが発生しました。PCIパススルーはICH9チップセットでのみ機能すると述べました。したがって、VirtualBox VM System設定で必要な新しいドライバーをインストールします。後で再起動するとすべてが正常に機能したので、ゲストをシャットダウンしてコマンドを再実行しました。
出力がなかったため、ほぼすぐにコマンドラインに戻りました。
ゲストからホストGPUを使用する
ゲストをオンにする前に、virtualbox-dkmsによって、カーネルで文書化されていないことが発生する場合に備えて、最初にホストマシンを再起動しました。sudo
特権なしで前のコマンドを実行したため、変更が行われたのではないかと思います。
次にゲストを起動したときに、Windows Updateがその動作を開始し、正しいNVIDIAドライバーを自動的に検出してインストールしました。これまでのところ、すべてがよさそうだ。デバイスを使用する前に、ゲストを再起動する必要がありました...
問題
ゲストにグラフィックカードドライバーがインストールされ、PCIデバイスが接続されたため、Windowsデスクトップにアクセスできません。Windowsのログイン画面が表示されます。ログイン後、画面がフリーズし、「ようこそ」と言って、横に回転するはずの青い円が表示されません。
では/var/log/kern.log
、最後に印刷されるメッセージは次のとおりです。
vboxpci: vboxPciOsDevInit: dev=500
vboxpci: detected device: 10de:05ff at 05:00.0, driver pci-stub
vboxpci: vboxPciOsDevInit: dev=500 pdev=ffff88061bea0000
pci-stub 0000:05:00.0: irq 76 for MSI/MSI-X
vboxpci: enabled MSI
500: linux vboxPciOsDevGetRegionInfo: reg=0
got mmio region: fa000000:16777216
500: linux vboxPciOsDevGetRegionInfo: reg=1
got mmio region: d0000000:268435456
500: linux vboxPciOsDevGetRegionInfo: reg=3
got mmio region: f8000000:33554432
500: linux vboxPciOsDevGetRegionInfo: reg=5
got pio region: 8c00:128
500: linux vboxPciOsDevGetRegionInfo: reg=6
got mmio region: fb980000:524288
got PCI IRQ: 76
device eth0 entered promiscuous mode
power state: 0
vboxpci: No IOMMU domain (attach)
これを修正する方法はありますか?
更新:
でカーネルを起動できましたが、intel_iommu=on
まだ完全には機能していません。ホストを再起動した後、ゲストが起動し、ログインして大丈夫です。2番目のグラフィックカードが何も出力していません。
デバイスマネージャーでは、Quadro FXデバイスの横に感嘆符があり、デバイスプロパティにエラーコード12があり、「このデバイスは十分な空きリソースを見つけることができません」というメッセージが表示されます。上のさらなる説明technet.microsoft.com。
ホストカーネルログでは、有望に見えます:
vboxpci: detected device: 10de:05ff at 05:00.0, driver pci-stub
vboxpci: vboxPciOsDevInit: dev=500 pdev=ffff88061baa0000
pci-stub 0000:05:00.0: irq 76 for MSI/MSI-X
vboxpci: enabled MSI
500: linux vboxPciOsDevGetRegionInfo: reg=0
got mmio region: fa000000:16777216
500: linux vboxPciOsDevGetRegionInfo: reg=1
got mmio region: d0000000:268435456
500: linux vboxPciOsDevGetRegionInfo: reg=3
got mmio region: f8000000:33554432
500: linux vboxPciOsDevGetRegionInfo: reg=5
got pio region: 8c00:128
500: linux vboxPciOsDevGetRegionInfo: reg=6
got mmio region: fb980000:524288
got PCI IRQ: 76
created IOMMU domain ffff88058377c9a0
device eth0 entered promiscuous mode
power state: 0
vboxpci: iommu_attach_device() success
ホストを再起動せずにゲストOSを2回起動すると、「ようこそ」の段階で表示が再びフリーズします。ただし、Windowsショートカットを使用して強制的にシャットダウンせずにマシンをシャットダウンできるため、ログイン段階は間違いなく終了します。
今、私はある種のアイデアを失っています。提供できる情報はありますか?
更新2:
dmesg
いくつかのより興味深いエラーが含まれていますが、私はそれらについて何ができるかわかりません:
IOMMU 0 0xfbfff000: using Queued invalidation
IOMMU 1 0xfbffe000: using Queued invalidation
------------[ cut here ]------------
WARNING: at /build/buildd/linux-3.5.0/drivers/iommu/intel-iommu.c:4254 init_dmars+0x39b/0x74f()
Hardware name: System Product Name
Your BIOS is broken; DMA routed to ISOCH DMAR unit but no TLB space.
BIOS vendor: American Megatrends Inc.; Ver: 0811 ; Product Version: System Version
...
Your BIOS is broken; RMRR ends before it starts!
CONFIG_CMDLINE_LINUX=intel_iommu=on
れ/etc/default/grub
ます。さて、ゲストは起動するが、グラフィックスカードを検出しません...
intel_iommu=soft
有効なカーネルオプションではないようintel_iommu=on
です。使用すると、.. に戻ります。www.kernel.orgからは入手できますがiommu=soft
、そのためのドキュメントは見つかりません。しますか?
iommu=soft
。ハードウェアIOMMU(システムで多数のDMAエラーを引き起こす)を無効にし、代わりにソフトウェアIOMMUを使用します。ここでは、古いスレッドへのリンクです:IOMMUを使用するための提案は、すべてのカーネルパッケージ用ソフト=
intel_iommu=igfx_off
...
intel_iommu=soft
。渡すことができintel_iommu=on
ます。