前言
虽然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).
本文地址: WSL2自定义/更新内核