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功能已经支持了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/247254.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

开始学习第二十五天(番外)

今天分享一下写的小游戏啦 头文件game.h #include<stdio.h> #include<time.h> #include<stdlib.h> #define H 3 #define L 3 void InitBoard(char Board[H][L], int h, int l); void DisplayBoard(char Board[H][L], int h, int l); void playermove(cha…

【LeetCode: Z 字形变换 + 模拟】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

5G_RACH(一)

什么是RACH RACH 代表 Random Access Channel。这是开机时UE发给eNB的第一条消息。 为什么选择RACH &#xff1f;&#xff08;RACH 的功能是什么&#xff1f; 当你第一次听到RACH或RACH Process这个词时&#xff0c;你脑海中浮现的第一个问题是“为什么是RACH&#xff1f;”…

Windows XP x86 sp3 安装 Google Chrome 49.0.2623.112 (正式版本) (32 位)

1 下载地址&#xff1b; https://dl.google.com/release2/h8vnfiy7pvn3lxy9ehfsaxlrnnukgff8jnodrp0y21vrlem4x71lor5zzkliyh8fv3sryayu5uk5zi20ep7dwfnwr143dzxqijv/49.0.2623.112_chrome_installer.exe 2 直接 双击 49.0.2623.112_chrome_installer.exe 安装&#xff1b; 3 …

Redis6基础知识梳理~

初识NOSQL&#xff1a; NOSQL是为了解决性能问题而产生的技术&#xff0c;在最初&#xff0c;我们都是使用单体服务器架构&#xff0c;如下所示&#xff1a; 随着用户访问量大幅度提升&#xff0c;同时产生了大量的用户数据&#xff0c;单体服务器架构面对着巨大的压力 NOSQL解…

SpringBoot之JWT登录

JWT JSON Web Token&#xff08;JSON Web令牌&#xff09; 是一个开放标准(rfc7519)&#xff0c;它定义了一种紧凑的、自包含的方式&#xff0c;用于在各方之间以JSON对象安全地传输信息。此信息可以验证和信任&#xff0c;因为它是数字签名的。jwt可以使用秘密〈使用HNAC算法…

10. UE5 RPG使用GameEffect创建血瓶修改角色属性

前面我们通过代码实现了UI显示角色的血量和蓝量&#xff0c;并实现了初始化和在数值变动时实时更新。为了测试方便&#xff0c;没有使用GameEffect去修改角色的属性&#xff0c;而是通过代码直接修改的数值。 对于GameEffect的基础&#xff0c;这里不再讲解&#xff0c;如果需要…

《动手学深度学习(PyTorch版)》笔记4.4

注&#xff1a;书中对代码的讲解并不详细&#xff0c;本文对很多细节做了详细注释。另外&#xff0c;书上的源代码是在Jupyter Notebook上运行的&#xff0c;较为分散&#xff0c;本文将代码集中起来&#xff0c;并加以完善&#xff0c;全部用vscode在python 3.9.18下测试通过。…

鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之Swiper容器组件

鸿蒙&#xff08;HarmonyOS&#xff09;项目方舟框架&#xff08;ArkUI&#xff09;之Swiper容器组件 一、操作环境 操作系统: Windows 10 专业版、IDE:DevEco Studio 3.1、SDK:HarmonyOS 3.1 二、Swiper容器组件 滑块视图容器&#xff0c;提供子组件滑动轮播显示的能力。…

漏洞原理MySql注入 Windows中Sqlmap 工具的使用

漏洞原理MySql注入 SQLmap是一款开源的自动化SQL注入工具&#xff0c;用于检测和利用Web应用程序中的SQL注入漏洞。以下是SQLmap工具的使用总结&#xff1a; 安装和配置&#xff1a;首先需要下载并安装SQLmap工具。安装完成后&#xff0c;可以通过命令行界面或图形用户界面来使…

Kafka-服务端-GroupMetadataManager

GroupMetadataManager是GroupCoordinator中负责管理Consumer Group元数据以及其对应offset信息的组件。 GroupMetadataManager底层使用Offsets Topic,以消息的形式存储Consumer Group的GroupMetadata信息以及其消费的每个分区的offset,如图所示。 consumer_offsets的某Partiti…

C#算法(11)—求三个点构成圆的圆心坐标和半径

前言 我们在上位机开发领域也经常会碰到根据三个点求出圆的圆心、半径等信息的场景,本文就是详细的介绍如何根据三个点使用C#代码求出三点构成的圆的圆心坐标、圆半径、三点构成的圆弧的角度。 1、3点求圆分析 A、B、C三个点都是圆上的坐标点,过向量AB做中垂线,过向量AC做…

RabbitMQ“延时队列“

1.RabbitMQ"延时队列" 延迟队列存储的对象是对应的延迟消息&#xff0c;所谓“延迟消息”是指当消息被发送以后&#xff0c;并不想让消费者立刻拿到消息&#xff0c;而是等待特定时间后&#xff0c;消费者才能拿到这个消息进行消费 注意RabbitMQ并没有延时队列慨念,…

一款相对比较强大的国产ARM单片机HC32F4A0

已经用了3年的HC32F4A0&#xff0c;已经对它比较熟悉了&#xff0c;与STM32相比它的外设使用这些的确是挺大大&#xff0c;不像GD32一类的单片机很多都能兼容STM32。用久了之后就更喜欢用HC32F4A0&#xff0c;功能强大&#xff0c;外设使用灵活&#xff0c;用点向FPGA靠拢的感觉…

TCP 三次握手 四次挥手以及滑动窗口

TCP 三次握手 简介&#xff1a; TCP 是一种面向连接的单播协议&#xff0c;在发送数据前&#xff0c;通信双方必须在彼此间建立一条连接。所谓的 “ 连接” &#xff0c;其实是客户端和服务器的内存里保存的一份关于对方的信息&#xff0c;如 IP 地址、端口号等。 TCP 可以…

系统调用:计算机中的“服务员”

一、什么是系统调用 想象一下&#xff0c;你在一家餐厅就餐&#xff0c;你需要通过服务员来点菜、支付等。系统调用就像是这个服务员&#xff0c;它在软件和操作系统之间起到了桥梁的作用。当软件需要操作系统提供的某项服务时&#xff0c;它就像顾客一样&#xff0c;通过点菜…

双非本科准备秋招(9.2)——力扣哈希

1、383. 赎金信 跟昨天的题大同小异&#xff0c;因为只有26个字母&#xff0c;所以可以建个有26个坑位的数组。 做完昨天的题目&#xff0c;这个题没啥新意。 class Solution {public boolean canConstruct(String ransomNote, String magazine) {int[] hashTable new int[…

Gin 应用多实例部署session问题、session参数与刷新

文章目录 一、Gin Session 存储的实现方案二、memstore&#xff1a;基于内存的实现2.1 基本使用2.2 关键参数 三、使用redis&#xff1a;多实例部署3.1 使用redis优势3.2 基本使用 四、信息安全的三个核心概念五、Gin Session 参数5.1 参数介绍 六、Session 自动刷新 一、Gin S…

FFMPEG解析ts流

三篇相关联的文章&#xff1a; ffmpeg下HLS解析过程-CSDN博客TS文件格式详解及解封装过程-CSDN博客 FFMPEG解析ts流-CSDN博客 一、简介 关于TS格式解析&#xff0c;可以参考《TS文件格式详解及解封装过程-CSDN博客》&#xff0c;本文主要代码部分解读。建议大家熟读iso138…

Apache Shiro <= 1.2.4反序列化漏洞攻击 CVE-2016-4437 已亲自复现

Apache Shiro < 1.2.4反序列化漏洞攻击 CVE-2016-4437 已亲自复现 漏洞名称漏洞描述影响版本 漏洞复现环境搭建漏洞利用 修复建议总结 漏洞名称 漏洞描述 在 1.2.5 之前的 Apache Shiro 中&#xff0c;当未为“记住我”功能配置密钥时&#xff0c;远程攻击者可以通过未指定…