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

WSL2部署CAN环境与ICSim遇vcan模块缺失问题求助

解决WSL2中加载CAN/vcan内核模块失败的问题

问题原因

WSL2默认使用的微软官方内核未预编译CAN(Controller Area Network)相关的内核模块(can、vcan),因此执行modprobe时会提示模块找不到。

解决方案

方法一:使用预编译的带CAN模块的WSL2内核(推荐新手)

  1. 关闭当前WSL会话,在Windows命令提示符执行:
    wsl --shutdown
    
  2. 获取包含CAN模块的预编译WSL2内核文件(bzImage),可从WSL2内核源码仓库的自定义构建版本或社区维护包中获取。
  3. 将bzImage文件放到Windows用户目录下(例如C:\Users\你的用户名\bzImage)。
  4. 在Windows用户目录创建或修改.wslconfig文件,添加以下内容(注意替换路径中的用户名):
    [wsl2]
    kernel=C:\\Users\\你的用户名\\bzImage
    
  5. 重新启动WSL,执行以下命令验证模块是否可加载:
    modprobe can
    modprobe vcan
    
  6. 手动配置虚拟CAN设备(替代setup_vcan.sh脚本):
    ip link add dev vcan0 type vcan
    ip link set up vcan0
    
  7. 用ip link show vcan0确认设备已创建并启用。

方法二:手动编译带CAN模块的WSL2内核

  1. 在WSL中安装编译依赖:
    sudo apt update && sudo apt install git build-essential ncurses-dev flex bison libssl-dev
    
  2. 克隆WSL2内核源码:
    git clone https://github.com/microsoft/WSL2-Linux-Kernel.git
    cd WSL2-Linux-Kernel
    
  3. 加载默认配置:
    cp Microsoft/config-wsl .config
    
  4. 打开内核配置界面:
    make menuconfig
    
  5. 在配置菜单中找到并勾选以下选项:
    • Networking support -> CAN bus subsystem support:勾选为<*>(编译进内核)
    • Networking support -> CAN bus subsystem support -> Virtual CAN interface (vcan):勾选为<*>
  6. 保存配置并退出界面,执行编译:
    make -j$(nproc)
    
  7. 安装编译好的模块:
    sudo make modules_install
    
  8. 将编译生成的内核文件arch/x86/boot/bzImage复制到Windows用户目录,修改.wslconfig指向该文件(同方法一步骤3-4),重启WSL即可。

额外注意事项

  • 确保WSL2处于最新版本,在Windows命令提示符执行wsl --update更新。
  • 若使用setup_vcan.sh脚本,可先检查脚本内容是否仅包含modprobe和ip配置命令,替换为手动执行的ip命令即可绕过模块加载问题(前提是模块已成功加载)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 01:35:16