惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

T
The Blog of Author Tim Ferriss
S
Securelist
D
Docker
The Register - Security
The Register - Security
GbyAI
GbyAI
Recorded Future
Recorded Future
Engineering at Meta
Engineering at Meta
Stack Overflow Blog
Stack Overflow Blog
云风的 BLOG
云风的 BLOG
P
Proofpoint News Feed
罗磊的独立博客
博客园 - 【当耐特】
F
Full Disclosure
WordPress大学
WordPress大学
腾讯CDC
小众软件
小众软件
大猫的无限游戏
大猫的无限游戏
D
DataBreaches.Net
SecWiki News
SecWiki News
L
Lohrmann on Cybersecurity
I
InfoQ
MyScale Blog
MyScale Blog
量子位
Cyberwarzone
Cyberwarzone
博客园 - 三生石上(FineUI控件)
The Hacker News
The Hacker News
F
Fortinet All Blogs
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Jina AI
Jina AI
博客园_首页
H
Help Net Security
K
Kaspersky official blog
酷 壳 – CoolShell
酷 壳 – CoolShell
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
www.infosecurity-magazine.com
www.infosecurity-magazine.com
Webroot Blog
Webroot Blog
Blog — PlanetScale
Blog — PlanetScale
V
Vulnerabilities – Threatpost
Y
Y Combinator Blog
The Cloudflare Blog
P
Proofpoint News Feed
V
Visual Studio Blog
C
Cyber Attacks, Cyber Crime and Cyber Security
T
Tailwind CSS Blog
爱范儿
爱范儿
P
Privacy International News Feed
Security Archives - TechRepublic
Security Archives - TechRepublic
The GitHub Blog
The GitHub Blog
C
Cybersecurity and Infrastructure Security Agency CISA
B
Blog RSS Feed

zStack

Kerberos 认证体系引起的产品系统免密问题 | zStack 通过 strace 追踪 sqlldr 的性能问题 控糖革命 | zStack 单例模式的几种 C++ 实现 | zStack 通过 ChatGPT 协助解决软件安装问题 | zStack 【xv6】Copy on write fork() | zStack 【xv6】trap | zStack 【xv6】system call | zStack 如何用 C 实现协程 | zStack 利用 nginx-upload-module 实现文件上传和重命名 | zStack 如何找到一个适合自己的笔记软件 | zStack 为终端设置 ASCII ART | zStack Qver - 用于练手的服务器程序 | zStack 关于我在宿舍种草的那些事 | zStack
在 WSL2 的 Arch Linux 下编译并替换内核
Noicdi · 2022-01-29 · via zStack

在 WSL2 的 Arch Linux 下编译并替换内核

2022-01-29 07:05:05 #WSL 

闲来无事,想把 WSL2 的 kernel 升级一下。GitHub 中微软官方发布的 WSL2 kernel 最新版本为5.10.74.3,但是 Microsoft Update Catalog 中一直没有相应版本的安装包(截止本文发布)

于是打算自己动手编译一下

编译环境

WSL2 下的 Arch Linux

image-20220129195006232

编译内核

整体编译思路就是利用微软的编译配置文件来编译 Linux kernel,并在相应的 Windows 目录下替换现有的内核

这里放一下 GitHub 中的 WSL2-Linux-Kernel

下载源码

在 GitHub 下载相应版本的 releases

1
wget https://github.com/microsoft/WSL2-Linux-Kernel/archive/refs/tags/linux-msft-wsl-5.10.74.3.tar.gz

下载完成后解压缩并进入目录

1
2
tar zxvf linux-msft-wsl-5.10.74.3.tar.gz
cd WSL2-Linux-Kernel-linux-msft-wsl-5.10.74.3/

为确保内核树绝对干净,进入内核目录并执行make mrproper命令

1
make clean && make mrproper

安装编译工具

微软也在项目里告知了步骤,其中也包括编译工具

image-20220129183105502

这个不能照葫芦画瓢直接复制下来,需要在 ArchWiki 中找一下 Arch Linux 中的包

build-essentialflexbison都集成在 Arch Linux 的base-devel里了,其他两个也有相对应的包

1
sudo pacman -S base-devel openssl libelf pahole xmlto kmod inetutils bc

关于pahole

在多次编译时,最终都会报错

1
2
3
BTF: .tmp_vmlinux.btf: pahole (pahole) is not available
Failed to generate BTF for vmlinux
Try to disable CONFIG_DEBUG_INFO_BTF

一种方法是在Microsoft/config-wsl中对CONFIG_DEBUG_INFO_BTF设置关闭

✨ 另一种方法是下载pahole,此方法取自 Stack Overflow,其他发行版遇到此问题也可以看一下


关于其余四个包:

ArchWiki 推荐


2022-02-08更新:

在最新推出的5.10.93.2版本中,官方修复了关于以上提到的BTF报错,针对 Ubuntu 给出依赖项dwarves

image-20220208151648920

image-20220208151617183


修改编译配置文件

打开Microsoft/config-wsl文件,把内核号修改了一下,改成自己的名字

image-20220129200205133

开始编译

1
make KCONFIG_CONFIG=Microsoft/config-wsl -j

编译开始时会出现编译选项,全部按照默认就可以了

image-20220129200241690

然后就可以等着编译完成了


可以看到编译完成的内核所在的路径为arch/x86/boot/bzImage

image-20220129201037392

image-20220129201122975

这就是编译好的 WSL2 的内核了

替换内核

WSL2 使用的内核是放在 Windows 目录下的C:\WINDOWS\System32\lxss\tools

只需要把编译好的bzImage复制到此路径下,并更名为kernel即可

image-20220129191238317

可以使用文件管理器复制内核

1
explorer.exe .

关闭所有 WSL,并将bzImage复制到C:\WINDOWS\System32\lxss\tools下并更名为kernel

替换内核前需要将所有 WSL 关闭

image-20220129201443082


启动 Arch Linux,并截图

image-20220129201701803

🌈 可以看到内核已经替换为5.10.74.3版本了

目录

  1. 编译环境
  2. 编译内核
    1. 下载源码
    2. 安装编译工具
    3. 修改编译配置文件
    4. 开始编译
  3. 替换内核