लघु प्रश्न:
मैं intel_iommu
लिनक्स कर्नेल में सेटिंग कैसे चालू कर सकता हूं ? मैं ग्रब 2 बूटलोडर का उपयोग करके एक डेबियन होस्ट चलाता हूं। प्रलेखन मैंने देखा है कि संपादित करने के लिए कहते हैं /boot/grub/menu.lst
, जो कि केवल ग्रब 1.x के लिए प्रासंगिक लगता है, क्योंकि मेरे पास वह फ़ाइल नहीं है।
यह मेरी समझ है (और अंतिम विकल्प मैं सोच सकता हूं) कि इस बूट विकल्प को बदलने से निम्नलिखित त्रुटि संदेश से छुटकारा मिल सकता है /var/log/kern.log
vboxpci: No IOMMU domain (attach)
लंबा सवाल:
ग्राफिक्स कार्ड के लिए एक अतिथि ओएस डायरेक्ट एक्सेस देना
मुझे हाल ही में एहसास हुआ कि वर्चुअल बॉक्स में ओएस के चलने के लिए पीसीआई-एक्सप्रेस डिवाइस से गुजरना संभव है। कूल, मैंने सोचा! मुझे दो NVIDIA क्वाड्रो एफएक्स ग्राफिक्स कार्ड मिले हैं (एसएलआई पुल कनेक्शन के साथ, जो मुझे आशा है कि दुःख का कारण नहीं है) और 2 डी ग्राफिक्स कार्ड को अतिथि ओएस को समर्पित करना चाहते हैं, ताकि मैं ओपनगेल सुविधाओं का उपयोग कर सकूं फ़ोटोशॉप एट अल।
एनवीआईडीआईए ने इस " एसएलआई मल्टी-ओएस " कॉन्फ़िगरेशन को बाजार दिया, जो मूल रूप से मैं उम्र के लिए स्थापित करना चाहता था, लेकिन मैं वर्चुअलाइजेशन सॉफ्टवेयर (समानताएं वर्कस्टेशन चरम) पर एक भव्य पर खर्च नहीं करना चाहता, जब मैं रहा हूं वर्चुअलबॉक्स का उपयोग वर्षों से बहुत खुशी से किया जा रहा है।
मेजबान प्रणाली
मैं डेबियन रिपॉजिटरी से लिनक्स-3.5.0-19 पर चल रहा हूं, काफी हाई-एंड वर्कस्टेशन इक्विपमेंट (आसुस P6T7 WS सुपरकंप्यूटर mobo w / Intel ICH10R चिपसेट और Xeon W3680 CPU) पर और कर्नेल में IOMMU सपोर्ट चालू करना चाहूंगा। , अधिमानतः खुद को संकलित किए बिना।
BIOS
BIOS सेटिंग्स में, मेरे पास VT-x और VT-d समर्थन सक्षम है। मैं विशेष रूप से IOMMU का उल्लेख करते हुए कुछ भी नहीं देख सकता था।
PCI डिवाइस को संलग्न करना
यह सुखद आश्चर्यजनक रूप से सरल था! आधिकारिक वर्चुअलबॉक्स प्रलेखन यहाँ है । मैंने जो किया, जो मुझे कम अस्पष्ट लगा, उसे खोलने के लिए nvidia-settings
, द्वितीयक ग्राफिक्स कार्ड का चयन करना था और मेरे मामले में बस आईडी ("PCI: 5: 0: 0") को नोट करना था। फिर, मेजबान की कमांड लाइन से: -
VBoxManage modifyvm "Windows Guest" --pciattach 05:00.0
(जब मैंने पहली बार इसे चलाया, तो एक त्रुटि थी क्योंकि वर्चुअलबॉक्स एक PIIX चिपसेट का अनुकरण कर रहा था; इसने कहा कि PCI पास-थ्रू केवल ICH9 चिपसेट के साथ काम करता है। इसलिए मैंने वर्चुअलबॉक्स वीएम सिस्टम सेटिंग्स में चिपसेट को ICH9 में बदल दिया और अतिथि को चालू कर दिया। आवश्यक नए ड्राइवरों को स्थापित करने के लिए। एक रिबूट बाद में और सब कुछ ठीक काम कर रहा था, इसलिए मैंने अतिथि को बंद कर दिया, और कमांड को फिर से चलाया।)
कोई आउटपुट नहीं था, और मुझे लगभग तुरंत ही कमांड लाइन में वापस कर दिया गया था।
अतिथि से होस्ट GPU का उपयोग करना
अतिथि को चालू करने से पहले, मैंने पहली बार होस्ट मशीन को रिबूट किया, यदि वर्चुअल बॉक्स-डीकेएम द्वारा कर्नेल में कुछ अनिर्दिष्ट होने की आवश्यकता होती है। जैसा कि मैंने sudo
विशेषाधिकारों के बिना पिछली कमान चलाई , मुझे संदेह है कि कोई भी बदलाव किए गए थे, हालांकि।
जब मैंने अगली बार अतिथि शुरू किया, तो विंडोज अपडेट ने अपनी बात करना शुरू कर दिया और स्वचालित रूप से सही NVIDIA ड्राइवरों का पता लगाया और स्थापित किया। सभी अब तक अच्छे दिख रहे हैं। इससे पहले कि मैं डिवाइस का उपयोग कर सकता, हालांकि, मुझे अतिथि को रिबूट करना पड़ा ...
मुसीबत
अब जब अतिथि और पीसीआई डिवाइस में ग्राफिक्स कार्ड ड्राइवर लगे हैं, तो मैं विंडोज डेस्कटॉप में नहीं जा सकता। मुझे विंडोज लॉगिन स्क्रीन मिलती है, फिर लॉग इन करने के बाद, स्क्रीन फ्रीज हो जाती है, बस "वेलकम" कहकर, साथ-साथ कताई-लेकिन-इसके आगे ब्लू सर्कल नहीं है।
में /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
, लेकिन चीजें अभी भी पूरी तरह से काम नहीं कर रही हैं .. मेजबान को रिबूट करने के बाद, अतिथि शुरू होता है, ठीक है में लॉग करता है और सब कुछ लगता है जैसे कि यह किसी भी शुरू करने से पहले था। मेरा दूसरा ग्राफिक्स कार्ड कुछ भी आउटपुट नहीं कर रहा है।
डिवाइस मैनेजर में, क्वाड्रो एफएक्स डिवाइस के बगल में एक विस्मयादिबोधक चिह्न होता है, और डिवाइस के गुणों में 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 को दूसरी बार शुरू करता हूं, तो मेजबान को रिबूट किए बिना, प्रदर्शन "वेलकम" चरण में फिर से जमा होता है। यह निश्चित रूप से लॉग-इन चरण को समाप्त करता है, क्योंकि मैं एक शटडाउन मजबूर किए बिना मशीन को बंद करने के लिए विंडोज़ शॉर्टकट का उपयोग कर सकता था।
अब मैं विचारों से बाहर हूँ ... इस काम को करने के लिए कोई सुझाव? किसी भी अधिक जानकारी मैं प्रदान कर सकते हैं?
UPDATE2:
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
।