Вопрос или проблема
Попытка установить USB/IP на Ubuntu 22.04 согласно документации Microsoft:
На Ubuntu выполните следующую команду:
sudo apt install linux-tools-5.4.0-77-generic hwdata sudo update-alternatives --install /usr/local/bin/usbip usbip /usr/lib/linux-tools/5.4.0-77-generic/usbip 20
Но выполнение этой команды приводит к:
E: Не удается найти пакет linux-tools-5.4.0-77-generic
E: Не удалось найти ни одного пакета по шаблону 'linux-tools-5.4.0-77-generic'
Как установить USB/IP на Ubuntu 22.04 в WSL?
Хотя мой оригинальный ответ все еще должен работать, я обновил его с немного более оптимальной версией, основанной на инструкциях из вики usbipd-win. Обратите внимание, что эти инструкции также должны работать под Ubuntu 20.04, а также под большинством дистрибутивов на основе Debian:
sudo apt install linux-tools-virtual hwdata
sudo update-alternatives --install /usr/local/bin/usbip usbip $(command -v ls /usr/lib/linux-tools/*/usbip | tail -n1) 20
Это установит клиент usbip
из последнего пакета ядра Ubuntu. Этот клиент (/usr/lib/linux-tools-<x.xx.xx-x>/usbip
) совместим с ядром WSL2, но пакет linux-tools-common
включает заглушку (/usr/bin/usbip
), которая пытается найти инструменты в каталоге, соответствующем установленному ядру.
Учтите, что, так или иначе, ваше ядро WSL2 не будет соответствовать никакой версии ядра в репозиториях Ubuntu. По этой причине вам потребуется создать символическую ссылку (с помощью update-alternatives
) с приоритетом выше, чем у /usr/bin/usbip
пакета linux-tools-common
.
У меня также была проблема, когда linux-tools-5.4.0-77-generic
не находился. Я выполнил следующее, и тогда он стал доступен.
sudo apt-get update
Эти инструменты должны соответствовать версии ядра вашей системы. Вы можете увидеть свою текущую версию, выполнив uname -r
. Ссылка на документацию Microsoft в вопросе намекает на это в примечании о предварительных требованиях, сказав, что вам нужно выполнить uname -a
, который показывает несколько сведений о системе, чтобы узнать свою версию ядра.
На обычных системах Linux вы можете выполнить эту команду, чтобы автоматически прочитать текущую версию ядра и установить соответствующую версию linux-tools.
sudo apt install linux-tools-$(uname -r) hwdata
Это не работает в Windows Subsystem for Linux, потому что название версии ядра нестандартное (например, 5.15.0-56-microsoft-standard-WSL2).
Пакет linux-tools-generic
связан с последней версией ядра. Если вы не ищете пакет, соответствующий конкретной версии ядра, вы можете просто установить этот пакет. Я еще не тестировал, приведет ли обновление ядра к обновлению пакета linux-tools-generic
до последней версии.
sudo apt install linux-tools-generic hwdata
Сегодня мое ядро WSL обновилось до 5.15.79.1-microsoft-standard-WSL2, но последний доступный пакет в Ubuntu все еще linux-tools-5.15.79.1-microsoft-standard-WSL2. Я, вероятно, попробую собрать инструменты из исходников следующим шагом, чтобы иметь возможность протестировать USB/IP в WSL.
Ответ или решение
Установка USB/IP на Ubuntu 22.04 в Windows Subsystem for Linux (WSL)
Введение
Windows Subsystem for Linux (WSL) предоставляет возможность запускать приложения Linux на Windows без использования виртуальной машины. Установка USB/IP в Ubuntu на WSL может вызвать сложности, особенно из-за несовпадения версий ядра. В этом руководстве мы подробно рассмотрим процесс установки USB/IP и решения возможных проблем, таких как отсутствие нужных пакетов.
Шаг 1: Обновление системы
Перед началом установки убедитесь, что ваша система обновлена. Это поможет избежать проблем с зависимостями и отсутствующими пакетами.
sudo apt-get update
sudo apt-get upgrade
Шаг 2: Установка необходимых пакетов
Вместо установки конкретной версии linux-tools
(которая может не существовать в репозиториях для вашей версии ядра WSL) рекомендуется установить пакет linux-tools-generic
, который автоматически связывается с последним доступным ядром.
sudo apt install linux-tools-generic hwdata
Пакет hwdata
необходим для предоставления данных об аппаратных устройствах, которые могут использоваться с USB/IP.
Шаг 3: Настройка USB/IP
Следующий шаг — создание символьной ссылки на исполняемый файл usbip, чтобы гарантировать его доступность. Это необходимо, поскольку стандартное размещение может не соответствовать текущему ядру WSL.
sudo update-alternatives --install /usr/local/bin/usbip usbip $(command -v ls /usr/lib/linux-tools/*/usbip | tail -n1) 20
Данная команда устанавливает альтернативу для usbip
, указывая на правильный исполняемый файл.
Шаг 4: Проверка установки
Чтобы убедиться, что установка прошла успешно, выполните команду:
usbip
Если вы увидите вывод с параметрами, это означает, что usbip
установлен и готов к использованию.
Шаг 5: Подключение USB-устройства
Для использования USB/IP вам нужно будет запускать соответствующие команды для подключения и отображения USB-устройств. Пример команды, которая позволяет отобразить доступные устройства:
usbip list -r <IP-адрес хоста>
Заключение
Теперь вы знаете, как установить и настроить USB/IP на Ubuntu 22.04 в Windows Subsystem for Linux. Следуя этим инструкциям, вы сможете легко подключать и управлять USB-устройствами из WSL. Это открывает новые горизонты для работы с аппаратным обеспечением на Windows, сочетая при этом возможности Linux.
Если у вас возникнут вопросы или потребуется дополнительная поддержка, не стесняйтесь обращаться к сообществу Ubuntu или просматривать документацию WSL на официальном сайте Microsoft.