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


Entah bagaimana setelah meng-upgrade ke 12.04, mesin virtual saya selalu boot dengan upaya untuk boot dari jaringan terlebih dahulu. Lihat ini:

virt-manager screenshot

sementara saya tidak memiliki set konfigurasi PXE:

PXE boot configuration

Saya sudah mencoba:

  • untuk menonaktifkan SPICE, dengan mengubah emulator untuk /usr/bin/kvm dari /usr/bin/kvm-spice dengan mengedit XML.
  • Ctrl+B untuk mengkonfigurasi iPXE, tetapi tidak membiarkan menonaktifkan ini sebagai opsi boot.
  • pengaturan jenis lain dari NIC - bukan pilihan, saya butuhkan virtio untuk alasan kinerja. Namun, e1000e tidak berhasil juga.
  • menghapus NIC: bekerja. Namun, saya perlu jaringan.
  • Googling sekitar. Keras. Banyak hasil adalah tentang gagal mengkonfigurasi sepatu PXE.

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

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


11
2017-09-20 13:39


asal




Jawaban:


Jawaban singkat

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

Jawaban panjang

Sekarang saya benar-benar menggunakan opsi boot iPXE saya melihat bahwa penundaan yang terjadi di layar SeaBIOS bukan upaya boot yang sebenarnya. Ini hanya memuat ROM opsi jaringan Virtio dan yang membutuhkan beberapa detik yang mengganggu, yaitu itu belum melakukan upaya boot iPXE. Ini membuat saya membaca kembali dokumentasi libvirt, dan saya membuat penemuan yang menarik.

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

Selain itu, ini telah dapat dikonfigurasi dalam versi libvirt 0.9.10 dengan <rom bar='off'/> pilihan dalam XML! (Lihat sini) Namun, versi libvirt itu tidak tersedia di Ubuntu 12.04 dan saya harus meng-upgrade ke 12.10 atau backport-nya. Ini membuat Ubuntu 12.04 jatuh di antara dua bangku.

Solusi lainnya adalah menghapus file ROM opsi seperti yang ditunjukkan oleh @ A.H. ' dan mengubah 'filesystem' SeaBIOS seperti yang ditunjukkan oleh @NlightNFotis. Namun, kedua cara pada dasarnya akan menonaktifkan iPXE sepenuhnya dan itu tidak dapat dikonfigurasi (jika menempel virtio perangkat jaringan saja). Karena saya memiliki pengaturan campuran mesin iPXE dan mesin non-PXE, saya benar-benar membutuhkan ini agar dapat dikonfigurasi.


6
2017-12-07 13:58



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


Eksperimen saya tentang masalah yang sama memberi saya beberapa petunjuk:

Paket kvm-ipxe menginstal beberapa ROM opsi PXE /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 dari NIC ini. Ketika saya melakukan chmod a= pxe*.rom pada file-file ini dan memulai mesin virtual saya mendapatkan pesan "kesalahan"

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

tetapi sepatu bot bersih dan tanpa PXE.


5
2017-09-23 15:45



Terima kasih. Itu memberi saya sedikit solusi: menggunakan virtio untuk perangkat jaringan umum dan e1000e untuk VM yang membutuhkan PXE. Namun, saya masih berpikir itu bug. Entah bagaimana Libvirt tidak berhasil melewatkan parameter boot yang tepat ke SeaBIOS. - gertvdijk
@AH. Terima kasih, bekerja untukku! - mcandre
Apa yang terjadi chmod a= melakukan? - Bryce Guinta


Saya bisa menyiasati ini di Ubuntu 12.04 dengan memberikan opsi-opsi berikut ke qemu-kvm pada baris perintah (pengaturan romfile menjadi kosong adalah triknya):

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

3
2018-05-30 22:51



Keren, tapi bisakah saya menetapkan ini dalam definisi mesin Libvirt XML saya? - gertvdijk
Jika Anda melakukan reboot ulang secara ad-hoc dari commandline, ini adalah cara untuk pergi. Ini menambah sedikit noise, tetapi secara instan membunuh iPXE tanpa mengharuskan Anda untuk mengedit file XML, nuke semua jaringan, atau yang serupa. - i336_


Dari gambar Anda, saya dapat melihat bahwa kemungkinan besar ada hubungannya dengan VM BIOS. Konfigurasi VM tidak boleh ditimpa SeaBIOS'Pengaturan, sesuatu yang harus menyebabkan VM untuk boot dari PXE pertama.

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 penelitian saya mengungkap kemungkinan solusi atau penyebab.

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


0
2017-09-20 13:55



Bagaimana saya bisa masuk ke BIOS VM? Wikipedia tentang SeaBIOS memberitahu saya, saya harus mencoba F12 pada saat boot, tetapi itu hanya memicu melewatkan upaya iPXE sekali. - gertvdijk
@gertvdijk Saat ini saya sedang menyelidikinya. Saya akan menghubungi Anda segera setelah saya mengetahuinya. - NlightNFotis
@gertvdijk Sepertinya entah bagaimana hal ini 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 (core boot filesystem). Sejauh yang saya lihat, itu juga menonaktifkan booting PXE sama sekali. Saya tidak suka pendekatan ini dan saya pikir itu harus mungkin untuk mencegah upaya booting booting iPXE seperti yang mungkin dalam GUI virt-manager. - gertvdijk
@gertvdijk Bagaimana Anda tahu itu menonaktifkannya? Yang bisa saya lihat adalah mengatur urutan boot, artinya ada sesuatu yang di-boot sebelum sesuatu yang lain. - NlightNFotis


Saya dapat mencegah ini menggunakan "-tidak ada":

# qemu-system-i386 -net none

-1
2017-11-11 00:26



Tetapi Anda tidak memiliki jaringan sama sekali! Saya menganggap ini tidak benar-benar jawaban. - gertvdijk
Maaf, saya melewatkan fakta bahwa OP masih membutuhkan jaringan. Dalam kasus saya berjalan tanpa jaringan dapat diterima. - Catalin P