Исходные данные:
Xubuntu 14.04 (64 разряда сервер, но с установленной графической подсистемой Xubuntu-desktop).
Как мы видим контроллер usb не имеет типа устройства, т.е. что-то там по умолчанию. По умолчанию usb 1.1... Нужно дать ему тип (указать модель). Тут требуется уточнение. Здесь и далее по тексту мы будем вести речь о ВМ, которая в виде процесса выглядит как:
Пути решения.
Указанная ВМ среди прочего поддерживает тип контроллера model='ich9-ehci1' и другие, способные работать с устройствами usb 2.0. Вот пример, который у меня так и не заработал:
Xubuntu 14.04 (64 разряда сервер, но с установленной графической подсистемой Xubuntu-desktop).
В связи с лицензионными ограничениями Oracle (и совершенно безумной ценовой политикой) VirtualBox можно совершенно законно эксплуатировать дома и в качестве тестового инструмента в производственных целях. А вот для постоянного применения с очень существенными ограничениями (без usb и удаленного доступа, что ни есть хорошо). Ну и производительность оного оставляет желать лучшего. Пробуем перенести существующие под VirtualBox VM на KVM. Конечно винды. Начнем с Windows-7, она достаточно капризна, потом Server 2008.
Первоисточники.
Статья на русской страничке ubuntu. И английский вариант, он полнее. В итоге ставим вот что. Минимально возможный вариант взят из первого источника:
В Ubuntu 10.04 и позже KVM рекомендуется ставить так:
sudo apt-get install qemu-kvm libvirt-bin ubuntu-vm-builder bridge-utils
Это установка на сервер без X-ов, т. е. не включает в себя графический интерфейс. Установить его можно командой
sudo apt-get install virt-manager
После этого в меню появится пункт «Менеджер виртуальных машин» и, с большой долей вероятности, всё заработает. Если какие-то проблемы всё же возникнут, то нужно будет почитать инструкцию в англоязычной вики....
Вот тут надо перегрузиться, к сожалению пока мне не понятно что и в какой последовательности нужно перезапустить, чтоб этого избежать. В 14.04 обычно возникают проблемы с usb 2.0, но об этом позже. В принципе для запуска VM у нас уже все есть. Более того, при помощи этого набора можно достаточно легко создавать VM, в том числе и из образа, обкатанного в VirtualBox, можно его и запускать для постоянной эксплуатации с небольшим "допиливанием" файла настроек. Т.е. большинство операций можно выполнять при помощи "Менеджера виртуальных машин". Теперь нужно разложить по полочкам как оно устроено и как работает. Краткое описание взаимодействия qemu, kvm, libvirtd
Когда мы запускаем virt-manager (он же менеджер ВМ) и создаем новую ВМ (оно в терминах qemu называется домен, а не ВМ), создается xml-файл в /etc/libvirt/qemu/имя.xml и симлинк в каталог autostart, если нужно взлетать по включению питания. Т. е. мы работаем с libvirtd, он запускает qemu с опцией kvm (если мы правильно все указали). При этом он создает сокет для отображения консоли и много чего еще полезного делает в части настройки сети. Сами образы ВМ (доменов) живут в /var/lib/libvirt. При нехватке места можно воспользоваться симлинком, проверено. Очень поучительно запустить любую, даже кое-как скроенную ВМ, которая даже повиснет на этапе загрузки и посмотреть список процессов ps ax | grep qemu - длинна командной строки и список опций завораживает... Из командной строки с xml - файлом можно работать при помощи virsh, им же можно оперативно запускать - останавливать ВМ. Стандартный порядок действий таков- Создаем ВМ при помощи менеджера или из командной строки при помощи qemu-img.
- Пробуем запускать. Делаем выводы относительно тонкой настройки.
- Получаем файл настроек при помощи virsh dumpxml имя > файл
- Редактируем файл, собственно тонкая настройка ВМ.
- Экспортируем настройки при помощи virsh define файл
- Запускаем ВМ virsh start имя и смотрим результат.
В ряде случаев ВМ запускают без помощи libvirtd, а напрямую. Вот прекрасный образец готового файла, да и вся переписка достаточно интересна.
Проблема usb 2.0
Процесс собственно создания ВМ или импорта существующей ВМ из VirtualBox вопросов не вызывает и многократно описан. Так же везде и не по разу описан процесс проброса usb-устройства. При использовании графического менеджера это вообще элементарно - выбрать нужное устройство из списка. Что мы наблюдаем при работе ВМ? — Если устройство подключено по протоколу usb 1.1 или 1.0 проблем не возникает, а вот если устройство подключено как usb 2.0, мы будем наблюдать что само устройство пробрасывается, но гостевая ОС его использовать не может. Если иметь ввиду Windows 7, устройство помечается как неисправное (код ошибки 10). Все точно так же как и в VirtualBox с отключенной поддержкой usb 2.0 (не подключен плагин или не стоит соответствующая галочка). Если пристально рассмотреть xml-файл, то мы увидим примерно такой фрагмент.<controller type='usb' index='0'>
<address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/>
</controller>
Как мы видим контроллер usb не имеет типа устройства, т.е. что-то там по умолчанию. По умолчанию usb 1.1... Нужно дать ему тип (указать модель). Тут требуется уточнение. Здесь и далее по тексту мы будем вести речь о ВМ, которая в виде процесса выглядит как:
Т.е. мы запускаем 64-х разрядную pc-i440fx-trusty (или pc-i440fx-2.0, она тоже проверялась). Командная строка очень длинная, но смотреть надо именно указанные параметры.qemu-system-x86_64 -enable-kvm -S -machine pc-i440fx-trusty,accel=kvm
Пути решения.
Указанная ВМ среди прочего поддерживает тип контроллера model='ich9-ehci1' и другие, способные работать с устройствами usb 2.0. Вот пример, который у меня так и не заработал:
<controller type='usb' index='0' model='ich9-ehci1'>
<address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x7'/>
</controller>
<controller type='usb' index='0' model='ich9-uhci1'>
<master startport='0'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0' multifunction='on'/>
</controller>
Но, была найдена некоторая последовательность действий, которая приводит к успеху. - Нужно взять исходный xml-файл (virsh dumpxml) и добавить в него указанные в примере строки.
- Загрузить конфигурацию обратно при помощи virsh define.
- Потом (не запуская ВМ) открыть графический менеджер ВМ и удалить старый "безродный" контроллер usb. При достаточном навыке можно "вычистить" старый контроллер руками (поменять старый на пару новых).
"От себя" были установлены еще несколько пакетов - virtinst, ubuntu-virt, ubuntu-virt-mmgt, ubuntu-virt-server. — Видимо напрасно.
Спустя 5 недель. На "побаловаться" уже достаточно. Все остальное переехало во вторую часть.
Спустя 5 недель. На "побаловаться" уже достаточно. Все остальное переехало во вторую часть.
Комментариев нет:
Отправить комментарий