Bagaimana cara menonaktifkan upaya boot iPXE yang tidak diinginkan di Libvirt / qemu-kvm?

12

Entah bagaimana setelah memutakhirkan ke 12,04, mesin virtual saya selalu boot dengan upaya untuk boot dari jaringan terlebih dahulu. Lihat ini:

tangkapan layar virt-manager

sementara saya tidak memiliki set konfigurasi PXE:

Konfigurasi boot PXE

Saya sudah mencoba:

  • untuk menonaktifkan SPICE, dengan mengubah emulatorke /usr/bin/kvmdari /usr/bin/kvm-spicedengan mengedit XML.
  • Ctrl+ Buntuk mengkonfigurasi iPXE, tetapi tidak membiarkannya menonaktifkan ini sebagai opsi boot.
  • pengaturan jenis NIC lainnya - bukan pilihan, saya perlu virtiountuk alasan kinerja. Namun, e1000etidak berhasil juga.
  • menghapus NIC: works. Namun, saya perlu jaringan.
  • Googling di sekitar. Keras. Banyak hasil tentang kegagalan boot PXE yang dikonfigurasi.

Bukan masalah besar, tapi ini meningkatkan waktu boot 50-100% di sini (booting dari SSD), jadi ini relatif lama dan mengganggu saya.

Bagaimana saya bisa menonaktifkan ini dan boot dari hard disk virtual secara langsung?

gertvdijk
sumber

Jawaban:

6

Jawaban singkat

Tingkatkan ke libvirt 0.9.10+ (tersedia dalam Quantal) dan tambahkan <rom bar='off'/>opsi ke konfigurasi antarmuka definisi XML mesin.

Jawaban panjang

Sekarang saya benar-benar menggunakan opsi boot iPXE saya melihat bahwa keterlambatan yang terjadi di layar SeaBIOS bukanlah upaya boot yang sebenarnya. Ini hanya memuat Virtio network option ROM dan itu membutuhkan beberapa detik yang menjengkelkan, yaitu belum melakukan upaya boot iPXE . Ini mendorong saya untuk membaca dokumentasi libvirt lagi, dan saya membuat penemuan yang menarik.

Sejauh yang saya bisa temukan, sejak libvirt 0.9.7 perilaku telah berubah untuk memuat ROM opsi antarmuka secara default. Ubuntu 11.10 dikirimkan bersama 0.9.2, Ubuntu 12.04 hadir dengan 0.9.8. Ini jelas masuk akal mengapa saya melihat ini terjadi sejak peningkatan ke 12,04.

Selain itu, ini telah menjadi dapat dikonfigurasi dalam versi libvirt 0.9.10 dengan <rom bar='off'/>opsi dalam XML! (lihat di sini ) Namun, versi libvirt tidak tersedia di Ubuntu 12.04 dan saya harus memutakhirkan ke 12.10 atau mendukungnya. Ini membuat Ubuntu 12,04 jatuh di antara dua bangku.

Solusi lain adalah menghapus file ROM opsi seperti yang ditunjukkan oleh @AH 'dan mengubah' filesystem 'SeaBIOS seperti yang ditunjukkan oleh @NlightNFotis. Namun, kedua cara ini pada dasarnya akan menonaktifkan iPXE sepenuhnya dan tidak dapat dikonfigurasi (jika hanya berpegang pada virtioperangkat jaringan). Karena saya memiliki pengaturan campuran mesin iPXE dan mesin non-PXE, saya benar-benar membutuhkan ini dapat dikonfigurasi.

gertvdijk
sumber
Di mana definisi XML mesin?
Bryce Guinta
1
@BryceGuinta Buat VM terlebih dahulu, lalu edit definisi XML-nya (lanjutan) menggunakan perintahvirsh edit <domain>
gertvdijk
5

Eksperimen saya pada masalah yang sama memberi saya beberapa petunjuk:

Paket kvm-ipxemenginstal beberapa ROM opsi PXE ke /usr/share/qemu/:

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

Entah bagaimana ini secara otomatis ditemukan dan digunakan oleh seabios ketika boot dengan salah satu NIC ini. Ketika saya melakukan chmod a= pxe*.rompada file-file ini dan memulai mesin virtual saya mendapatkan pesan "kesalahan"

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

tapi boot dengan bersih dan tanpa PXE.

AH
sumber
Terima kasih. Itu memberi saya sedikit solusi: menggunakan virtiountuk perangkat jaringan umum dan e1000euntuk VM yang membutuhkan PXE. Namun, saya masih berpikir itu bug. Entah bagaimana Libvirt tidak berhasil meneruskan parameter booting yang tepat ke SeaBIOS.
gertvdijk
Apa yang chmod a=harus dilakukan
Bryce Guinta
5

Saya dapat menyiasatinya di Ubuntu 12.04 dengan melewatkan opsi berikut untuk qemu-kvm pada command-line (mengatur romfile ke blank adalah trik):

-netdev user,id=hostnet0 -device virtio-net-pci,romfile=,netdev=hostnet0
RolKau
sumber
Keren, tetapi bisakah saya menentukan ini dalam definisi mesin Libvirt XML saya?
gertvdijk
Jika Anda melakukan reboot berulang dari ad-hoc secara ad-hoc, inilah caranya. Ini menambahkan sedikit kebisingan, tetapi secara instan membunuh iPXE tanpa mengharuskan Anda untuk mengedit file XML, nuke semua jaringan, atau sejenisnya.
i336_
0

Dari gambar Anda, saya bisa melihat bahwa kemungkinan besar itu ada hubungannya dengan VM BIOS. Konfigurasi VM tidak boleh menimpa SeaBIOSpengaturan, sesuatu yang harus menyebabkan VM boot dari PXEpertama.

Untuk solusi pertama yang mungkin, cobalah untuk melihat apakah Anda dapat memasukkan BIOS Mesin Virtual dan mengedit opsi yang ada di sana.

CATATAN: Akan terus memperbarui jawaban sementara riset saya mengungkap lebih banyak solusi atau penyebab yang mungkin.

[EDIT # 1]: Anda dapat menemukan informasi tentang cara mengatur urutan boot di SeaBIOS di sini . Itu harus menyelesaikan masalah.

NlightNFotis
sumber
Bagaimana saya bisa masuk ke BIOS VM? Wikipedia tentang SeaBIOS memberi tahu saya bahwa saya harus mencoba F12 saat boot, tetapi itu hanya memicu melewatkan upaya iPXE satu kali.
gertvdijk
@ gertvdijk Saya sedang mencari ke dalamnya. Saya akan menghubungi Anda segera setelah saya mengetahuinya.
NlightNFotis
@gertvdijk Ini sepertinya terkait: seabios.org/pipermail/seabios/2012-March/003526.html
NlightNFotis
Terima kasih, pelajari hal baru hari ini. Namun, ini tampaknya berlaku di seluruh sistem dan tentang membangun CBFS baru (filesystem inti boot). Sejauh yang saya lihat, ini juga menonaktifkan boot PXE sama sekali. Saya tidak suka pendekatan ini dan saya pikir itu harus dimungkinkan untuk mencegah upaya booting iPXE runtime seperti yang dimungkinkan dalam virt-manager GUI.
gertvdijk
@gertvdijk Bagaimana Anda tahu itu menonaktifkannya? Yang bisa saya lihat adalah mengatur urutan boot, yang berarti sesuatu akan di-boot sebelum sesuatu yang lain .
NlightNFotis
-1

Saya dapat mencegah hal ini menggunakan "-net none":

# qemu-system-i386 -net none
Catalin P
sumber
Tetapi Anda tidak memiliki jaringan sama sekali! Saya menganggap ini bukan jawaban.
gertvdijk
Maaf, saya melewatkan fakta bahwa OP masih membutuhkan jaringan. Dalam kasus saya menjalankan tanpa jaringan dapat diterima.
Catalin P