मैं Libvirt / qemu-kvm में अवांछित IPXE बूट प्रयास को कैसे अक्षम कर सकता हूं?


12

किसी तरह 12.04 में अपग्रेड करने के बाद, मेरी वर्चुअल मशीन हमेशा पहले नेटवर्क से बूट करने के प्रयास के साथ बूट होती है। यह देखो:

गुण-प्रबंधक स्क्रीनशॉट

जबकि मेरे पास कोई पीएक्सई कॉन्फ़िगरेशन सेट नहीं है:

पीएक्सई बूट विन्यास

मैंने कोशिश की:

  • अक्षम स्पाइस के लिए, द्वारा बदल रहा है emulatorकरने के लिए /usr/bin/kvmसे /usr/bin/kvm-spiceसंपादन एक्सएमएल द्वारा।
  • Ctrl+ BiPXE को कॉन्फ़िगर करने के लिए, लेकिन यह इसे बूट विकल्प के रूप में अक्षम नहीं होने देता।
  • एक और प्रकार का एनआईसी स्थापित करना - एक विकल्प नहीं है, मुझे virtioप्रदर्शन कारणों की आवश्यकता है। हालांकि, e1000eया तो काम नहीं करता है।
  • एनआईसी को हटाना: काम करता है। हालाँकि, मुझे नेटवर्क की आवश्यकता है।
  • चारों ओर गुगली। कठिन। परिणाम के बहुत सारे कॉन्फ़िगर किए गए पीएक्सई जूते विफल करने के बारे में हैं।

कोई बड़ा मुद्दा नहीं है, लेकिन यहां बूट समय 50-100% बढ़ जाता है (एसएसडी से बूटिंग), इसलिए यह अपेक्षाकृत लंबा है और मुझे परेशान करता है।

मैं इसे कैसे वर्चुअल हार्ड डिस्क से सीधे बूट कर सकता हूं?

जवाबों:


6

संक्षिप्त जवाब

Libvirt 0.9.10+ (क्वांटल में उपलब्ध) पर अपग्रेड करें और <rom bar='off'/>मशीन की XML परिभाषा के इंटरफ़ेस कॉन्फ़िगरेशन में विकल्प जोड़ें ।

लंबा जवाब

अब जब मैं वास्तव में iPXE बूट विकल्प का उपयोग कर रहा हूं तो मैं देखता हूं कि सीबीआईओएस स्क्रीन में होने वाली देरी वास्तविक बूट प्रयास नहीं है। यह सिर्फ Virtio नेटवर्क विकल्प ROM को लोड कर रहा है और यह कुछ कष्टप्रद सेकंड लेता है, अर्थात यह अभी तक एक iPXE बूट प्रयास नहीं कर रहा है । यह मुझे फिर से libvirt प्रलेखन पढ़ने के लिए प्रेरित करता है, और मैंने एक दिलचस्प खोज की।

जहाँ तक मुझे पता चला, libvirt 0.9.7 के बाद से व्यवहार इंटरफ़ेस के विकल्प ROM को डिफ़ॉल्ट रूप से लोड करने के लिए बदल गया है। Ubuntu 11.10 0.9.2 के साथ भेज दिया, Ubuntu 12.04 0.9.8 के साथ आता है। यह निश्चित रूप से समझ में आता है कि 12.04 में अपग्रेड होने के बाद से मैं ऐसा क्यों देख रहा हूं।

इसके अलावा, यह <rom bar='off'/>XML में विकल्प के साथ libvirt संस्करण 0.9.10 में विन्यास योग्य हो गया है ! ( यहाँ देखें ) हालाँकि, libvirt का संस्करण Ubuntu १२.०४ में उपलब्ध नहीं है और मुझे इसे १२.१० में अपग्रेड करना होगा या इसे वापस करना होगा। यह Ubuntu 12.04 दो मल के बीच पड़ता है।

अन्य वर्कअराउंड्स @AH द्वारा इंगित ROM फ़ाइलों को हटा रहे हैं और SeaNOS 'फाइलसिस्टम' को @NlightNFotis द्वारा बताए अनुसार बदल रहे हैं। हालांकि, दोनों तरीके मूल रूप से iPXE को पूरी तरह से अक्षम कर देंगे और यह कॉन्फ़िगर करने योग्य नहीं है (यदि virtioकेवल नेटवर्क उपकरणों से चिपके हुए हैं )। जैसा कि मेरे पास आईएक्सएक्सई मशीनों और गैर-पीएक्सई मशीनों का मिश्रित सेटअप है, मुझे वास्तव में इसे कॉन्फ़िगर करने योग्य होना चाहिए।


मशीन की XML परिभाषा कहाँ है?
ब्रायस गुइंटा

1
@BryceGuinta पहले एक VM बनाएँ, फिर कमांड का उपयोग करके इसकी XML परिभाषा (उन्नत) को संपादित करेंvirsh edit <domain>
gertvdijk

5

इसी मुद्दे पर मेरे प्रयोगों ने मुझे कुछ संकेत दिए:

पैकेज में kvm-ipxeकई पीएक्सई विकल्प रोम स्थापित करता है /usr/share/qemu/:

pxe-e1000.rom
pxe-ne2k_isa.rom
pxe-pcnet32.rom
pxe-rtl8139.rom
pxe-virtio.rom

इन NIC में से किसी एक के साथ बूट करने पर किसी तरह ये स्वचालित रूप से सीबियो द्वारा पाए और उपयोग किए जाते हैं। जब मैं chmod a= pxe*.romइन फाइलों पर करता हूं और वर्चुअल मशीन शुरू करता हूं तो मुझे "त्रुटि" संदेश मिलता है

kvm: pci_add_option_rom: failed to find romfile "pxe-rtl8139.rom"

लेकिन यह साफ और बिना PXE के बूट करता है।


धन्यवाद। यह मुझे थोड़ा सा वर्कअराउंड देता है: virtioसामान्य नेटवर्किंग उपकरणों के लिए और e1000eवीएमई के लिए जिनका उपयोग पीएक्सई की आवश्यकता है। हालांकि, मुझे अभी भी लगता है कि यह एक बग है। किसी तरह Libvirt SeaBIOS के लिए सही बूट मापदंडों को सफलतापूर्वक पास नहीं करता है।
gertvdijk

क्या करता chmod a=है?
ब्रायस गुइंटा

5

मैं कमांड लाइन पर qemu-kvm के लिए निम्न विकल्पों को पारित करके Ubuntu 12.04 में इसे प्राप्त करने में सक्षम था (रोम को खाली करने के लिए सेटिंग चाल है):

-netdev user,id=hostnet0 -device virtio-net-pci,romfile=,netdev=hostnet0

कूल, लेकिन क्या मैं इसे अपनी Libvirt XML मशीन परिभाषा में निर्दिष्ट कर सकता हूं?
gertvdijk

यदि आप कमांड-लाइन से बार-बार रिबूटिंग कर रहे हैं, तो यह रास्ता तय करना है। यह थोड़ा शोर जोड़ता है, लेकिन तुरंत XMLX को संपादित करने की आवश्यकता के बिना IPXE को मारता है, नेटवर्किंग के सभी, या इसी तरह के अन्य।
०३६__

0

आपके चित्रों से, मैं देख सकता हूं कि सबसे अधिक संभावना यह वीएम BIOS के साथ है। वीएम कॉन्फ़िगरेशन को SeaBIOSसेटिंग्स को अधिलेखित नहीं करना चाहिए , ऐसा कुछ जो वीएम को PXEपहले से बूट करने का कारण होगा ।

पहले संभव समाधान के लिए, यह देखने का प्रयास करें कि क्या आप वर्चुअल मशीन के BIOS में प्रवेश कर सकते हैं और वहां प्रचलित विकल्पों को संपादित कर सकते हैं।

नोट: मेरे शोध के अधिक संभावित समाधानों या कारणों का खुलासा करते हुए उत्तर को अपडेट करना जारी रखेंगे।

[EDIT # 1]: आप यहां सीबीआईओएस में बूट ऑर्डर कैसे सेट करें, इसके बारे में जानकारी पा सकते हैं । इससे समस्या का समाधान होना चाहिए।


मैं वीएम के BIOS में कैसे प्रवेश कर सकता हूं? सीबीआईओएस के बारे में विकिपीडिया बताता है कि मुझे बूट समय पर F12 की कोशिश करनी चाहिए, लेकिन यह केवल एक बार iPXE प्रयास को छोड़ देता है।
gertvdijk

@gertvdijk मैं वर्तमान में देख रहा हूँ। जैसे ही मुझे पता चलेगा मैं आपके पास वापस आऊंगा।
NlightNFotis

@gertvdijk यह किसी भी तरह से संबंधित लगता है: seabios.org/pipermail/seabios/2012-March/003526.html
NlightNFotis

धन्यवाद, आज नया सामान सीखा। हालांकि, यह सिस्टम-वाइड और एक नया सीबीएफएस (कोर बूट फाइल सिस्टम) बनाने के बारे में लगता है। जहाँ तक मैं देख सकता हूँ, यह पूरी तरह से पीएक्सई बूटिंग को भी निष्क्रिय कर देता है। मुझे यह तरीका पसंद नहीं है और मुझे लगता है कि पुण्य-प्रबंधक जीयूआई में संभव के रूप में iPXE बूटिंग प्रयासों को रोकने के लिए संभव होना चाहिए।
gertvdijk

@gertvdijk आप कैसे जानते हैं कि यह इसे अक्षम करता है? सभी मैं देख सकता हूं कि बूट ऑर्डर सेट करना है, जिसका अर्थ कुछ और से पहले बूट हो जाता है
NlightNFotis

-1

मैं "-net none" का उपयोग करके इसे रोकने में सक्षम था:

# qemu-system-i386 -net none

लेकिन तब आपके पास कोई नेटवर्किंग नहीं है! मैं इसे वास्तव में उत्तर नहीं मानता।
gertvdijk

क्षमा करें, मैंने इस तथ्य को याद किया कि ओपी को अभी भी नेटवर्किंग की आवश्यकता थी। मेरे मामले में बिना किसी नेटवर्क के साथ चलना स्वीकार्य नहीं था।
कैटलिन पी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.