首页 > 其他分享 >如何让WSL2使用自己编译的内核

如何让WSL2使用自己编译的内核

时间:2024-04-11 12:26:38浏览次数:51  
标签:配置 wsl 编译 源码 内核 linux WSL2

目录

最近有一个摄像头的项目,想着为什么不直接使用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

相关文章

  • 千万不要将centos中python 默认2.7的编译器改为3.x的,会出现File “ usr bin yum“, li
    千万不要将centos中python默认2.7的编译器改为3.x的,在使用yum时,会报各种错,1、File"/usr/bin/yum",line30  exceptKeyboardInterrupt,e:原因是yum按python3.6解析2.7的语法出错了修改/usr/bin/yum文件中的第一行为#!/usr/bin/python2.72、 File"/usr/libexec/url......
  • ZOMI的AI编译原理3
    LLVM设计架构LLVMIR与GCCIR对比特性LLVMIRGCCIR(GIMPLE)独立性和库化架构高度模块化,前端和后端分离,易于添加新语言和目标平台传统GCC架构,前端和后端耦合较紧密表达形式人类可读的汇编形式、C++对象形式、序列化后的bitcode形式GIMPLE表示形式,三地址代码,SS......
  • 17. Linux内核运行方式
    【Linux简介】操作系统启动过程计算机启动后CPU从默认的地址处读取NORFlash存储器中的固件执行,固件检测计算机各种设备工作正常后,去辅存查询下一个程序执行,这个程序就是操作系统启动入口、或者操作系统安装程序执行入口,查询方式有如下两种。Legacy方式此方式在辅存的......
  • WSL2-Ubuntu Pytorch深度学习开发环境搭建
    安装Linux发行版删除现有Linux发行版wsl-l-vwsl--unregisterUbuntu从MicrosoftStore安装Linux发行版设置用户名和密码安装CUDACUDA(ComputeUnifiedDeviceArchitecture)是由NVIDIA推出的并行计算平台和编程模型。CUDAToolkit是由NVIDIA提供的一套用于GPU开发......
  • Notepad--文本编译工具推荐
    推荐一个全平台的文本、代码编辑工具Notepad--,支持Windows、Mac以及国产uos深度系统、redhat/ubutu/centos等系统。可以替换你目前手头使用的Notpad++,这个软件能不用就别用了,懂得都懂。废话不多说,附上Notepad--作者爬山虎的gitee链接ndd发行版-Gitee.com这个软件挺轻量化的......
  • boost编译失败
    概述本文档介绍再编译openGauss-third_party三方库时候,boost编译失败解决方法。目前在1.1.02.0.0版本都适用。错误分析和处理在编译openGauss-third_party三方库时候,我们首先在build目录下执行shbuild.sh,三方库自行编译。但是经常遇到在编译到boost的时候,脚本终......
  • Delphi 编译的app无法在android 14安装
    今天用delphi12.1升级旧项目,编译正常,但安装时出下面的提示:08:48:26E/SplitApkInstaller:Failedtofinalizesession:INSTALL_PARSE_FAILED_MANIFEST_MALFORMED:FailedparseduringinstallPackageLI:/data/app/vmdl1849586780.tmp/base.apk(atBinaryXMLfileline#......
  • 肖恩带你看C语言·编译和链接
    来咯来咯,又见面咯,看看编译和链接的知识,了解一下就好,不必深究~~~运行环境运行环境是指运行编译后的C语言程序所需的硬件和软件环境。硬件环境:包括CPU、内存、硬盘等物理设备,这些设备提供了程序运行所需的硬件资源。软件环境:主要是指操作系统和相关的库文件。操作系统提供......
  • 【编译原理】Antlr 入门使用
    前面文章我们学习了编译器前端的词法和语法分析工具,本篇我们来看看如何借助Antlr工具,快速生成词法和语法分析代码。一、安装mac环境:1)安装brewinstallantlr2)配置classpath(把Antlr的JAR文件设置到CLASSPATH环境变量中,以便顺利编译所生成的Java源代码。)vi~/.b......
  • MinGW-w64 C/C++编译器的下载和安装
    1.介绍        MinGW(“MinimalistGNUforWindows”),以前称为mingw32,是一个用于创建MicrosoftWindows应用程序的免费开源软件开发环境。        MinGW-w64项目是gcc的完整运行时环境,支持Windows64位和32位操作系统本机二进制文件。2.安装包下载......