2017-02-15 2 views
1

Ich versuche ein Linux-Image zu erstellen, das ich mit buildroot mit libvirt erstellt habe.libvirt qemu-system-arm, Fehler: XML-Fehler: Keine PCI-Busse verfügbar

Wenn i qemu-system-Arm direkt verwenden, funktioniert alles wie beabsichtigt:

/usr/bin/qemu-system-arm \ 
-M versatilepb \ 
-kernel output/images/zImage \ 
-dtb output/images/versatile-pb.dtb \ 
-drive index=0,file=output/images/rootfs.ext2,if=scsi,format=raw \ 
-append "root=/dev/sda console=ttyAMA0,115200" \ 
-net nic,model=rtl8139 \ 
-net user \ 
-nographic 

Allerdings, wenn ich versuche, die XML-Daten aus meinem qemu cmdline zu erstellen, ist es nicht:

$ virsh domxml-from-native qemu-argv qemu.args                  
error: XML error: No PCI buses available 

ich habe versucht, auch eine grundlegende XML von Hand zu erstellen:

<?xml version='1.0'?> 
<domain type='qemu'> 
     <name>Linux ARM</name> 
     <uuid>ce1326f0-a9a0-11e3-a5e2-0800200c9a66</uuid> 
     <memory>131072</memory> 
     <currentMemory>131072</currentMemory> 
     <vcpu>1</vcpu> 
     <os> 
       <type machine='versatilepb'>hvm</type> 
       <kernel>zImage</kernel> 
       <cmdline>root=/dev/sda console=ttyAMA0,115200</cmdline> 
       <dtb>versatile-pb.dtb</dtb> 
     </os> 
     <devices> 
       <disk type='file' device='disk'> 
         <source file='rootfs.ext2'/> 
         <target dev="sda" bus="scsi"/> 
       </disk> 
       <interface type='network'> 
         <source network='default'/> 
       </interface> 
     </devices> 
</domain> 

, die mit dem gleichen Fehler fehlschlägt:

$ virsh create guest-test.xml 
error: Failed to create domain from guest-test.xml 
error: XML error: No PCI buses available 

ich bereits mit dem brandneuen versucht und neueste libvirt-3.0.0, ohne Erfolg

Was muss ich in meinem cmdline/xml ändern?

Antwort

1

virsh domxml-von-native Ausgabe

Der Grund, warum der domxml-from-native Befehl funktioniert nicht, weil der zugrundeliegende Code in libvirt, die das Parsing tun erwartet das Suffix von qemu-system- ein canonical architecture name zu sein, und arm nicht. In Ihrem Fall scheint es so, als wollten Sie arm auf armv7l mappen, was ein kanonischer Architekturname ist. Sie können dies von ziehen durch einen Softlink qemu-system-armv7l erstellen, die Sie die qemu-system-arm Ihr System zeigt und dann die Position des Softlink verweist

xml Ausgaben

Ihr xml gibt Ihnen den gleichen Fehler für mehrere nicht miteinander verbundene Gründe. Im type Element unter os müssen Sie arch="armv7l" (oder einen anderen kanonischen Arm-Arch-Namen) angeben. Beachten Sie außerdem, dass die Referenzen kernel und dtb absolute Pfade sein müssen oder mit . vorangestellt werden müssen. Schließlich benötigen einige der Geräte, die Sie benötigen, einen PCI-Bus und funktionieren nicht mit dem Gerät, für das Sie arbeiten. Betrachten Sie die folgende Alternative.

<domain type='qemu'> 
    <name>Linux ARM</name> 
    <uuid>ce1326f0-a9a0-11e3-a5e2-0800200c9a66</uuid> 
    <memory>131072</memory> 
    <currentMemory>131072</currentMemory> 
    <vcpu>1</vcpu> 
    <os> 
    <type arch="armv7l" machine='versatilepb'>hvm</type> 
    <kernel>/path/to/zImage</kernel> 
    <cmdline>root=/dev/sda console=ttyAMA0,115200</cmdline> 
    <dtb>/path/to/versatile-pb.dtb</dtb> 
    </os> 
    <devices> 
    <disk type="file" device="disk"> 
     <driver name="qemu" type="qcow2"></driver> 
     <source file="/path/to/root.qcow2"></source> 
     <target dev="sda" bus="sd"></target> 
    </disk> 
    <serial type="tcp"> 
     <source mode="bind" host="localhost" service="4000"></source> 
     <protocol type="telnet"></protocol> 
    </serial> 
    </devices> 
</domain> 
Verwandte Themen