You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Ubuntu 20.04 Docker容器中安装USBIP并解决特定内核依赖包无法找到的问题

解决Ubuntu 20.04 Docker容器中USBIP兼容WSL2内核的问题

这个问题本质是WSL2使用的是微软定制的内核,而Ubuntu官方apt仓库里的linux-tools系列包只适配Ubuntu官方发布的内核,自然找不到提示里的那些微软内核对应的工具包。下面给你两种可行的解决思路:

方法一:借助WSL2宿主机的USBIP工具(最简单)

因为Docker容器会共享宿主机的内核,所以我们可以在WSL2宿主机上装好兼容的USBIP工具,再让容器直接复用这些工具:

  1. 先把WSL2内核更到最新版本
    打开Windows的PowerShell,执行以下命令更新内核并重启WSL:

    wsl --update
    wsl --shutdown
    

    之后重新打开你的WSL2 Ubuntu终端。

  2. 在WSL2宿主机安装USBIP工具
    在宿主机的Ubuntu终端里执行:

    sudo apt update
    sudo apt install usbip usbutils
    

    安装完成后可以用usbip --version验证工具是否能正常运行。

  3. 启动容器时挂载宿主机的USBIP资源
    运行Docker容器时,添加挂载参数把宿主机的USBIP二进制文件和套接字映射到容器里,同时开启特权模式(确保容器能访问USB设备):

    docker run -it --privileged -v /usr/bin/usbip:/usr/bin/usbip -v /var/run/usbipd.sock:/var/run/usbipd.sock ubuntu:20.04
    

    这样容器里就能直接使用宿主机的USBIP工具,完美适配WSL2内核。

方法二:在容器中编译对应版本的USBIP工具(适合独立环境)

如果需要容器内独立安装USBIP,可以手动编译对应内核版本的工具:

  1. 安装编译依赖
    在容器内执行:

    sudo apt update
    sudo apt install git build-essential linux-headers-generic libudev-dev
    
  2. 克隆对应版本的Linux内核源码
    你的内核版本是5.10.16.3-microsoft-standard-WSL2,所以克隆5.10.16分支的内核源码:

    git clone --depth 1 --branch v5.10.16 https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
    cd linux/tools/usb/usbip
    
  3. 编译并安装USBIP
    执行编译和安装命令:

    make
    sudo make install
    

    完成后用usbip --version确认安装成功。

额外注意事项

  • 要让WSL2能识别USB设备,你还需要在Windows端安装usbipd-win工具,之后用PowerShell绑定设备到WSL2:
    # 列出可用USB设备
    usbipd wsl list
    # 绑定指定设备到WSL2,替换<BUSID>为实际设备ID
    usbipd wsl attach --busid <BUSID>
    
  • 容器必须以--privileged模式运行,或者添加精确的设备权限,否则无法访问USB设备资源。

内容的提问来源于stack exchange,提问作者Marius

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 15:19:12