microsoft/WSL2-Linux-Kernel
GitHub: microsoft/WSL2-Linux-Kernel
微软官方维护的 WSL2 Linux 内核源码,支持自定义编译、配置调整和模块扩展。
Stars: 10143 | Forks: 1372
# 介绍
[WSL2-Linux-Kernel][wsl2-kernel] 仓库包含 [WSL2][about-wsl2] 内核的源代码和配置文件。
# 报告 Bug
如果您发现与 WSL 或 WSL2 内核相关的问题,请在 [WSL GitHub 项目][wsl-issue] 上报告。无法在 [WSL2-Linux-Kernel][wsl2-kernel] 项目上报告问题。
如果您能够确定该 Bug 存在于上游 Linux 内核中,您可能希望直接与上游开发人员合作。请注意,报告 [普通 Bug][normal-bug] 和 [安全 Bug][security-bug] 有不同的流程。
# 功能请求
是否有您希望看到的缺失功能?请在 [WSL GitHub 项目][wsl-issue] 上提出请求。
如果您有能力并有兴趣为您的功能请求贡献内核代码,我们鼓励您[向上游提交更改][submit-patch]。
# 构建说明
以下是使用 Ubuntu 发行版和 bash 构建 x86_64 WSL2 内核的说明:
1. 安装构建依赖项:
`$ sudo apt install build-essential flex bison dwarves libssl-dev libelf-dev cpio qemu-utils`
2. 修改 WSL2 内核配置(可选):
`$ make menuconfig KCONFIG_CONFIG=Microsoft/config-wsl`
3. 使用 WSL2 内核配置构建内核,并将模块放在当前工作目录下的 `modules` 文件夹中:
`$ make KCONFIG_CONFIG=Microsoft/config-wsl && make INSTALL_MOD_PATH="$PWD/modules" modules_install`
您可能希望在第一个 `make` 命令中包含 `-j$(nproc)` 以进行并行构建。
然后,您可以使用提供的脚本创建一个包含模块的 VHDX:
`$ sudo ./Microsoft/scripts/gen_modules_vhdx.sh "$PWD/modules" $(make -s kernelrelease) modules.vhdx`
为了节省空间,您现在可以删除编译产物:
`$ make clean && rm -r "$PWD/modules"`
如果您愿意,也可以手动构建模块 VHDX,如下所示:
1. 计算模块大小(加上 256MiB 的预留空间):
`modules_size=$(du -bs "$PWD/modules" | awk '{print $1;}'); modules_size=$((modules_size + (256 * (1<<20))));`
2. 为模块创建一个空白镜像文件:
`dd if=/dev/zero of="$PWD/modules.img" bs=1024 count=$((modules_size / 1024))`
3. 设置文件系统并挂载 img 文件:
`lo_dev=$(sudo losetup --find --show "$PWD/modules.img") && sudo mkfs -t ext4 "$lo_dev" && mkdir "$PWD/modules_img" && sudo mount "$lo_dev" "$PWD/modules_img"`
4. 复制模块,完成后卸载 img:
`sudo cp -r "$PWD/modules/lib/modules/$(make -s kernelrelease)"/* "$PWD/modules_img" && sudo umount "$PWD/modules_img"`
5. 将 img 转换为 VHDX:
`qemu-img convert -O vhdx "$PWD/modules.img" "$PWD/modules.vhdx"`
6. 清理:
`rm modules.img # 可选删除 $PWD/modules 目录和现在的空目录 $PWD_modules_img`
# 安装说明
有关使用自定义构建内核的信息,请参阅 [.wslconfig 配置文件][install-inst] 的文档。
标签:DNS解析, Hyper-V, Kernel, Linux内核, VHDX, Windows 10, Windows 11, Windows子系统, WSL2, x86_64, 内核定制, 内核模块, 内核编译, 安全资源, 客户端加密, 客户端加密, 应用安全, 开发环境, 开源项目, 微软, 操作系统, 系统底层, 系统集成, 网络安全监控, 虚拟化, 身份验证强制, 驱动开发