WSL2 Debian系统添加支持SocketCAN
本人最近在使用WSL2,Linux系统选择的是Debian,用起来很不错,感觉可以代替VMware Player虚拟机。
但是WSL2 Debian默认不支持SocketCAN,这就有点坑了,由于本人经常要使用SocketCAN功能,所以决定让Debian支持该功能。
一 下载WSL2内核源码
首先在自己的WSL2 linux下查看内核版本,命令是uname -r,本人的是5.10.x,然后打开微软WSL2内核的github网站,https://github.com/microsoft/WSL2-Linux-Kernel
在网页右侧中部,找到以下图示,然后点击红框部分,

进入后找到5.10.x系列的最新内核,本文写作时最新的版本是5.10.102

点击红框进行下载,下载完毕后得到WSL2-Linux-Kernel-linux-msft-wsl-5.10.102.1.zip,然后拷贝这个zip文件到Debian下面进行解压,
unzip WSL2-Linux-Kernel-linux-msft-wsl-5.10.102.1.zip
注意:一定要在Linux下解压,在Win下解压会出错。
当然也可以使用git去下载,网上给出的命令如下,
$ git clone https://github.com/microsoft/WSL2-Linux-Kernel
$ cd WSL2-Linux-Kernel
$ git checkout `uname -r`
但是本人使用git在Debian下clone一直失败,不知道怎么回事,就只能手动去下载…
二 编译
编译前要安装一些需要的库,
sudo apt install build-essential flex bison libssl-dev libelf-dev libncurses5-dev
build-essential是GCC编译套件,libncurses5-dev是配置时用到的GUI库。安装时如果提示缺什么库,那就安装什么库,基本网上搜一下都能解决。
下载好之后,cd进入内核源码的目录,
cd WSL2-Linux-Kernel-linux-msft-wsl-5.10.102.1
cat /proc/config.gz | gunzip > .config
make prepare modules_prepare # 这一步执行完后会失败,但是不影响
make menuconfig
弹出界面后,使用上下方向键选中Networking support,然后回车,

然后使用上下方向键选中CAN bus system support,按空格使其出现M字样,即变成内核模块,

然后回车进入,把所有的都选择为内核模块,

接着选中CAN Device Drivers,回车进入,把所有的选项都选中,

最后按左右方向键选中界面底下的Save,

然后回车,在弹出的新界面里回车选择OK进行保存,

保存完毕后回到原先界面,通过左右方向键选中Exit并回车,会回到上一层界面,继续通过左右方向键选中Exit并回车,直到退出menuconfig

接着是编译内核模块,
make modules -j6
编译完毕后安装内核模块,
sudo make modules_install
最后是编译内核镜像,
make -j6
编译完毕后,可以看到目录下有个vmlinux,这个就是编译好的内核镜像文件,

最后通过SSH工具(如WinSCP)把内核镜像拷贝到Windows下,可以通过下面命令安装SSH服务并启用,
sudo apt install openssh-server
sudo service sshd start
具体使用办法可以网上搜一下。
三 替换内核镜像
首先关闭WSL2 Debian,
wsl --shutdown
WSL2 Linux内核镜像的默认安装路径是C:\Windows\System32\lxss\tools,打开这个目录,把里面的kernel文件重命名一下,如xx_kernel,然后把vmlinux拷贝到这个目录下,重命名为kernel
然后重新Windows,重启之后再打开WSL2 Debian,输入uname -r,可以看到版本号和下载的内核版本号一致,
图11
PS:如果启动后失败,可以删除kernel文件,然后把xx_kernel改回kernel,这样可以回退回来。
四 测试
先安装CAN工具库,
sudo apt install can-utils
使用下面命令开启vcan0,
sudo modprobe can
sudo modprobe can-raw
sudo modprobe vcan
ip link add dev vcan0 type vcan
ip link set up vcan0
此时,使用ip addr可以看到vcan0

然后在一个终端下使用candump监测vcan0
candump vcan0
另外一个终端下使用cansend向vcan0发送CAN报文,
cansend vcan0 123#11.22.33.44
最后在监测终端下看到发出的CAN报文,

说明SocketCAN功能已经支持了。
相关文章:
WSL2 Debian系统添加支持SocketCAN
本人最近在使用WSL2,Linux系统选择的是Debian,用起来很不错,感觉可以代替VMware Player虚拟机。 但是WSL2 Debian默认不支持SocketCAN,这就有点坑了,由于本人经常要使用SocketCAN功能,所以决定让Debian支持…...
Redis的五种常用数据结构以及其底层实现
1.字符串 字符串作为Redis中最基础的数据结构,他存储的值可以是任何东西,可以是字符串,数字,二进制,但是字符串存储的值不能超过512M 在Redis中字符串的底层编码是根据值进行改变的 当存储的字符串是一个数字的时候…...
防御保护笔记
防火墙的主要职责在于:控制和防护 --- 安全策略 --- 防火墙可以根据安全策略来抓取流量之 后做出对应的动作。 防火墙分类: 包过滤防火墙: 1,很多安全风险集中在应用层的,所以,仅关注三四层的数据无法做到…...
C++笔记之作用域解析符::和命名空间、作用域的关系
C++笔记之作用域解析符::和命名空间、作用域的关系 —— 杭州 2024-01-26 code review 文章目录 C++笔记之作用域解析符::和命名空间、作用域的关系1.`命名空间`和`作用域`两个术语的联系和区别命名空间(Namespace)作用域(Scope)联系与区别2.`作用域解析符::`和`命名空间`…...
回归预测 | MATLAB实现PSO-GRNN粒子群优化广义回归神经网络多输入单输出预测(含优化前后预测可视化)
回归预测 | MATLAB实现PSO-GRNN粒子群优化广义回归神经网络多输入单输出预测 目录 回归预测 | MATLAB实现PSO-GRNN粒子群优化广义回归神经网络多输入单输出预测预测效果基本介绍程序设计参考资料预测效果 <...
linux安装 黑方容灾备份与恢复系统软件v6.0 代理
1.环境准备 1.1硬件环境 内存>4G,cpu最低双核 1.2把SElinux状态改为Disabled (1)查看SElinux状态 输入getenforce命令 SELinux共有3个状态: enforcing (执行中)、permissive (不执行但…...
STM32第一节——初识STM32
1 硬件介绍 1.1 硬件平台 配套硬件:以野火的STM32 F1霸道开发板为平台,若用的是别的开发板,可自己进行移植。 1.2 什么是STM32 STM32是由意法半导体(STMicroelectronics)公司推出的一系列32位的ARM Cortex-M微控制…...
多场景建模:美团HiNet
HiNet: Novel Multi-Scenario & Multi-Task Learning with Hierarchical Information Extraction 背景: 美团的多场景多任务(ctr、ctcvr) 解决方案 通过分层来分别学习多场景多任务 方案详情 点评:在底层Embedding时用…...
第二百九十三回
文章目录 1. 概念介绍2. 方法与细节2.1 实现方法2.2 具体细节 3. 示例代码4. 内容总结 我们在上一章回中介绍了"如何混合选择多个图片和视频文件"相关的内容,本章回中将介绍如何通过相机获取图片文件.闲话休提,让我们一起Talk Flutter吧。 1. …...
【网络协议分析】使用Wireshark分析UDP协议
一、实验目的 通过使用Wireshark抓取UDP流来分析学习UDP协议,比较TCP与UDP的不同。 二、实验过程 1、使用Wireshark抓取UDP报文流,常见的使用UDP协议的应用有DNS、QQ、在线游戏等。 2、分析抓取到的数据包,比较与TCP协议的异同。 我们选取DN…...
TensorFlow Lite中文本分类在Android上的实践
#1 Tensorflow Lite TensorFlow Lite(后续简称TFL) 是 Google 开发的一个用于移动设备和嵌入式设备的开源库,旨在为移动终端设备提供机器学习推断。它是 TensorFlow 框架的轻量级版本,专门优化了模型的大小和性能,以适应资源受限的移动设备和嵌入式系统。 TFL 提供了一种在移…...
使用vscode查bug
具体操作 修改CMakeList.txt # set(CMAKE_BUILD_TYPE "Release")//注释Release模式 set(CMAKE_BUILD_TYPE "Debug")//设置为Debug模式 # set(CMAKE_CXX_FLAGS_RELEASE "-O3 -Wall -g")//注释*这行代码是用来设置 CMake 构建系统中 Release 模式…...
LC 2846. 边权重均等查询
2846. 边权重均等查询 难度: 困难 题目大意: 现有一棵由 n 个节点组成的无向树,节点按从 0 到 n - 1 编号。给你一个整数 n 和一个长度为 n - 1 的二维整数数组 edges ,其中 edges[i] [ui, vi, wi] 表示树中存在一条位于节点 …...
RabbitMQ简单模式和工作模式
RabbitMQ 是一个消息队列中间件,用于在分布式系统中进行消息传递。在 RabbitMQ 中,有几种工作模式,其中简单模式和工作模式是其中两种基本的模式之一。 简单模式(Simple Mode): 在简单模式中,有…...
c语言实战之贪吃蛇
文章目录 前言效果展示游戏用到的图片游戏思路一览游戏前准备一、贪吃蛇、食物、障碍物节点坐标的结构体二、枚举游戏状态、和贪吃蛇的方向三、维护运行的结构体 游戏开始前的初始化一、学习图形库相关知识二、设置背景三、欢迎界面四、初始化贪吃蛇五、生成障碍物六、生成食物…...
Midjourney图片生成描述词记录(今天一天)
抄别人的描述词 /imagine prompt:https://(你的图片地址).jpg Super handsome boy IP by pop mart , green suit, no hair, bald head, Scenes in spring , pastel color , mockup , fine luster , clean background ,3D render , Soft focus , oc , bl…...
类和对象 第五部分第四小节:赋值运算符重载
C编译器至少给一个类添加4个函数 1.默认构造函数无参,函数体为空 2.默认析构函数无参,函数体为空 3.默认拷贝沟早函数,对属性进行值拷贝 4.赋值运算符“operator”,对属性进行值拷贝 如果类中有属性指向堆区,做赋值操作…...
Django从入门到精通(一)
目录 一、Django环境搭建与命令 1.1、安装 1.2、命令行 创建项目 编写代码 运行 app概念 1.3、Pycharm创建项目 1.4、虚拟环境 创建虚拟环境 - 命令行 介绍 操作 基本问题 Pycharm 项目虚拟环境 django虚拟环境【安装django最新版本】 django虚拟环境【安装指…...
数据库分表分库的原则
什么是数据库分库分表 数据库分表(Table Sharding) 数据库分表是将一个大表按照某种规则拆分成多个小表存储在不同的物理表中的技术。通常,拆分规则是基于某个列的值进行拆分,例如根据用户ID或日期范围等进行拆分。每个小表只包…...
Java技术栈 —— Docker容器
Java技术栈 —— Docker容器 一、什么是Docker?二、如何安装Docker?三、如何使用Docker? 一、什么是Docker? docker的本意是码头工人。 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个…...
树莓派超全系列教程文档--(61)树莓派摄像头高级使用方法
树莓派摄像头高级使用方法 配置通过调谐文件来调整相机行为 使用多个摄像头安装 libcam 和 rpicam-apps依赖关系开发包 文章来源: http://raspberry.dns8844.cn/documentation 原文网址 配置 大多数用例自动工作,无需更改相机配置。但是,一…...
UE5 学习系列(三)创建和移动物体
这篇博客是该系列的第三篇,是在之前两篇博客的基础上展开,主要介绍如何在操作界面中创建和拖动物体,这篇博客跟随的视频链接如下: B 站视频:s03-创建和移动物体 如果你不打算开之前的博客并且对UE5 比较熟的话按照以…...
《通信之道——从微积分到 5G》读书总结
第1章 绪 论 1.1 这是一本什么样的书 通信技术,说到底就是数学。 那些最基础、最本质的部分。 1.2 什么是通信 通信 发送方 接收方 承载信息的信号 解调出其中承载的信息 信息在发送方那里被加工成信号(调制) 把信息从信号中抽取出来&am…...
生成 Git SSH 证书
🔑 1. 生成 SSH 密钥对 在终端(Windows 使用 Git Bash,Mac/Linux 使用 Terminal)执行命令: ssh-keygen -t rsa -b 4096 -C "your_emailexample.com" 参数说明: -t rsa&#x…...
数据库分批入库
今天在工作中,遇到一个问题,就是分批查询的时候,由于批次过大导致出现了一些问题,一下是问题描述和解决方案: 示例: // 假设已有数据列表 dataList 和 PreparedStatement pstmt int batchSize 1000; // …...
css3笔记 (1) 自用
outline: none 用于移除元素获得焦点时默认的轮廓线 broder:0 用于移除边框 font-size:0 用于设置字体不显示 list-style: none 消除<li> 标签默认样式 margin: xx auto 版心居中 width:100% 通栏 vertical-align 作用于行内元素 / 表格单元格ÿ…...
Java多线程实现之Thread类深度解析
Java多线程实现之Thread类深度解析 一、多线程基础概念1.1 什么是线程1.2 多线程的优势1.3 Java多线程模型 二、Thread类的基本结构与构造函数2.1 Thread类的继承关系2.2 构造函数 三、创建和启动线程3.1 继承Thread类创建线程3.2 实现Runnable接口创建线程 四、Thread类的核心…...
听写流程自动化实践,轻量级教育辅助
随着智能教育工具的发展,越来越多的传统学习方式正在被数字化、自动化所优化。听写作为语文、英语等学科中重要的基础训练形式,也迎来了更高效的解决方案。 这是一款轻量但功能强大的听写辅助工具。它是基于本地词库与可选在线语音引擎构建,…...
Python 包管理器 uv 介绍
Python 包管理器 uv 全面介绍 uv 是由 Astral(热门工具 Ruff 的开发者)推出的下一代高性能 Python 包管理器和构建工具,用 Rust 编写。它旨在解决传统工具(如 pip、virtualenv、pip-tools)的性能瓶颈,同时…...
【7色560页】职场可视化逻辑图高级数据分析PPT模版
7种色调职场工作汇报PPT,橙蓝、黑红、红蓝、蓝橙灰、浅蓝、浅绿、深蓝七种色调模版 【7色560页】职场可视化逻辑图高级数据分析PPT模版:职场可视化逻辑图分析PPT模版https://pan.quark.cn/s/78aeabbd92d1...
