Libvirt / qemu-kvm'de istenmeyen iPXE önyükleme girişimini nasıl devre dışı bırakabilirim?


12

Bir şekilde 12.04'e yükselttikten sonra, sanal makinelerim her zaman önce ağdan önyükleme girişimi ile önyükleme yapıyor. Bunu gör:

virt-manager ekran görüntüsü

Herhangi bir PXE yapılandırması ayarlanmamışken:

PXE önyükleme yapılandırması

Denedim:

  • devre dışı SPICE için, tarafından değişen emulatoriçin /usr/bin/kvmgelen /usr/bin/kvm-spiceXML düzenleyerek.
  • Ctrl+ Bile iPXE yapılandırın, ancak önyükleme seçeneği olarak bunu devre dışı bırakmaz.
  • başka bir tür NIC ayarlamak - bir seçenek değil, virtioperformans nedenleriyle ihtiyacım var . Ancak, e1000eaynı zamanda çalışmaz.
  • NIC kaldırma: çalışır. Ancak, ağa ihtiyacım var.
  • Etrafta dolanıyor. Zor. Birçok sonuç, yapılandırılmış PXE önyüklemelerinin başarısız olmasıyla ilgilidir.

Büyük bir sorun değil, ama burada önyükleme sürelerini% 50-100 arttırıyor (SSD'den önyükleme), bu yüzden nispeten uzun ve beni rahatsız ediyor.

Bunu nasıl devre dışı bırakabilir ve doğrudan sanal sabit diskten önyükleyebilirim?

Yanıtlar:


6

Kısa cevap

Libvirt 0.9.10+ sürümüne yükseltin (Quantal'da mevcuttur) ve <rom bar='off'/>seçeneği makinenin XML tanımının arayüz yapılandırmasına ekleyin .

Uzun cevap

Şimdi aslında iPXE önyükleme seçeneğini kullanıyorum SeaBIOS ekranında meydana gelen gecikmenin gerçek bir önyükleme girişimi olmadığını görüyorum. Sadece Virtio ağ seçeneği ROM'u yüklüyor ve birkaç can sıkıcı saniye sürüyor, yani henüz bir iPXE önyükleme girişimi yapmıyor . Bu beni libvirt belgelerini tekrar okumaya yönlendirdi ve ilginç bir keşif yaptım.

Bulduğum kadarıyla, libvirt 0.9.7'den beri davranış, varsayılan olarak arabirimin seçenek ROM'larını yüklemek için değişti. Ubuntu 11.10, 0.9.2 ile birlikte gönderilir, Ubuntu 12.04, 0.9.8 ile birlikte gelir. Bu, 12.04 sürümüne geçişten bu yana neden olduğunu gördüğümde kesinlikle mantıklı.

Ayrıca, bu <rom bar='off'/>XML seçeneği ile libvirt 0.9.10 sürümünde yapılandırılabilir hale geldi ! (bkz . ) Bu libvirt sürümü Ubuntu 12.04'te mevcut değildir ve 12.10'a yükseltmem ya da desteklemem gerekecek. Bu Ubuntu 12.04'ü iki tabure arasına sokar.

Diğer geçici çözümler, seçenek ROM dosyalarını @AH 'ile belirtildiği gibi kaldırmak ve SeaBIOS' dosya sistemini '@NlightNFotis tarafından belirtildiği gibi değiştirmek. Bununla birlikte, her iki yol da temelde iPXE'yi tamamen devre dışı bırakır ve yapılandırılamaz ( virtioyalnızca ağ cihazlarına yapışıyorsa ). İPXE makinelerinin ve PXE olmayan makinelerin karışık bir kurulumuna sahip olduğum için, bunun yapılandırılabilir olması için gerçekten ihtiyacım var.


Makinenin XML tanımı nerede?
Bryce Guinta

1
@BryceGuinta Önce bir VM oluşturun, ardından komutunu kullanarak XML tanımını (gelişmiş) düzenleyinvirsh edit <domain>
gertvdijk

5

Aynı konudaki deneylerim bana bazı ipuçları verdi:

Paket, kvm-ipxebirkaç PXE opsiyon ROM'unu içine yükler /usr/share/qemu/:

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

Bir şekilde bunlar otomatik olarak bulunur ve bu NIC'lerden biriyle önyükleme yaparken seabios tarafından kullanılır. chmod a= pxe*.romBu dosyalar üzerinde bir yapmak ve sanal makine başlattığınızda "hata" iletisi alıyorum

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

ama temiz ve PXE olmadan önyükleme yapar.


Teşekkürler. Bu bana bir çözüm sunuyor: virtiogenel ağ aygıtları ve e1000ePXE'ye ihtiyaç duyan VM'ler için kullanma . Ancak, hala bir hata olduğunu düşünüyorum. Bir şekilde Libvirt, doğru önyükleme parametrelerini SeaBIOS'a başarıyla geçirmez.
gertvdijk

Ne yapar chmod a=?
Bryce Guinta

5

Aşağıdaki seçenekleri komut satırında qemu-kvm'ye geçirerek Ubuntu 12.04'te başarabildim (romfile'ı boş olarak ayarlamak hiledir):

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

Güzel, ama bunu Libvirt XML makine tanımımda belirtebilir miyim?
gertvdijk

Komut satırından geçici olarak yeniden başlatma yapıyorsanız, işte bu yol. Biraz gürültü ekler, ancak XML dosyalarını düzenlemenize, tüm ağları veya benzerlerini düzenlemenize gerek kalmadan iPXE'yi anında öldürür.
i336_

0

Fotoğraflarınızdan, büyük olasılıkla VM BIOS ile ilgili olduğunu görebiliyorum. VM yapılandırması SeaBIOSayarların üzerine yazmamalıdır , bu da VM'nin PXEilk önce önyükleme yapmasına neden olmalıdır .

İlk olası çözüm için, Sanal Makinenin BIOS'una girip giremeyeceğinizi görmeye çalışın ve oradaki seçenekleri düzenleyin.

NOT: Araştırmam daha olası çözümleri veya nedenleri ortaya çıkarırken yanıtı güncellemeye devam edecek.

[EDIT # 1]: SeaBIOS'ta önyükleme sırasının nasıl ayarlanacağı hakkında bilgi burada bulabilirsiniz . Bu sorunu çözmek gerekir.


VM'nin BIOS'una nasıl girebilirim? SeaBIOS hakkındaki Wikipedia bana önyükleme zamanında F12'yi denemem gerektiğini söylüyor, ancak bu sadece bir kez iPXE girişimini atlamayı tetikliyor.
gertvdijk

@gertvdijk Şu anda bakıyorum. Öğrenir öğrenmez sana geri döneceğim.
NlightNFotis

@gertvdijk Bu bir şekilde ilgili görünüyor: seabios.org/pipermail/seabios/2012-March/003526.html
NlightNFotis

Teşekkürler, bugün yeni şeyler öğrendim. Bununla birlikte, bu sistem çapında ve yeni bir CBFS (çekirdek önyükleme dosya sistemi) oluşturmakla ilgili gibi görünüyor. Görebildiğim kadarıyla, PXE önyüklemesini tamamen devre dışı bırakır. Ben bu yaklaşımı sevmiyorum ve ben iPXE önyükleme girişimleri virt-manager GUI mümkün olduğunca çalışma zamanı önlemek mümkün olmalıdır düşünüyorum.
gertvdijk

@gertvdijk Devre dışı bıraktığını nereden biliyorsunuz? Tek görebildiğim, önyükleme sırasını ayarlamak, yani bir şey başka bir şeyden önce önyükleniyor .
NlightNFotis

-1

"-Net none" kullanarak bunu önlemek mümkün:

# qemu-system-i386 -net none

Ama sonra hiç ağınız yok! Bunun gerçekten bir cevap olmadığını düşünüyorum.
gertvdijk

Üzgünüm, OP'nin hala ağa ihtiyacı olduğu gerçeğini kaçırdım. Benim durumumda ağ olmadan çalışmak kabul edilebilirdi.
Catalin P
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.