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

Ошибка в 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 не будет опубликован.

Напоминаем Вам, что Ваше сообщение будет опубликовано только после проверки администратором сайта. Обычно это занимает 1-2 рабочих дня.