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

推荐订阅源

Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
S
SegmentFault 最新的问题
Recent Commits to openclaw:main
Recent Commits to openclaw:main
Attack and Defense Labs
Attack and Defense Labs
F
Full Disclosure
Vercel News
Vercel News
N
News | PayPal Newsroom
The GitHub Blog
The GitHub Blog
H
Hacker News: Front Page
H
Heimdal Security Blog
P
Privacy International News Feed
博客园 - 司徒正美
Google DeepMind News
Google DeepMind News
N
Netflix TechBlog - Medium
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
C
Cisco Blogs
L
Lohrmann on Cybersecurity
D
Docker
Recent Announcements
Recent Announcements
Security Archives - TechRepublic
Security Archives - TechRepublic
人人都是产品经理
人人都是产品经理
C
CXSECURITY Database RSS Feed - CXSecurity.com
P
Proofpoint News Feed
T
Tailwind CSS Blog
C
Check Point Blog
博客园 - 叶小钗
Google Online Security Blog
Google Online Security Blog
Martin Fowler
Martin Fowler
Stack Overflow Blog
Stack Overflow Blog
博客园 - 聂微东
S
Secure Thoughts
博客园 - Franky
博客园_首页
阮一峰的网络日志
阮一峰的网络日志
P
Palo Alto Networks Blog
Latest news
Latest news
量子位
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
博客园 - 三生石上(FineUI控件)
The Cloudflare Blog
Last Week in AI
Last Week in AI
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
Cyberwarzone
Cyberwarzone
小众软件
小众软件
Cisco Talos Blog
Cisco Talos Blog
Hacker News: Ask HN
Hacker News: Ask HN
T
Threatpost
T
Tenable Blog
P
Privacy & Cybersecurity Law Blog
WordPress大学
WordPress大学

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. 替换内核