在适用于 Linux 的 Windows 子系统的 Ubuntu 22.04 上安装 USB/IP

在适用于 Linux 的 Windows 子系统的 Ubuntu 22.04 上安装 USB/IP

尝试按照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。

相关内容