LINUX.ORG.RU

Как запустить скрипт по событию QEMU/KVM

 , , ,


0

2

Здравствуйте! Пробросил видеокарту в виртуальную машину. Полгода бился, но пробросил. Теперь хотелось бы допилить всё до обтекаемой формы. Дело в том, что проброшенная гостю видеокарта подключена к тому-же монитору, что и хостовая, только к другому входу. Старенький вспомогательный монитор подключен только к хостовой, встроенной видеокарте к разъему HDMI. Основной монитор подключен и к встроенной и к проброшенной видеокартам. К встроенной по DisplayPort, а к проброшенной по HDMI. Переключение физическими кнопками на мониторе очень неудобное, кнопки тормозные, каждое нажати срабатывает около секунды, нажать нужно 4 раза. Кроме того кнопки плёночные и явно не предназначены для частого использования. Путём недолгого гугления нашел как программно переключать вход монитора. Выглядит это примерно вот так: sudo ddccontrol -r 0x60 -w 17 dev:/dev/i2c-3 - всё прекрасно работает.

Теперь осталось только сделать, чтобы этот скрипт выполнялся при получении фокуса управления виртуальной машиной. Говоря «получение фокуса управления» я имею в виду момент когда клавиатура-мышь переходят в виртуальную машину.

Тут нужно пояснить. Я захожу в ВМ через окно virt-manager. Это окно сервера VNC, оно является вторым дисплеем в виртуальной машине (там стоит Win10), первым дисплеем у неё служит проброшенная видеокарта. Получается у обеих ОС по два монитора. Только у Win10 один виртуальный. Вот в тот момент когда я захожу в это виртуальное окно я и хочу чтобы переключался основной монитор. И, соответственно, переключался обратно по нажатию Ctrl+Alt (это комбинация выводит клавиатуру-мышь из виртуальной машины обратно в хост).

И тут я даже не знаю с чего начать, линуксоид я ещё тот, поэтому не то что не представляю как заставить скрипт выполняться в этот момент, а даже не знаю как вопрос гуглу сформулировать ))

Надеюсь не сильно сумбурно всё объяснил.


Тут нужно пояснить. Я захожу в ВМ через окно virt-manager.

Проблема в том, что virt-manager подключается к libvirtd/qemu фактически по сети. Либо локально через unix-сокет, либо вообще через ssh или голый tcp с другой машины. Так что события типа «virt-manager захватил мышь» ни libvirtd, ни тем более qemu/kvm и гостевая система увидеть никаким образом не могут.

Наименее костыльным и всё ещё простым решением мне видится просто настройка привязки запуска скрипта по нажатию какого-нибудь сочетания клавиш в DE.

Deleted ()

Теперь осталось только сделать, чтобы этот скрипт выполнялся при получении фокуса управления виртуальной машиной

Это средствами DE/WM надо делать. У меня, к примеру, KDE Plasma. Когда активно окно qemu, правилами запрещено чтобы хоткеи на хосте отрабатывали, работают в виртуалке.

fehhner ★★★★★ ()

второй монитор проще будет.

anonymous ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.