为你的WSL 2编译一个最新的Linux内核吧!

前言

随着Win 10 2004版本的正式推送,很多人也都用上了最新的WSL 2,这使得Win 10成了最好的Linux发行版(雾)。WSL 2相比WSL 1,最大的改变就是使用了真正的Linux内核,而不仅仅是一个适配层。我们可以通过命令uname -r查看这个内核的版本,通过正式推送获得的WSL 2的内核版本应当是4.19.84。这本没有什么问题,可是我在最近的操作系统实验过程中注意到,Microsoft可能对这个内核动过什么手脚,导致该内核无法支持minix文件系统(Bochs虚拟机挂载的虚拟硬盘就是该文件系统),而Linux内核的官方文档表示,Linux内核是原生支持该文件系统的……估计是微软在编译内核的时候把这个功能去掉了吧。或者,即使你不使用minix文件系统,仅仅是想体验最新版的内核,也可以尝试一下。

本次我们编译https://www.kernel.org/上面最新的5.7版本的内核。

前置工作

首先,我们需要一个可用的Linux环境,Ubuntu就很不错,当然也可以直接用 WSL 编译。我使用的是刚刚发布的20.04,作为内核编译的平台。

我们需要安装编译内核所必要的依赖:

sudo apt install g++ 
### 如何在WSL2编译自定义内核 #### 准备工作 为了能够在WSL2上成功编译自定义内核,首先需要确保安装了必要的工具链以及依赖项。这些工具包括但不限于 `build-essential` 和其他开发环境所需的软件包。 可以通过运行以下命令来安装所需的基础工具: ```bash sudo apt update && sudo apt install -y build-essential bc flex bison libssl-dev dkms ``` 这一步骤是为了准备一个适合构建Linux内核的工作环境[^1]。 #### 下载内核源码 微软已经将其用于WSL2Linux内核进行了开源处理,因此可以直接从官方GitHub仓库获取最新内核源代码。具体操作如下: 执行以下命令克隆仓库并切换至目标分支: ```bash git clone https://github.com/microsoft/WSL2-Linux-Kernel.git cd WSL2-Linux-Kernel git checkout tags/linux-msft-wsl-<version> # 替换 <version> 为你当前使用的实际版本号 ``` 这里可以利用 `uname -r` 来确认正在运行的具体内核版本,并据此选择合适的标签进行检出[^2]。 #### 配置新内核选项 进入解压后的目录之后,需基于现有的配置文件创建一个新的`.config` 文件作为起点。通常推荐复制默认配置或者现有系统的配置来进行修改。 ```bash cp arch/x86/configs/wsl2_defconfig ./.config make olddefconfig ``` 如果计划增加对特定设备的支持(比如USB),则可能还需要手动编辑该 `.config` 文件启用相应的模块支持。例如对于 USB 设备来说,应该查找与之关联的各项开关并将它们设置为 `=m` 或者 `=y` 形式以激活对应功能[^3]。 完成上述更改后保存退出即可继续下一步流程。 #### 开始编译过程 一切就绪之后就可以正式开始编译新的定制化内核镜像啦!以下是具体的指令序列: ```bash make -j$(nproc) bzImage modules ``` 此命令会依据主机CPU核心数量自动调整并发作业数从而加速整个编译进程。完成后将会得到位于 `arch/x86/boot/bzImage` 路径下的最终产物——即压缩过的引导映象文件。 接着还需打包生成配套的initramfs档案供后续部署阶段使用: ```bash find . | cpio --create --format=newc > ../initrd.img gzip -9f ../initrd.img mv ../initrd.img.gz . ``` 最后记得把刚制作好的两份关键成果转移到适当位置等待进一步应用。 #### 更新WSL2启动参数 要让Windows Subsystem for Linux第二代能够识别刚刚建立的新版内核,则必须调整其注册表条目中的Kernel路径指向刚才生成的那个bzImage文件所在之处;同时也要指定正确的Initrd地址。假设我们已将所有东西都放到了C盘根目录下名为CustomKernel的子文件夹里边的话,那么对应的键值应当类似于这样写法: ``` "C:\CustomKernel\bzImage" "C:\CustomKernel\initrd.img.gz" ``` 重启服务使改动生效便可体验到最新改进效果了! ---
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值