Замените командную строку QEMU на libvirt

В настоящее время я использую аргументы командной строки qemu для запуска виртуальной машины.

Моя командная строка:

/home/gnayan/QEMU-devel/qemu-ubuntu/qemu/x86_64-softmmu/qemu-system-x86_64
 -trace events=/home/gnayan/qemu_events 
-drive file=/home/gnayan/CUSTOM_QEMU_SYSTEM/UBUNTU/ubuntu.img,if=virtio,format=raw
-drive file=/home/gnayan/CUSTOM_QEMU_SYSTEM/UBUNTU/u1.img,if=virtio,format=raw 
-m 1G -net nic,model=virtio -net user -redir tcp:2222::22 -enable-kvm &

Я хотел бы запустить ту же виртуальную машину, используя инструменты libvirt, такие как virsh или virt-install и т. д., однако мне трудно это сделать.

Я создал свой домен xml:

<domain type="kvm">
        <name>first</name>
        <currentMemory unit="MB">1024</currentMemory>
        <memory unit="MB">1024</memory>
        <os>
                <type arch='x86_64'>hvm</type>
        </os>
        <devices>
                <emulator>/home/gnayan/QEMU-devel/qemu-ubuntu/qemu/x86_64-softmmu/qemu-system-x86_64</emulator>
                <disk type='file' device='disk'>
                        <source file='/home/gnayan/CUSTOM_QEMU_SYSTEM/UBUNTU/ubuntu.img'/>
                        <driver name='qemu' type='raw'/>
                        <target dev='vda' bus='virtio'/>
                </disk>
        </devices>
</domain>

Затем попытался создать виртуальную машину, используя virsh define first.xml, я получаю следующую ошибку:

error: Failed to define domain from first.xml
error: internal error: Child process (LC_ALL=C PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin /home/gnayan/QEMU-devel/qemu-ubuntu/qemu/x86_64-softmmu/qemu-system-x86_64 -help) unexpected exit status 126: libvirt:  error : cannot execute binary /home/gnayan/QEMU-devel/qemu-ubuntu/qemu/x86_64-softmmu/qemu-system-x86_64: Permission denied

Что может быть не так в моих настройках ubuntu.

Я установил qemu из исходников.

Путь /home/gnayan/QEMU-devel/qemu-ubuntu/qemu/x86_64-softmmu/ не был экспортирован, потребуется ли libvirt этот путь?

Я также получаю следующее сообщение в dmesg

type=1400 audit(1470991545.250:44): apparmor="DENIED" operation="exec" profile="/usr/sbin/libvirtd" name="/home/gnayan/QEMU-devel/qemu-ubuntu/qemu/x86_64-softmmu/qemu-system-x86_64" pid=21287 comm="libvirtd" requested_mask="x" denied_mask="x" fsuid=0 ouid=0
[19990.781774] audit: type=1400 audit(1470991545.258:45): apparmor="DENIED" operation="exec" profile="/usr/sbin/libvirtd" name="/home/gnayan/QEMU-devel/qemu-ubuntu/qemu/x86_64-softmmu/qemu-system-x86_64" pid=21288 comm="libvirtd" requested_mask="x" denied_mask="x" fsuid=0 ouid=0

person Haswell    schedule 12.08.2016    source источник


Ответы (1)


я бы сделал это

virt-install --quiet --network bridge=bridge-name,model=virtio --name first  --ram=1024 \
--vcpus=1 --disk path=/home/gnayan/CUSTOM_QEMU_SYSTEM/UBUNTU/ubuntu.img,format=raw\
--disk path=/home/gnayan/CUSTOM_QEMU_SYSTEM/UBUNTU/u1.img,format=raw \
--graphics none --os-type=linux --import --autostart & \
  • имя-моста, чтобы связать его с мостом, который вы должны настроить в своей системе (и добавить физический внешний порт, чтобы разрешить доступ виртуальной машины к внешней сети)
  • Параметр --import связан с тем, что я предполагаю, что ОС Ubuntu уже установлена.

  • Для перенаправления портов я бы использовал iptables вместо того, чтобы делать это в стиле Vagrant. Но просто мнение. Не уверен, что это возможно в KVM.

Мои разрешения для изображений в /var/lib/libvirtd/images/ -rw-r--r-- 1 qemu qemu

person Ferrandinand    schedule 12.08.2016
comment
Привет, спасибо, есть идеи, как добавить аргумент трассировки в virt-install или virsh? - person Haswell; 16.08.2016
comment
Вы можете перенаправить стандартный вывод в указанный файл, если хотите, но, на мой взгляд, правильным действием будет использование --debug и поиск в файле ~/.cache/virt-manager/virt-install.log - person Ferrandinand; 16.08.2016
comment
Я имел в виду аргумент trace events=/home/gnayan/qemu_events, здесь qemu_events — это текстовый файл, описывающий, какие именно события qemu нужно отслеживать, я не получил вашего комментария, поясните, пожалуйста. Затем трассировщик Qemu заполнит информацию о событиях в буфере трассировки ftrace. - person Haswell; 16.08.2016