#!/bin/sh
VM_ID=17
VMNAME="vm_$VM_ID"
CPU="-cpu host -enable-kvm -smp 2,cores=2,threads=1,sockets=1"
MEM="-m 1G"
USBDEV1="HASP"
USBDEV2="Uninterruptible Power Supply"
USB1=$(lsusb|grep "$USBDEV1"|awk '{print $6}'); [ $USB1 ] && USB1="-usbdevice host:$USB1"
USB2=$(lsusb|grep "$USBDEV2"|awk '{print $6}'); [ $USB2 ] && USB2="-usbdevice host:$USB2"
USB3="-usbdevice tablet"
USB="-usb $USB1 $USB2 $USB3"
KVM_RESERVED="52:54:00"
MACBASE="$KVM_RESERVED:12:34"
MAC="$MACBASE:$VM_ID"
NETDEV="-netdev bridge,id=netdev-$VM_ID,br=virbr0"
NETNIC="-net nic,vlan=0,netdev=netdev-$VM_ID,macaddr=$MAC,model=virtio,name=guest-nic-$VM_ID"
NET="$NETDEV $NETNIC"
VIRTIO1="-balloon virtio"
VIRTIO2="-device virtio-serial"
VIRTIO3="-chardev socket,id=qga0,path=/tmp/qga.sock,server,nowait"
VIRTIO4="-device virtserialport,chardev=qga0,name=org.qemu.guest_agent.0"
VIRTIO="$VIRTIO1 $VIRTIO2 $VIRTIO3 $VIRTIO4"
DIR1=/mnt/raid/$VMNAME
mount /mnt/raid
MONSOCKET="$DIR1/monitor"
[ ! -e $MONSOCKET.in ] && mkfifo $MONSOCKET.in
[ ! -e $MONSOCKET.out ] && mkfifo $MONSOCKET.out
MONITOR="-monitor pipe:$MONSOCKET"
VMPID="-pidfile $DIR1/pid"
VMLOG="-d unimp,guest_errors -D $DIR1/log"
VMUUID="-uuid `uuidgen -t`"
DISK1=$DIR1/dragon.qcow2
echo "\nDISK1=$DISK1"; [ $DISK1 ] && qemu-img check $DISK1
echo "\nDISK2=$DISK2"; [ $DISK2 ] && qemu-img check $DISK2
echo "\nDISK3=$DISK3"; [ $DISK3 ] && qemu-img check $DISK3
echo "\nDISK4=$DISK4"; [ $DISK4 ] && qemu-img check $DISK4
[ $DISK1 ] && DISK1="-drive file=$DISK1,if=virtio,media=disk,cache=writeback,aio=threads,index=0,werror=report,rerror=report,format=qcow2,discard=on"
[ $DISK4 ] && DISK4="-drive file=$DISK4,if=ide,media=cdrom"
[ $DISK4 ] || DISK4="-drive if=ide,media=cdrom"
DISKS="$DISK1 $DISK2 $DISK3 $DISK4"
free
echo 0 > /sys/kernel/mm/ksm/run
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag
echo "Starting VM $VMNAME $VMUUID..."
logger -t kvm-vms "Starting VM $VMNAME $VMUUID..."
/usr/bin/qemu-system-x86_64 \
-name $VMNAME \
$VMUUID \
$VMPID \
$VMLOG \
-rtc base=localtime \
-boot c \
$CPU \
$MEM \
$NET \
$USB \
$DISKS \
$VIRTIO \
$MONITOR \
-vnc :$VM_ID,lossy \
&
sudo iptables -A OUTPUT -m ttl -j TTL --ttl-set 128
Качество видео как можно лучше- а вот это может означать что угодно, зависит от множества факторов. На качество влияют: оптика (объектив), матрица камеры, мозги камеры (DSP), уровень освещения, наличие контовой засветки,...
Да, я тут выступил, как Капитан Очевидность, но я встречал людей, которые забывали про такую простую возможность. На ходу или в транспорте с внешней клавиатурой не поработать, но в домашних\офисных условиях - вполне. Вплоть до того, что можно и забить на ремонт.