LINUX.ORG.RU
решено ФорумAdmin

kernel panic - при пробросе usb-модева внутри KVM

 , ,


0

3

Доброе...

Есть KVM (CentOS 6.6), на ней крутится виртулка (CentOS 6.6), решил добавить ей модем, для отправки смс.

Подключил модем, у меня он huawei e173, команда lsusb выдает ID 12d1:1446

Пробрасываю его в виртуальную машину:

mcedit  /usr/local/etc/usb-key.xml
<hostdev mode='subsystem' type='usb'>
  <source>
       <vendor id='0x12d1'/>
       <product id='0x1446'/>
  </source>
</hostdev>

virsh --connect qemu:///system
attach-device 01_vm /usr/local/etc/usb-key.xml
Успешное подключение

Внутри виртуальной машины устанавливаю usb_modeswitch, так как без него модем определяется как не модем)

yum install usb_modeswitch-1.2.6-1.el6.lux.1.x86_64.rpm usb_modeswitch-data-20130610-1.el6.lux.1.noarch.rpm

Перезагружаю Витуалку, и модема нет в списках lsusb, за то на самой машине хосте есть, но уже с измененным ID 12d1:1436 , пробую так же подключить и получаю kernel panic вот картинка.

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

В чем дело? Или может надо все делать на хост машине, а пробрасывать уже нужный результат?

Спасибо.

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

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

usb_modeswitch - ненужен, точнее нужен один раз чтоб перевести модем сразу был модемом без cdrom/flash.

AT-команды на перепрограммирование в гугле.

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

ну я попробовал другой модем, без usb_modeswitch... подсунул еу его значения в конфиг ВМ и получил снова тат же kernel panic

Пробовал прописать его в udev, создаю файл

mcedit /etc/udev/rules.d/90-usb-key.rules:

ACTION=="add", \
    SUBSYSTEM=="usb", \
    ATTR{idVendor}=="0a89", \
    ATTR{idProduct}=="0008", \
    RUN+="/usr/bin/virsh --connect qemu:///system attach-device 01_vm /usr/local/etc/usb-key.xml"
ACTION=="remove", \
    SUBSYSTEM=="usb", \
    ATTR{idVendor}=="0a89", \
    ATTR{idProduct}=="0008", \
    RUN+="/usr/bin/virsh --connect qemu:///system detach-device 01_vm /usr/local/etc/usb-key.xml" 

И сразу получаю kernel pаnic, как на картинке в начале поста.

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

и самое не понятное, стоит выдернуть модем из порта usb, как сразу получаю кернел паник такой же...

Включаю заново сервак, втыкаю модем и снова.

Втыкаю модем вдругой сервак. там все работает, втыкаю в проблемный сервак другой модем. все нормально, но как только начинаю проброс. полностью повторяется ситуация с любым модемом.

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

так тоже пробовал, менял на bus и device , результат тот же....

Если на горячую. создавать файл файл. а потом attach . то сразу паника, если в конфиг и перегружать, то после перегрузки паника

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

Раз у тебя на соседнем сервере все работает, так сравни.

Но я бы начал с запрета загрузки модуля usbserial,usb_wwan на хосте. У тебя в корке видно про usb_serial_disconnect - это проблема. Хост не должен подключать это устройство, если оно будет отдано гостю.

PS в моих понятих ядра 2.6 - труп. То, что RH что-то там бекпортит в них - это как мертвому припарки.

vel ★★★★★ ()
Последнее исправление: vel (всего исправлений: 1)
Ответ на: комментарий от vel

не многосейчас потыкал модем ....

везде, где я его вытаскиваю, происходит кернел паник....

То есть предлагаете запретить usbserial на хосте... а как он тогда ег пробросит гостю, вот тут не понимаю)

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

любое устройство которое пробрасывается гостю не должно использоваться на хосте.

Самый простой способ ( если драйвер в виде модуля ) тупо не загружать его. Чтоб его не загружали всякие udev - временно перенеси файлы usbserial.ko,usb_wwan.ko из /lib/modules куда-нибудь и не забудь выгрузить их. Если это не помогает - значит нужно менять ядро.

а как он тогда ег пробросит гостю, вот тут не понимаю

Ты пробрасываешь устройство по его ID. тип устройства - пофиг.

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

а. все . понял....

убираю файлы модулей, а потом так же по id перекидываю...

Главное не забыть выгрузить, это правильно подмечено) На горячую же можно выгрузить или обязательно перегружать систему?

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

IMHO Выгружать можно перед запуском qemu/kvm. Но если на хосте нет usb-serial устройств, то правильнее будет запретить загрузку модулей.

Теоретически модуль можно не выгружать, но обязательно отключить устройство от драйвера http://lwn.net/Articles/143397/

usb-клавиатура это usb-hid, оно с usb-serial никак не связано.

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

Попробовал)))

Добавиk в блеклист, не помогло:

mcedit  /etc/modprobe.d/blacklist.conf

-Начало файла ...
#USB
blacklist usb_wwan
blacklist usbserial
-Конец файла

depmod -ae

Хотел отключить модуль, он был связан с:

# lsmod | grep option
option                 10626  0
usb_wwan               12104  1 option
usbserial              37596  2 option,usb_wwan

Соотвественно

# modprobe -r usbserial
FATAL: Module usbserial is in use.

# rmmod usbserial
ERROR: Module usbserial is in use by option,usb_wwan

# rmmod option

kernel panic

Не мойму, что не так делаю) или все не так делаю?)

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

Отключил драйвера. теперь модем вообщен не видно ни где)

Но и кернел паники тоже вроде нет )

firefedot ()

переведи модем в режим только модем и попробуй по новой.Если есть возможность,проверь работу с новым ядром 3.0+

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

отпишусь. вот уже вот ) У меня с ним тоже проблем омобых не было . пока с КВМ не завязался)

firefedot ()
Ответ на: комментарий от GNU-Ubuntu1204LTS

Решено )

В общем так)

Попробовал на ядре 3.10.0-123.13.2.el7.x86_64 (CentOS 7) и все просто как по маслу завелось...

То есть просто подключил модем, создал файл usb.xml:

<hostdev mode='subsystem' type='usb'>
  <source>
   <vendor id='0x12d1'/>
    <product id='0x1001'/>
  </source>
</hostdev>
Выполнил virsh attach-device <domain> usb.xml

И на виртуалке получил модем, причем могу слвть смс как из хоста, так и нет) Виртуалка тоже CentOS7.

Еще проверю на 6.6 версии, для пущего теста, но я не ожидал, что все дело в ядре.

Спасибо большон всем откликнувшимся)

firefedot ()
Ответ на: комментарий от GNU-Ubuntu1204LTS

То что она старое я знал, но то что на столько )))

Все, ухожу с него )

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