ฉันจะปิดการใช้งานการบูตที่ไม่ต้องการของ iPXE ใน Libvirt / qemu-kvm ได้อย่างไร?


12

อย่างไรก็ตามหลังจากอัพเกรดเป็น 12.04 เครื่องเสมือนของฉันจะบู๊ตด้วยความพยายามในการบู๊ตจากเครือข่ายก่อนเสมอ ดูนี่:

ภาพหน้าจอ virt-manager

ในขณะที่ฉันไม่มีชุดการกำหนดค่า PXE:

การกำหนดค่าการบูต PXE

ฉันได้พยายาม:

  • เพื่อปิดการใช้เครื่องเทศโดยการเปลี่ยนemulatorไป/usr/bin/kvmจาก/usr/bin/kvm-spiceโดยการแก้ไขของ XML
  • Ctrl+ Bเพื่อกำหนดค่า iPXE แต่ไม่อนุญาตให้ปิดการใช้งานนี้เป็นตัวเลือกการบูต
  • การตั้งค่าประเภทอื่นของ NIC - ไม่ใช่ตัวเลือกฉันต้องการvirtioด้วยเหตุผลด้านประสิทธิภาพ อย่างไรก็ตามe1000eก็ใช้งานไม่ได้เช่นกัน
  • การลบ NIC: ทำงาน อย่างไรก็ตามฉันต้องการเครือข่าย
  • Googling ไปรอบ ๆ ยาก ผลลัพธ์จำนวนมากเกี่ยวกับการบู๊ต PXE ที่ล้มเหลว

ไม่ใช่ปัญหาใหญ่ แต่เพิ่มเวลาบูตได้ 50-100% ที่นี่ (การบูตจาก SSD) ดังนั้นจึงค่อนข้างยาวและทำให้ฉันรำคาญ

ฉันจะปิดการใช้งานสิ่งนี้และบูตจากฮาร์ดดิสก์เสมือนโดยตรงได้อย่างไร

คำตอบ:


6

คำตอบสั้น ๆ

อัปเกรดเป็น libvirt 0.9.10+ (มีให้ใน Quantal) และเพิ่ม<rom bar='off'/>ตัวเลือกในการกำหนดค่าอินเทอร์เฟซของข้อกำหนด XML ของเครื่อง

คำตอบที่ยาว

ตอนนี้ที่จริงฉันใช้ตัวเลือกการบูตของ iPXE ฉันเห็นว่าการหน่วงเวลาที่เกิดขึ้นในหน้าจอ SeaBIOS ไม่ใช่การพยายามบูตจริง มันเป็นเพียงแค่โหลดตัวเลือกเครือข่ายรอม Virtio และใช้เวลาเพียงไม่กี่วินาทีที่น่ารำคาญคือมันยังไม่ได้ทำพยายามบูต iPXE สิ่งนี้ทำให้ฉันอ่านเอกสาร libvirt อีกครั้งและฉันได้ค้นพบสิ่งที่น่าสนใจ

เท่าที่ฉันหาได้ตั้งแต่ libvirt 0.9.7 พฤติกรรมเปลี่ยนไปโหลด ROM ตัวเลือกของอินเตอร์เฟสโดยค่าเริ่มต้น Ubuntu 11.10 มาพร้อมกับ 0.9.2, Ubuntu 12.04 มาพร้อมกับ 0.9.8 นี่ทำให้เข้าใจได้อย่างชัดเจนว่าทำไมฉันถึงเห็นสิ่งนี้เกิดขึ้นตั้งแต่อัพเกรดเป็น 12.04

นอกจากนี้สิ่งนี้ยังสามารถปรับแต่งได้ใน libvirt เวอร์ชั่น 0.9.10 พร้อม<rom bar='off'/>ตัวเลือกใน XML! (ดูที่นี่ ) อย่างไรก็ตาม libvirt รุ่นนั้นไม่มีใน Ubuntu 12.04 และฉันจะต้องอัปเกรดเป็น 12.10 หรือย้อนกลับ นี่ทำให้อูบุนตู 12.04 ตกลงระหว่างสองอุจจาระ

วิธีแก้ไขอื่น ๆ กำลังลบไฟล์ ROM ของตัวเลือกตามที่ระบุโดย @AH 'และการเปลี่ยน' ระบบแฟ้ม 'ของ SeaBIOS ตามที่ระบุโดย @NlightNFotis อย่างไรก็ตามโดยทั่วไปแล้วทั้งสองวิธีจะปิดการใช้งาน iPXE อย่างสมบูรณ์และไม่สามารถกำหนดค่าได้ (หากติดกับvirtioอุปกรณ์เครือข่ายเท่านั้น) เนื่องจากฉันมีการติดตั้งเครื่องจักร iPXE และเครื่องที่ไม่ใช่ PXE แบบผสมฉันจึงต้องกำหนดค่านี้จริงๆ


นิยาม XML ของเครื่องอยู่ที่ไหน
ไบรซ์ Guinta

1
@BryceGuinta สร้าง VM ก่อนจากนั้นแก้ไขคำจำกัดความของ XML (ขั้นสูง) โดยใช้คำสั่งvirsh edit <domain>
gertvdijk

5

การทดลองของฉันในเรื่องเดียวกันทำให้ฉันมีคำแนะนำ:

แพคเกจkvm-ipxeจะติดตั้ง ROM ตัวเลือก PXE หลายตัวใน/usr/share/qemu/:

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

อย่างใดสิ่งเหล่านี้จะถูกค้นพบโดยอัตโนมัติและใช้โดย seabios เมื่อบูทด้วย NIC เหล่านี้ เมื่อฉันทำchmod a= pxe*.romไฟล์เหล่านี้และเริ่มเครื่องเสมือนฉันได้รับข้อความ "ข้อผิดพลาด"

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

แต่มันบูทหมดจดและไม่มี PXE


ขอบคุณ ที่ให้ฉันเล็กน้อยของการแก้ปัญหา: ใช้virtioสำหรับอุปกรณ์เครือข่ายทั่วไปและe1000eสำหรับ VMs ที่ต้องการ PXE อย่างไรก็ตามฉันยังคิดว่ามันเป็นข้อผิดพลาด อย่างใด Libvirt ไม่ผ่านพารามิเตอร์การบูตที่ถูกต้องไปยัง SeaBIOS
gertvdijk

อะไรchmod a=ทำอย่างไร
ไบรซ์ Guinta

5

ฉันสามารถรับรอบนี้ใน Ubuntu 12.04 โดยผ่านตัวเลือกต่อไปนี้เพื่อ qemu-kvm บนบรรทัดคำสั่ง (การตั้งค่า romfile ให้ว่างเปล่าเป็นเคล็ดลับ):

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

เยี่ยมยอด แต่ฉันสามารถระบุสิ่งนี้ในคำจำกัดความของเครื่อง Libvirt XML ได้หรือไม่
gertvdijk

หากคุณกำลังทำ ad-hoc รีบูทซ้ำจาก commandline นี่เป็นวิธีที่จะไป มันเพิ่มเสียงรบกวนเล็กน้อย แต่จะฆ่า iPXE ได้ทันทีโดยไม่ต้องให้คุณแก้ไขไฟล์ XML, ทำนุกเครือข่ายทั้งหมดหรือคล้ายกัน
i336_

0

จากภาพของคุณฉันเห็นได้ว่ามีโอกาสมากที่สุดที่จะทำกับ VM BIOS การกำหนดค่า VM ต้องไม่เขียนทับSeaBIOSการตั้งค่าบางสิ่งที่ต้องทำให้ VM บูตจากPXEครั้งแรก

สำหรับวิธีแก้ปัญหาแรกที่เป็นไปได้ลองดูว่าคุณสามารถเข้าไบออสของเครื่องเสมือนและแก้ไขตัวเลือกที่แพร่หลายได้ไหม

หมายเหตุ:จะอัปเดตคำตอบต่อไปในขณะที่การวิจัยของฉันเปิดเผยวิธีแก้ปัญหาหรือสาเหตุที่เป็นไปได้มากขึ้น

[แก้ไข # 1]:ท่านสามารถหาข้อมูลเกี่ยวกับวิธีการตั้งค่าลำดับการบูตใน SeaBIOS ที่นี่ ที่ควรแก้ปัญหา


ฉันจะเข้าสู่ BIOS ของ VM ได้อย่างไร วิกิพีเดียเกี่ยวกับ SeaBIOSบอกฉันว่าฉันควรลอง F12 ตอนบูต แต่นั่นเป็นเพียงการกระตุ้นให้ข้ามการลอง iPXE เพียงครั้งเดียว
gertvdijk

@gertvdijk ฉันกำลังมองหาอยู่ ฉันจะกลับไปหาคุณทันทีที่ฉันพบ
NlightNFotis

@gertvdijk ดูเหมือนว่าจะเกี่ยวข้องกัน: seabios.org/pipermail/seabios/2012-March/003526.html
NlightNFotis

ขอบคุณเรียนรู้สิ่งใหม่วันนี้ อย่างไรก็ตามสิ่งนี้ดูเหมือนจะใช้กับทั้งระบบและเกี่ยวกับการสร้าง CBFS ใหม่ (ระบบไฟล์บูตหลัก) เท่าที่ฉันเห็นมันยังปิดการบูท PXE ทั้งหมด ฉันไม่ชอบวิธีการนี้และฉันคิดว่ามันควรจะเป็นไปได้ที่จะป้องกันการบูตของ iPXE พยายามรันไทม์ที่เป็นไปได้ใน GUI-virt-manager
gertvdijk

@gertvdijk คุณรู้ได้อย่างไรว่ามันปิดการใช้งาน? ทั้งหมดที่ผมสามารถมองเห็นคือการตั้งค่าลำดับการบูตที่หมายถึงบางสิ่งบางอย่างได้รับ booted ก่อนที่จะมีอย่างอื่น
NlightNFotis

-1

ฉันสามารถป้องกันได้โดยใช้ "-net none":

# qemu-system-i386 -net none

แต่คุณไม่มีเครือข่ายใด ๆ เลย! ฉันคิดว่านี่ไม่ใช่คำตอบจริงๆ
gertvdijk

ขออภัยฉันพลาดความจริงที่ว่า OP ยังคงต้องการเครือข่าย ในกรณีของฉันทำงานโดยไม่มีเครือข่ายเป็นที่ยอมรับ
Catalin P
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.