前言

虽然win10 2004版本还没有正式发布,但是WSL2早就能在Insider版本里面体验了。不得不说,比起WSL是真的快了好多。不过Hyper-V的那德行大家都懂,不兼容其他的VM的bug都不知道被骂了多少年了,但是看在原生Docker的份上还是忍忍继续使用吧。

为什么更新内核

当然是为了更安全的VPN(误),更好的性能和安全性。

微软说了,从2004版本开始,可以从Windows Update接收Linux的内核更新,但是最近去看了下微软的仓库,好像很久没更新过的样子了,官方上最新的内核还停留在了4.19.84,而我实体机上安装的Manjaro都已经到5.4了。

因此手动指定和更新内核已经是必然了。

如何更新

首先你需要先自己编译一个内核

至于如何编译,网上一大把,就不展开讲了。不过WSL2虽然是原生的Linux内核,微软还是有一定的修改的,所以我们需要clone官方的仓库

官方地址:https://github.com/microsoft/WSL2-Linux-Kernel
一个大佬的仓库:https://github.com/nathanchance/WSL2-Linux-Kernel

先安装必要依赖和工具
然后下载源码

git clone https://github.com/microsoft/WSL2-Linux-Kernel
cd WSL2-Linux-Kernel

使用Clang编译

make -j$(nproc) -s CC=clang KCONFIG_CONFIG=Microsoft/config-wsl LD=ld.lld O=out distclean olddefconfig all

使用GCC编译

make -j$(nproc) -s KCONFIG_CONFIG=Microsoft/config-wsl O=out distclean olddefconfig all

记住你的内核存放的位置,接下来要用

自定义内核

WSL2开始微软允许自定义WSL2的运行参数了,因为WSL2是基于Hyper-V的,然而Hyper-V是不完整安装,我们找不到管理界面的。
因此WSL2可以定义运行参数和内核什么的

配置文件位于用户根目录下。e.g. C:\Users\rayfalling\.wslconfig
我的配置文件是:

cat /mnt/c/Users/rayfalling/.wslconfig
[wsl2]
kernel = C:\\Users\\rayfalling\\Linux-kernel\\kernel

这里的Linux-kernel是我们自己创建的文件夹kernel就是内核

所以编译好以后需要执行

cp out/arch/x86/boot/bzImage /mnt/c/Users/rayfalling/Linux-kernel/kernel

如果已经有自定义内核了,复制的时候会有权限问题,必须在关机的时候替换

接下来 wsl –shutdown关机重启,好了,享受新内核吧。

关于WSL2配置文件

.wslconfig文件不止这么点配置,下面列出了有些配置节

[wsl2]
kernel=              # An absolute Windows path to a custom Linux kernel.
memory=              # How much memory to assign to the WSL2 VM.
processors=        # How many processors to assign to the WSL2 VM.
swap=                # How much swap space to add to the WSL2 VM. 0 for no swap file.
swapFile=            # An absolute Windows path to the swap vhd.
localhostForwarding= # Boolean specifying if ports bound to wildcard or localhost in the WSL2 VM should be connectable from the host via localhost:port (default true).
说点什么
支持Markdown语法
好耶,沙发还空着ヾ(≧▽≦*)o
Loading...