解决 WSL 使用自构建内核模块时不能启动的问题

查阅 issue,是 user root dir 的权限问题。不过你也许很奇怪,我怎么会用 wsl?

好久没写 blog 了。

自构建内核

不在赘述,不加任何模块和补丁,按照官方的 instruction 很简单,无脑化进行。
https://github.com/microsoft/WSL2-Linux-Kernel/blob/linux-msft-wsl-6.18.y/README.md

这样可以在 wsl-kernel-package 更新前获取新内核。

我自己打了 linux-zen。

最终 kernel image vmlinux 与模块 vhdx modules.vhdx

安装

很容易,在.wslconfig下写就行

[wsl2]
networkingMode=Mirrored
kernel=C:\\Users\\zlicdt\\Downloads\\vmlinux
kernelModules=C:\\Users\\zlicdt\\Downloads\\modules.vhdx

[experimental]
hostAddressLoopback=true

之后会发现,wsl 不能启动:

如果你之前设置过用户目录的SMB,就知道这里绝对是文件权限问题,然而设置过SMB的目录不会存在这个问题,因为权限已经全给了

Wsl/Service/CreateInstance/CreateVm/HCS/E_ACCESSDENIED

这样如何解决呢?

Solution A

给权限。参考 https://github.com/microsoft/WSL/issues/40482

注意不要在pwsh跑,因为pwsh会给后面的括号解析成新object。使用cmd.

icacls modules.vhdx /grant *S-1-5-32-545:(RX)
icacls modules.vhdx /grant *S-1-15-2-1:(RX)
icacls modules.vhdx /grant *S-1-15-2-2:(RX)

Solution B

modules.vhdx 放到根目录C:\下。直接啥都有了。


解决 WSL 使用自构建内核模块时不能启动的问题
https://blog.zlicdt.top/2026/06/06/wsl-custom-kernel/
作者
zlicdt
发布于
2026年6月6日
许可协议