Как установить драйверы usbip vhci_hcd на AWS Версия ядра Ubuntu EC2

Мне потребовалось время, чтобы разобраться в проблеме, но я застрял и не могу показаться чтобы найти решение этой проблемы.

Итак, в основном я хочу подключить локальный USB-порт к экземпляру AWS EC2, и в Linux это можно сделать через usbip , но теперь проблема связана с EC2 Экземпляры ядра, по умолчанию для них не установлены драйверы,и приводам требуются точные спецификации для загрузки в систему.

Теперь я пытался вручную скомпилировать драйверы, но мне не удалось успешно выполнить это, причина в том, что система не компилирует конкретные .ko модуль, но в то же время другие установленные модули .ko не поддерживаются ядром.

Действия, которые я выполняю, взяты отсюда в Ubuntu на как собрать свое ядро: https://wiki.ubuntu.com/Kernel/BuildYourOwnKernel

Это нужно для получения правильной версии ядра, которая используется, из EC2, другие шаги:

ubuntu@:~$ sudo cp /boot/config-$(uname -r) .config
ubuntu@:~$ sudo cp /usr/src/linux-headers-$(uname -r)/Module.symvers .
ubuntu@:~$ sudo make menuconfig
ubuntu@:~$ sudo make modules_prepare && sudo make M=drivers/usb/usbip
ubuntu@:~$ sudo insmod drivers/usb/usbip/usbip-core.ko && sudo insmod drivers/usb/usbip/vhci-hcd.ko

но несмотря на то, что модуль компилируется, нет ни драйверов .ko, ни тех, которые скомпилированы.

Есть ли способ заставить usbip работать на AWS на экземпляре EC2? Есть ли другое решение для драйверов usbip ?

0
задан 28 December 2020 в 17:21

1 ответ

Итак, я получил ответ на этот вопрос от сотрудника службы поддержки AWS. Надеюсь, этот ответ поможет кому-то еще в этом нуждается.

Вы обратились в службу поддержки AWS, потому что хотели использовать клиент usbip на инстансах AWS EC2, но не обнаружили необходимых модулей ядра (usbip-core, vhci-hcd), доступных для AMI Ubuntu[18|20]. Вам нужна наша помощь, чтобы решить эту проблему и найти способ заставить usbip работать на инстансах AWS EC2.

В своей тестовой среде в регионе AWS us-east-1 я запустил тестовые инстансы EC2 из последних AMI для Amazon Linux 2 (ami-0be2609ba883822ec) и Ubuntu 20.04 (ami-0885b1f6bd170450c).

Я обнаружил, что для Amazon Linux 2 требуются драйверы:

# uname -r
4.14.209-160.339.amzn2.x86_64
# modinfo vhci_hcd usbip_core | grep filename
filename:       /lib/modules/4.14.209-160.339.amzn2.x86_64/kernel/drivers/usb/usbip/vhci-hcd.ko
filename:       /lib/modules/4.14.209-160.339.amzn2.x86_64/kernel/drivers/usb/usbip/usbip-core.ko

Но я не нашел инструментов пользовательского пространства usbip после включения репозитория EPEL[1] и просканировал пакет, который может содержать этот двоичный файл:

# yum provides */usbip | grep bin

И продолжил установка его из архива I sourceforge[2]:

# yum install autoconf libtool libsysfs-devel glib*
# wget https://downloads.sourceforge.net/project/usbip/usbip/0.1.7/usbip-0.1.7.tar.gz 
# tar -xzf usbip-0.1.7.tar.gz
# cd usbip-0.1.7/src
# ./autogen.sh
# ./configure
# make install

По умолчанию он установлен в /usr/local/bin, который можно добавить в PATH с профилем:

# echo "export PATH=$PATH:/usr/local/bin" > /etc/profile.d/path.sh && source /etc/profile.d/path.sh
# usbip --help

Для Ubuntu 20.04 я обнаружил, что драйверы доступны в «linux-image-extra-virtual», и я установил его с ядром 5.4.0-58-generic:

# uname -r
    5.4.0-1029-aws
# apt update
# apt install linux-image-extra-virtual
# find /usr/ -iname "vhci*"
/usr/lib/modules/5.4.0-58-generic/kernel/drivers/usb/usbip/vhci-hcd.ko
..
# find /usr/ -iname "usbip*"
/usr/lib/modules/5.4.0-58-generic/kernel/drivers/usb/usbip
/usr/lib/modules/5.4.0-58-generic/kernel/drivers/usb/usbip/usbip-core.ko
/usr/lib/modules/5.4.0-58-generic/kernel/drivers/usb/usbip/usbip-vudc.ko
/usr/lib/modules/5.4.0-58-generic/kernel/drivers/usb/usbip/usbip-host.ko
..

Добавлены драйверы для загрузки при загрузке:

# echo "vhci_hcd" >> /etc/modules-load.d/modules.conf
# echo "usbip_core" >> /etc/modules-load.d/modules.conf

Затем установлен usbip:

# apt install linux-tools-5.4.0-58-generic

Затем изменен grub для загрузки с 5.4.0-58-generic вместо 5.4.0-1029-aws согласно $menuentry_id_option в моем /boot/grub/grub.cfg

# grep -A1000 submenu  /boot/grub/grub.cfg |grep menuentry
  submenu 'Advanced options for Ubuntu' $menuentry_id_option 'gnulinux-advanced-175c087c-0fe9-4d62-a38d-e5f8a66a5851' {
  ..
    menuentry 'Ubuntu, with Linux 5.4.0-58-generic' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.4.0-58-generic-advanced-175c087c-0fe9-4d62-a38d-e5f8a66a5851' {
  ..
vim /etc/default/grub
  #GRUB_DEFAULT=0
  GRUB_DEFAULT="gnulinux-advanced-175c087c-0fe9-4d62-a38d-e5f8a66a5851>gnulinux-5.4.0-58-generic-advanced-175c087c-0fe9-4d62-a38d-e5f8a66a5851"

Затем обновил grub, перезагрузил экземпляр ec2 и проверил usbip и загруженные модули:

# update-grub && reboot
# uname -r
5.4.0-58-generic
# lsmod | grep vhci
vhci_hcd               53248  0
usbip_core             36864  1 vhci_hcd

# usbip --help
0
ответ дан 31 December 2020 в 08:50

Другие вопросы по тегам:

Похожие вопросы: