LINUX.ORG.RU
ФорумAdmin

Перманентный проброс usb в гостевую ос kvm

 


0

2

Вставил флешку. Создал для нее xml:

<hostdev mode='subsystem' type='usb' managed ='yes'>
<source>
<vendor id='0x058f'/>
<product id='0x6387'/>
</source>
</hostdev>
Пробросил в гостевую ос:
virsh attach-device vm usb.xml
virsh dumpxml vm > temp.xml
virsh define temp.xml
Все нормально работает. Если посмотреть конфиг виртуалки:
virsh edit vm
добавился блок:
<hostdev mode='subsystem' type='usb' managed ='yes'>
<source>
<vendor id='0x058f'/>
<product id='0x6387'/>
<address bus='1' device='15'/>
</source>
</hostdev>
lsusb показывает что флешка висит на шине 1 с номером 15. Если вынуть флешку и вставить обратно, то ей присваивается следующий номер, т.е. 16. И соответственно нужно переподключать ее к виртуалке с новым номером. Как можно этого избежать? Нужно, чтобы при отключении/подключении, флешка маппилась обратно к своей виртуалке.

★★★★

Вроде никак. У меня при вытаскивании флешки вообще виртуалка в корку выпадает.

itn ★★★
()
Ответ на: комментарий от itn

Я придумал только такой костыль:

Написать правило udev, которое при подключении usb будет запускать скрипт, который в свою очередь будет парсить выхлоп udev info искать там серийный номер девайса. Серийные номера с привязкой к шине и номеру хранить в файле или в базе. Если номер изменился, скрипт отсоединяет девайс и переподключает заново.

Но городить такое не кошерно и лень. :)

afanasiy ★★★★
() автор топика
5 апреля 2016 г.
Ответ на: комментарий от transserg

Я сейчас тоже долбаюсь с юсб хабом. Он и в хосте и в госте определяется. Втыкаю в него флешку, она также в госте и хосте появлется, но не монтируется.

rbxx
()
Ответ на: комментарий от rbxx

А если не использовать говнокостыли типа libvirt/virsh и xml'ную вермишель, а запускать напрямую из скрипта?

    -device nec-usb-xhci,id=usb,bus=pci.0,addr=0x1.0x2 \
    -device usb-host,hostbus=8,hostport=1 \
    -device usb-host,hostbus=8,hostport=2 \
например.

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