Ошибка в 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
Была ли эта статья Вам полезна?

Комментарии к статье (3)

    • Аноним

    Сработало на убунту 22.04

    • Гость

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

      • AJIekceu4

      Статья писалась из личного опыта и в моем случае, все прекрасно помогло. А что там у вас, сказать сложно, так как никакой информации не предоставлено.

Добавить комментарий для AJIekceu4

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

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