Kısa soru:
intel_iommu
Linux çekirdeğindeki ayarı nasıl açabilirim ? Grub2 önyükleyicisini kullanarak bir Debian ana bilgisayarı çalıştırıyorum. Gördüğüm belgelerin /boot/grub/menu.lst
, o dosyaya sahip olmadığım için yalnızca grub 1.x ile alakalı gibi göründüğü bir düzenleme yapıldığını söylüyor .
Bu önyükleme seçeneğini değiştirdiğinizde aşağıdaki hata mesajından kurtulabileceğini anlamak (ve düşünebileceğim son seçenek) /var/log/kern.log
vboxpci: No IOMMU domain (attach)
Uzun soru:
Konuk işletim sistemine grafik kartına doğrudan erişim verme
Geçenlerde bir PCI-express cihazdan Virtualbox'ta çalışan konuk işletim sistemlerine geçmenin mümkün olduğunu fark ettim. Harika, diye düşündüm! İki NVIDIA Quadro FX grafik kartım var (SLI köprü bağlantısı yerinde, kedere neden olmadığını umuyorum) ve 2. grafik kartını konuk işletim sistemine adamak istiyorum, böylece OpenGL özelliklerini kullanabiliyorum Photoshop ve diğ.
NVIDIA, bu " SLI Multi-OS " konfigürasyonunu pazarlıyor , bu da temel olarak çağlar boyunca kurmak istediğim şeydi, ancak sanallaştırma yazılımına (Parallels iş istasyonu aşırı), VirtualBox'ı yıllardır mutlu bir şekilde kullanıyor.
Sunucu sistemi
Debian depolarından linux-3.5.0-19 kullanıyorum, oldukça üst düzey iş istasyonu ekipmanlarında (Intel ICH10R yonga seti ve Xeon W3680 CPU ile Asus P6T7 WS Süper Bilgisayar mobo) ve çekirdekteki IOMMU desteğini açmak istiyorum , tercihen kendim derlemek zorunda kalmadan.
BIOS
BIOS ayarlarında, VT-x ve VT-d desteğini etkinleştirdim. Yine de IOMMU'dan özellikle bahseden bir şey göremedim.
PCI aygıtını takma
Bu hoş şaşırtıcı derecede basitti! Resmi VirtualBox belgeleri burada . Daha az belirsiz bulduğum şey, açmak nvidia-settings
, ikincil grafik kartını seçmek ve Bus Kimliğini not etmekti (benim durumumda "PCI: 5: 0: 0"). Ardından, ana bilgisayarın komut satırından: -
VBoxManage modifyvm "Windows Guest" --pciattach 05:00.0
(Bunu ilk çalıştırdığımda, VirtualBox bir PIIX yonga setini taklit ettiği için bir hata oluştu; PCI geçişinin yalnızca ICH9 yonga setleriyle çalıştığını söyledi. Bu nedenle, ChipBox'ı VirtualBox VM Sistemi ayarlarında ICH9 olarak değiştirdim ve konuku açtım Daha sonra yeniden başlatın ve her şey iyi çalışıyordu, bu yüzden konuğu kapattım ve komutu yeniden çalıştırdım.)
Çıktı yoktu ve hemen komut satırına geri döndüm.
Misafirin ana bilgisayar GPU'sunu kullanma
Konuğu açmadan önce, çekirdeğinde belgelenmemiş bir şeyin olması gerektiğinde, sanal makine-dkms tarafından ana bilgisayar makinesini yeniden başlattım. Önceki komutu sudo
ayrıcalıksız çalıştırdığımda, herhangi bir değişiklik yapıldığından şüpheliyim.
Bir sonraki konuk başladığımda, Windows Update işini yapmaya başladı ve otomatik olarak doğru NVIDIA sürücülerini algılayıp yükledi. Hepsi şimdiye kadar iyi görünüyor. Cihazı kullanmadan önce konuğu yeniden başlatmak zorunda kaldım ...
Sorun
Grafik kartı sürücüleri misafire ve bağlı PCI aygıtına yüklendiğine göre, Windows masaüstüne giremiyorum. Windows oturum açma ekranına geliyorum, sonra giriş yaptıktan sonra, ekran "" Hoş Geldiniz "diyerek donuyor, yanında mavi bir daire olmamalı.
İçinde /var/log/kern.log
, yazdırılan son mesajlar: -
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)
Bunu nasıl düzeltebileceğine dair bir fikrin var mı?
GÜNCELLEME:
Ben şimdi ile önyükleme çekirdeği var intel_iommu=on
, ama işler hala tam çalışmıyor .. Ana bilgisayar yeniden başlatıldıktan sonra, konuk başlar, günlükleri tamam ve her şey bu başlamadan önce olduğu gibi görünüyor. 2. ekran kartım hiçbir şey çıkarmıyor.
Aygıt Yöneticisi'nde, Quadro FX aygıtının yanında bir ünlem işareti vardır ve aygıt özelliklerinde "Bu aygıt yeterli boş kaynak bulamıyor" iletisini içeren 12 hata kodu vardır. Technet.microsoft.com hakkında daha fazla açıklama .
Ana çekirdek günlüğünde, umut verici görünüyor: -
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
Konuk işletim sistemini ikinci kez başlatırsam, ana bilgisayarı yeniden başlatmadan ekran "Hoş Geldiniz" aşamasında tekrar donar. Kesinlikle giriş aşamasını bitirir, çünkü makineyi kapatmaya zorlamak için windows kısayollarını kullanabilirim.
Şimdi biraz fikrim yok ... Çalıştırmak için herhangi bir öneriniz var mı? Daha fazla bilgi verebilir miyim?
Update2:
dmesg
daha ilginç hatalar içeriyor, ancak onlar hakkında ne yapabileceğimi bilmiyorum:
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
girdi /etc/default/grub
. Şimdi konuk önyükleme yapıyor, ancak ekran kartını algılamıyor ...
intel_iommu=soft
Geçerli bir çekirdek seçeneği gibi görünüyor ve bunu kullanıldığında, bu geri intikal etmez intel_iommu=on
.. Gönderen www.kernel.org , sahip olabilir iommu=soft
.., ama bunun için herhangi bir belge olabilir biliyor musunuz neyi bunu yapar?
iommu=soft
. Donanım IOMMU'yu devre dışı bırakır (sistemimde çok sayıda DMA hatasına neden olur) ve bunun yerine bir yazılım IOMMU kullanır. İşte eski bir iş parçacığının bağlantısı: Tüm çekirdek paketleri için iommu = soft kullanma önerisi
intel_iommu=igfx_off
...
intel_iommu=soft
. Geçmeyi deneyebilirsinizintel_iommu=on
.