libvirt qemu-system-arm, ошибка: ошибка XML: нет доступных шин PCI

Я пытаюсь запустить образ Linux, созданный с помощью buildroot, с помощью libvirt.

Если я использую qemu-system-arm напрямую, все работает так, как задумано:

/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

Однако, когда я пытаюсь создать xml из моей командной строки qemu, это не удается:

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

Я также попытался создать базовый XML вручную:

<?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>

который терпит неудачу с той же ошибкой:

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

Я уже пробовал с совершенно новой и последней версией libvirt-3.0.0, но безуспешно.

Что мне нужно изменить в моем cmdline/xml?


person sp85qZoxf6    schedule 15.02.2017    source источник


Ответы (1)


virsh domxml-из-родной проблемы

Причина, по которой команда domxml-from-native не работает, заключается в том, что базовый код в libvirt, выполняющий синтаксический анализ, ожидает, что суффикс qemu-system- будет имя канонической архитектуры, а arm — нет. В вашем случае может показаться, что вы хотите, чтобы arm сопоставлялось с armv7l, которое является каноническим именем архитектуры. Вы можете получить это, создав программную ссылку qemu-system-armv7l, указывающую на qemu-system-arm вашей системы, а затем использовать расположение программной ссылки в вашем qemu.args.

ссылки на код

проблемы с xml

Ваш xml дает вам ту же ошибку по нескольким несвязанным причинам. В элементе type под os нужно указать arch="armv7l" (или другое каноническое имя арки руки). Также обратите внимание, что ссылки kernel и dtb должны быть абсолютными путями или иметь префикс .. Наконец, некоторые из ваших устройств требуют шины PCI и не будут работать с машиной, которую вы собираетесь использовать. Рассмотрим следующую альтернативу.

<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>
person Ryan Goodfellow    schedule 04.03.2018