给 WSL2 编译一个 Linux 6 内核
前言
就是图个新鲜。由于网上很少有在 Arch Linux 下编译 Linux 内核的教程,故写。
前提条件
- 聪明的大脑
- 灵巧的双手
- WSL2
准备工作
安装 WSL
打开命令行,运行
1 |
|
重启之后继续运行(你可能需要安装 WSL2 内核)
1 |
|
最后前往 ArchWSL 下载并安装 ArchWSL。
安装软件包
配置好 ArchWSL 后,在 WSL 终端运行
1 |
|
获取源代码
打开 kernel.org,找一找最新的 Linux 稳定版内核源码,下载并解压。
例如:
1 |
|
获取 WSL 内核配置
WSL 2 的内核源码被托管到 GitHub 仓库,其中的编译配置文件是我们需要的,同时也和(应该是)大部分 Linux 内核变种兼容。
将这个文件下载到 Microsoft
文件夹里:
1 |
|
开始编译
修改配置文件
这里主要是自定义版本号。我们需要修改的有 Makefile
和 config-wsl
。
直接在 WSL 终端里执行:
1 |
|
PS. 版本号是这样的格式:
1 |
|
开始编译
按照 GitHub 仓库的说明,运行 make KCONFIG_CONFIG=Microsoft/config-wsl
即可开始编译。
不过为了加快速度,最好用 -j
指定多线程(一般是核心数 × 2)。
由于仓库里的配置文件和目前内核的配置项会有一些出入,对于缺失的配置项会在编译前询问,一路回车应用默认值就好。(我们可以用 yes 来自动回车)
于是,运行
1 |
|
等待片刻(大约 20min)后看到这一行文字
1 |
|
就可以了。
替换 WSL 内核
不建议直接替换内核文件。微软提供了一种优雅的方法来替换 WSL 内核。
撰写配置文件
Win+R 打开“运行”,执行
1 |
|
输入这些文字
1 |
|
保存之后,把刚才生成的 bzImage
文件放到上面指定的位置。例如:
1 |
|
重启 WSL
1 |
|
再次打开一个 WSL 实例,如果出现命令行且没有报错,证明你编译出的内核是可用的。
完毕
1 |
|
享受你 WSL 上的 Linux 6 吧!
References
给 WSL2 编译一个 Linux 6 内核
https://enita.cn/2023/0731/bcd47a5aace1/