Ошибка в QEMU при использовании evdev passthrough: No such file or directory

Вступление

В данной статье рассмотрим как можно исправить ошибку, возникающую при использовании evdev passthrough, который позволяет использовать одну клавиатуру и/или мышку для доступа как к хосту, так и к виртуальной машине без установки какого-либо стороннего софта, вроде synergy.

Выглядит ошибка таким вот образом:

Error starting domain: internal error: process exited while connecting to monitor: 2020-08-01T16:54:12.576122Z qemu-system-x86_64: -object input-linux,id=kbd1,evdev=/dev/input/by-id/usb-Logitech_USB_Receiver-event-kbd,grab_all=on,repeat=on: Could not open ‘/dev/input/by-id/usb-Logitech_USB_Receiver-event-kbd’: No such file or directory

Traceback (most recent call last):
File «/usr/share/virt-manager/virtManager/asyncjob.py», line 75, in cb_wrapper
callback(asyncjob, *args, **kwargs)
File «/usr/share/virt-manager/virtManager/asyncjob.py», line 111, in tmpcb
callback(*args, **kwargs)
File «/usr/share/virt-manager/virtManager/object/libvirtobject.py», line 66, in newfn
ret = fn(self, *args, **kwargs)
File «/usr/share/virt-manager/virtManager/object/domain.py», line 1279, in startup
self._backend.create()
File «/usr/lib/python3/dist-packages/libvirt.py», line 1234, in create
if ret == -1: raise libvirtError (‘virDomainCreate() failed’, dom=self)
libvirt.libvirtError: internal error: process exited while connecting to monitor: 2020-08-01T16:54:12.576122Z qemu-system-x86_64: -object input-linux,id=kbd1,evdev=/dev/input/by-id/usb-Logitech_USB_Receiver-event-kbd,grab_all=on,repeat=on: Could not open ‘/dev/input/by-id/usb-Logitech_USB_Receiver-event-kbd’: No such file or directory

Исправляем ошибку

Для того, чтобы исправить эту ошибку, необходимо внести следующие изменения в файл настроек qemu. На примере Linux Mint, мы будем вносить изменения в файл /etc/libvirt/qemu.conf
Открываем данный файл любым текстовым редактором и в самый низ добавляем такие вот настройки:

cgroup_device_acl = [          "/dev/null", "/dev/full", "/dev/zero",          "/dev/random", "/dev/urandom",          "/dev/ptmx", "/dev/kvm", "/dev/kqemu",          "/dev/rtc","/dev/hpet",          "/dev/input/by-id/usb-Logitech_USB_Receiver-event-kbd",          "/dev/input/by-id/usb-Logitech_USB_Receiver-if02-event-mouse"  ]

/dev/input/by-id/usb-Logitech_USB_Receiver-event-kbd и /dev/input/by-id/usb-Logitech_USB_Receiver-if02-event-mouse — это в нашем примере клавиатура и мышка соотвественно, которые уже указаны в настройках виртуальной машины ранее (для активации evdev passthrough). После внесения этих правок в конфиг, необходимо выключить виртуальные машины и перезапустить службу libvirtd, сделать это можно командой:

sudo service libvirtd restart

После этого можно попробовать запустить виртуальную машину и надеяться, что ошибка уйдет.

В моем случае, ошибка No such file or directory на Linux Mint изменилась на другую Permission denied, о том, как ее исправить, можно прочитать вот в этой статье: Ошибка в QEMU при использовании evdev passthrough: Permission denied

Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *