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, 内核定制, 内核模块, 内核编译, 安全资源, 客户端加密, 客户端加密, 应用安全, 开发环境, 开源项目, 微软, 操作系统, 系统底层, 系统集成, 网络安全监控, 虚拟化, 身份验证强制, 驱动开发