Преобразование аргументов командной строки QEMU в xml домена libvirt

Мне трудно преобразовать эту команду QEMU в XML домена libvirt:

qemu-system-x86_64 -enable-kvm \
-m 3072 \
-cpu core2duo \
-machine q35 \
-smp 2 \
-usbdevice keyboard \
-usbdevice mouse \
-vga std \
-device isa-applesmc,osk="${osx_osk_key}" \
-kernel "${chameleon_file_path}" \
-device ide-drive,bus=ide.2,drive=MacHDD \
-drive id=MacHDD,if=none,cache=none,file="${vm_hdd_img_file_path}"
-netdev user,id=hub0port0 \
-device virtio-net,netdev=hub0port0,id=eth0

Он отлично работает, если я вызываю его из терминала (Ubuntu 14.10), но virsh domxml-from-native qemu-argv не работает для устройства MacHDD с этой ошибкой:

error: internal error: missing index/unit/bus parameter in drive 'id=MacHDD,if=none,cache=none,file="${vm_hdd_img_file_path}"'

(Примечание: конечно, я пробовал с реальными путями вместо переменных, та же ошибка - и если я удалю последние два аргумента, он преобразует его в доменный XML даже с включенными переменными)

Как я мог это решить? Или что будет эквивалентно последним двум аргументам в домене xml? (Перепробовал много разных комбинаций, но не смог заставить его работать с libvirt/virsh)

ИЗМЕНИТЬ

Для справки, это то, что я получаю, запуская команду virsh domain-from-native без -device -drive

<domain type='kvm' xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0'>
  <name>unnamed</name>
  <uuid>38cafecb-4774-4590-83eb-e576a79aab93</uuid>
  <memory unit='KiB'>3145728</memory>
  <currentMemory unit='KiB'>3145728</currentMemory>
  <vcpu placement='static'>2</vcpu>
  <os>
    <type arch='x86_64' machine='q35'>hvm</type>
    <kernel>${chameleon_file_path}</kernel>
  </os>
  <features>
    <acpi/>
  </features>
  <cpu mode='custom' match='exact'>
    <model fallback='allow'>core2duo</model>
  </cpu>
  <clock offset='utc'/>
  <on_poweroff>destroy</on_poweroff>
  <on_reboot>restart</on_reboot>
  <on_crash>destroy</on_crash>
  <devices>
    <emulator>/usr/bin/qemu-system-x86_64</emulator>
    <controller type='sata' index='0'/>
    <controller type='pci' index='0' model='pcie-root'/>
    <controller type='pci' index='1' model='dmi-to-pci-bridge'/>
    <controller type='pci' index='2' model='pci-bridge'/>
    <input type='keyboard' bus='usb'/>
    <input type='mouse' bus='usb'/>
    <input type='mouse' bus='ps2'/>
    <input type='keyboard' bus='ps2'/>
    <graphics type='sdl'/>
    <video>
      <model type='vga' vram='9216' heads='1'/>
    </video>
    <memballoon model='none'/>
  </devices>
  <qemu:commandline>
    <qemu:arg value='-device'/>
    <qemu:arg value='isa-applesmc,osk=&quot;${osx_osk_key}&quot;'/>
    <qemu:arg value='-netdev'/>
    <qemu:arg value='user,id=hub0port0'/>
    <qemu:arg value='-device'/>
    <qemu:arg value='virtio-net,netdev=hub0port0,id=eth0'/>
  </qemu:commandline>
</domain>

Но я не могу понять, что будет эквивалентно -device -drive в этой ситуации, и я не могу создать виртуальную машину из этого домена xml.

Даже без MacHDD -device и -drive я получаю эту ошибку, когда пытаюсь создать виртуальную машину с $ virsh create

error: Failed to create domain from libvirt.xml
error: internal error: cannot load AppArmor profile 'libvirt-38cafecb-4774-4590-83eb-e576a79aab93'

person Viktor Benei    schedule 08.10.2014    source источник


Ответы (3)


Это работает для меня.

Сдача:

-drive id=MacHDD,if=none,cache=none,file="${vm_hdd_img_file_path}"

За

-drive id=MacHDD,if=ide,index=2,file="${vm_hdd_img_file_path}"
person Wilson Arteaga    schedule 18.02.2015

TBH Я не очень хорошо знаком с libvirt, но не будет ли это чем-то вроде:

   <disk type='file' device='disk'>
     <source file='/path/to/image.img'/>
     <target dev='hda' bus='ide'/>
   </disk>
person Jeremy Davis    schedule 24.10.2014
comment
Я думаю, что пробовал что-то вроде этого, но я попробую. - person Viktor Benei; 25.10.2014

Как насчет этого?

<disk type='file' device='disk'>
  <driver name='qemu' type='qcow2'/>
  <source file='/home/vbox/mac_hdd_10.10Chimera410R1280x1024x32TV.img'/>
  <target dev='hda' bus='ide'/>
  <boot order='1'/>
  <address type='drive' controller='0' bus='0' target='0' unit='0'/>
</disk>
<seclabel type='dynamic' model='apparmor' relabel='yes'/>  

Вот что сделал kimchi, когда я создал виртуальную машину с помощью virt-manager. И спасибо за эту <qemu:commandline> штуку. Я искал это. Если возможно, не могли бы вы указать какую-либо информацию о звуке, работающем с Mac OS X KVM?

person rahoolm    schedule 15.05.2015