尝试按照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: Unable to locate package linux-tools-5.4.0-77-generic
E: Couldn't find any package by glob 'linux-tools-5.4.0-77-generic'
如何在 WSL 上的 Ubuntu 22.04 上安装 USB/IP?
答案1
虽然我原来的答案应该仍然有效,但我根据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
优先级高于linux-tools-common
软件包的符号链接(通过) /usr/bin/usbip
。
答案2
我也遇到了找不到 linux-tools-5.4.0-77-generic 的问题。我运行了以下命令,然后它就可以使用了。
sudo apt-get 更新
答案3
这些工具需要与您的系统内核版本相匹配。您可以通过运行来查看当前版本uname -r
。问题中的 Microsoft 文档链接在先决条件说明中提到了这一点,指出您需要运行uname -a
显示多条系统信息的来查找您的内核版本。
在常规 Linux 系统上,您可以运行此命令来自动读取当前内核版本并安装适当版本的 linux-tools。
sudo apt install linux-tools-$(uname -r) hwdata
这在适用于 Linux 的 Windows 子系统上不起作用,因为内核版本名称是非标准的(例如 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。我可能会尝试从源代码构建工具,以便能够在 WSL 下试用 USB/IP。