Читал статью на ArchWiki, как понял, самый простой и не требующий настройки вариант — user-mode networking, но производительность у него ниже. Наиболее производительным должно быть использование tap networking с включенным vhost. Но не могу разобраться как прописать это в команде запуска ВМ. Сейчас она выглядит так
Код: Выделить всё
#!/usr/bin/env bash
SPICE_HOST="127.0.0.1"
SPICE_PORT="5930"
VM_NAME="Windows 7"
CPU_COUNT="2"
RAM_COUNT="2048"
DRIVE="Windows7.qcow2"
export QEMU_AUDIO_DRV=alsa
qemu-system-x86_64 \
-name "$VM_NAME" \
-cpu host \
-enable-kvm \
-smp $CPU_COUNT \
-m $RAM_COUNT \
-acpitable file=slic.bin \
-drive file="$DRIVE",media=disk,if=virtio \
-vga qxl \
-spice port=$SPICE_PORT,disable-ticketing \
-device virtio-serial-pci \
-device virtserialport,chardev=spicechannel0,name=com.redhat.spice.0 \
-chardev spicevmc,id=spicechannel0,name=vdagent \
-rtc base=localtime \
-soundhw ac97 \
-usb \
-usbdevice tablet \
-device virtio-serial \
-chardev spicevmc,id=vdagent,name=vdagent \
-device virtserialport,chardev=vdagent,name=com.redhat.spice.0 \
-chardev spicevmc,name=usbredir,id=usbredirchardev1 \
-device usb-redir,chardev=usbredirchardev1,id=usbredirdev1,debug=3 \
-chardev spicevmc,name=usbredir,id=usbredirchardev2 \
-device usb-redir,chardev=usbredirchardev2,id=usbredirdev2,debug=3 \
-chardev spicevmc,name=usbredir,id=usbredirchardev3 \
-device usb-redir,chardev=usbredirchardev3,id=usbredirdev3,debug=3 \
Пробовал создать ВМ через virt-manager и посмотреть команду запуска, нашел такие строчки
Код: Выделить всё
-netdev tap,fd=25,id=hostnet0,vhost=on,vhostfd=26
-device virtio-net-pci,netdev=hostnet0,id=net0,mac=52:54:00:b4:2c:53,bus=pci.0,addr=0x3
Но при их добавлении к своей команде получаю ошибку
Код: Выделить всё
TUNGETIFF ioctl() failed: Bad file descriptor
TUNSETOFFLOAD ioctl() failed: Bad file descriptor
qemu-system-x86_64: -netdev tap,fd=25,id=hostnet0,vhost=on,vhostfd=26: vhost-net requested but could not be initialized
qemu-system-x86_64: -netdev tap,fd=25,id=hostnet0,vhost=on,vhostfd=26: Device 'tap' could not be initialized
Как все же правильно настроить сеть?
Про libvirt и virt-manager знаю, но хочется немного разобраться именно с «чистым», без всяких оберток, QEMU/KVM.
ОС Debian 8.2, ядро 4.2.0-0.bpo.1-amd64 из бэкпоротов, все остальные пакеты из стандартного репозитория.