wsl2为了驱动开发编译内核

试了各种错之后结果发现还是得用自己编译的才行,单纯的头文件还是会出现各种错误。

基本参考了How to use the Microsoft Linux kernel v6 on WSL2 | Microsoft Learn这篇文章的内容。可以选择不用v6只用官方github上默认的。具体步骤也是一样的。

1. 构建

  1. 打开wsl终端运行发行版如ubuntu

  2. 选择github上的Microsoft Linux kernel库

    git clone https://github.com/microsoft/WSL2-Linux-Kernel.git --depth=1 -b linux-msft-wsl-6.1.y
    
  3. 安装需要的包

    sudo apt update && sudo apt install build-essential flex bison libssl-dev libelf-dev bc python3 pahole
    
  4. 到内核源码目录下

    cd WSL2-Linux-Kernel
    
  5. 构建内核

    make -j$(nproc) KCONFIG_CONFIG=Microsoft/config-wsl
    
  6. 安装模块和头文件

    sudo make modules_install headers_install
    
  7. 拷贝内核镜像到windows文件系统

    cp arch/x86/boot/bzImage /mnt/c/
    

    这里直接放到了C盘根目录了,其实可以放到任意你喜欢的位置。到时候安装那一步的时候在.wslconfig上别填错就好了

    一开始用的是和wsl同一版本的源代码编译的,但是没有进行第7步,自己动手写的简单驱动能编译通过但是不能加载出现BTF:-22的错误。

    如果在用github上release的包的时候出现了类似CONFIG_X86_X32 的错误,需要将对应选项的=y改为=n

2. 安装

  1. 编辑%USERPROFILE%\.wslconfig添加下面的内容:

    [wsl2]
    kernel=C:\\bzImage
    

    地址记得根据之前自定义的位置进行相应修改

  2. 关闭wsl

    wsl --shutdown
    

3. 使用

再次打开wsl然后查看内核版本

uname -r
posted @ 2024-05-10 15:45  Larcvz  阅读(619)  评论(0)    收藏  举报