Primeiro, você deve usar virsh edit <vm-name>
para modificar o XML de configuração, já que não é possível fazer isso por meio da GUI do virt-manager.
Verifique sua tag <domain>
de nível superior. Deve ser algo como isto:
<domain type='kvm' xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0'>
Se o tipo não for kvm, você embarcou no voo errado - comece novamente com uma nova VM. Se o atributo xmlns: qemu não estiver lá, adicione-o.
Se você já tem uma seção <qemu:commandline>
, adicione essas duas linhas:
<qemu:arg value='-object'/>
<qemu:arg value='input-linux,id=kbd,evdev=/dev/input/eventN,grab_all=on,repeat=on'/>
Se você não o fizer, crie-o logo abaixo da tag <domain>
com essas duas tags dentro dela.
Você também precisará criar o dispositivo de teclado no convidado usando o seguinte XML, que deve ser adicionado à seção <devices>
:
<serial type='dev'>
<source path='/dev/input/eventN'/>
<target port='0'/>
</serial>
O segundo qemu: arg e o caminho de origem definidos aqui têm eventN
definido. Você precisará substituir N pelo número do dispositivo de entrada do seu teclado. Não mude a porta de destino - apenas o caminho de origem.
Meu dispositivo de teclado é 2, mas o seu pode ser 0 ou outro número. Para descobrir qual é o seu, faça dmesg | grep input
e procure seu dispositivo de teclado. O meu diz:
input: AT Translated Set 2 keyboard as /devices/platform/i8042/serio0/input/input2
Você ainda quer usar o caminho de / dev / input / eventN - isso permite que você saiba qual é o número correto para N. Se você estiver usando X com evdev, o que provavelmente é, você também pode encontre esta informação no arquivo de log X. Uma ressalva: o número do seu dispositivo pode mudar se você reconfigurar o seu hardware host.
Seu teclado não será mais reconhecido pelo host enquanto você estiver usando-o em um convidado. Para controlar o host, você pode:
- Sair do convidado ou
- Anexar outro teclado via USB ou
- Fazer login via ssh ou
- Use um console serial.
Eu obtive a maioria dessas informações neste link: