目录
最近有一个摄像头的项目,想着为什么不直接使用wsl呢。查阅了网络上大量的资料,修改了WSL2内核来支持UVC
wsl基本介绍 以及 安装
wsl(windows subsystem for linux)是windows自带的linux 环境,和NT共同运行在hypervisor,两者通过网络访问。
wsl2 安装方法参考微软官网 wsl安装
编译内核
下面开始linux内核编译过程
下载linux源码
源码版本选择
在wsl执行命令 uname -a 查看当前的linux版本
我的Linux版本是5.15 进入微软 WSL2-Linux-Kernel 项目,下载对应内核版本的源码。
首先安装依赖,创建下载源码的文件夹,下载linux内核源码,解压到当前文件夹
微软目前最新的内核是 6.1,不过我还是使用5.15来编译,编译过程都一样
sudo apt install build-essential flex bison dwarves libssl-dev libelf-dev libncurses5-dev
mkdir kernel
wget https://github.com/microsoft/WSL2-Linux-Kernel/archive/refs/tags/linux-msft-wsl-5.15.150.1.tar.gz
tar -vxf linux-msft-wsl-5.15.150.1.tar.gz
cd linux-msft-wsl-5.15.150.1
内核中目录的结构长这样
使用wsl内核配置
wsl2和常规的linux不同,所以我们要根据微软的配置文件来配置内核。
之前配置失败就是因为 直接使用 Microsoft/config-wsl 文件没有给没有给make menuconfig 传递正确的参数,指定文件可以使用make menuconfig KCONFIG_CONFIG=Microsoft/config-wsl
,不过为了增加容错,这里直接使用复制到根目录的方法了
微软的配置在源码根目录下的Microsoft目录下,将他复制到源码根目录下。
cp Microsoft/config-wsl .config
添加uvc内核驱动
配置linux内核, 进入配置页面
make menuconfig
在内核配置页面按下 /
搜索 uvc
,找到uvc相关的内核配置
将上面所有非 y 的配置为 y。我这是已经配置好的界面
配置好后,保存退出
编译内核
到这里,内核已经配置成功
如果想要修改内核版本号可以修改makefile文件
vim Makefile
修改内核名 在 .config中
General setup --->
(-kuraxii-bulid) Local version - append to kernel release
编译内核
make -j4
编译完成后,可以看到最后有输出路径。这就是编译成功的内核镜像了
切换wsl内核
将内核文件复制到windows任意一个目录。我将它放在C:\Windows\System32\lxss\tools。这是wsl默认的内核存放目录
转到 %USERPROFILE%目录修改.wslconfig文件,没有就创建文件
添加配置
[wsl2]
kernel=C:\\Windows\\System32\\lxss\\tools\\bzImage
重启内核
启动windows 终端,关闭wsl。等待8秒后重新启动wsl
wsl --shutdown
现在,查看linux内核版本发行版,可以看到内核已经换成我们编译的内核
uname -a
标签:配置,wsl,编译,源码,内核,linux,WSL2
From: https://www.cnblogs.com/kuraxii/p/18128776