提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- 前言
- 一、有什么变化
- 二、下载6.6内核
- 三、开始编译
- 1.安装环境
- 2.开始编译
- 四、使用
- 1.杀死虚拟机
- 2.防止内核文件
- 3.修改配置文件
- 总结
前言
最近出了一件不大不小的事,WSL2的内核又更新了,上次编译还是在5.10版本时,当时为了解决不能使用USB设备的问题,想想已经是好几年前的事情了。最近微软发布了6.6内核,今天就带着不太会的小伙伴体验下6.6的内核。
一、有什么变化
First WSL2 kernel release updated to v6.6 from v5.15
Release rolling-lts/wsl/6.6.36.3
Update to stable kernel version v6.6.36
New x86 and ARM64 configs including loadable modules
dxgkrnl: Do not print error messages when virtual GPU is not present
Fewer out of tree patches. Sets of patches now included from upstream:
page reporting commits (feature/page-reporting/5.15)
vpci commits (feature/vpci/5.15)
memory reclaim commits (feature/memory-reclaim/5.15)
vsock commits (fix/vsock/5.15)
Release Notes Update - July 3rd, 2024: Kernel Module Support in WSL2
We are very excited kernel module support is now available in WSL2! With this latest kernel update, a large set of loadable modules has been introduced, accompanied by an overall config file update. However, please be aware that when using a custom kernel, the default module support is disabled for now. If you’re using a custom kernel, we recommend you edit your kernel config file to build-in all of the modules that you need.
Thank you for your continued support!
kernel module support is now available in WSL2!,就是说5.15不支持module,从6.6开始正式支持。
二、下载6.6内核
我试了下还是不能通过update的方式直接升级6.6,想尝鲜的小伙伴可以自己编译,方法很简单。我也不整那些复杂的了,直接下在源代码就行了,巨硬已经给你打包好了。
6.6内核源代码zip包
三、开始编译
1.安装环境
建议使用Ubuntu-22.04系统,我就是这个系统,编译成功。
sudo apt install build-essential flex bison dwarves libssl-dev libelf-dev
2.开始编译
你可以配置自己需要的功能,使用下面的命令:
make menuconfig KCONFIG_CONFIG=Microsoft/config-wsl
make -j 6 KCONFIG_CONFIG=Microsoft/config-wsl
6是你希望使用的线程数,不加的话就是单线程编译,估摸得1-2小时,建议多线程。
你也可以用默认的配置:
make -j 6 KCONFIG_CONFIG=Microsoft/config-wsl
等待编译完成即可,成功之后build-in
的代码都在bzImage
这个文件里面,这个就是内核文件,一般放在arch/x86/boot/
目录下。
四、使用
1.杀死虚拟机
你先退掉所有的WSL2虚拟机,记得保存数据。
不需要保存数据用下面的命令:
wsl --shutdown
2.防止内核文件
将上面编译出来的bzImage
文件放在电脑的任何位置,切记不要放在WSL2虚拟机的文件系统中
,放Windows文件系统中就行了。
3.修改配置文件
新内核要想生效需要改下配置文件,默认的配置文件是不存在的,你需要自己创建一个。到你用户目录(C:\Users\<你的用户名>)
里新建一个文本文档把文件名和后缀都改成.wslconfig
,然后贴上我的配置:
# Settings apply across all Linux distros running on WSL 2
[wsl2]
# Limits VM memory to use no more than 4 GB, this can be set as whole numbers using GB or MB
#memory=4GB
# Sets the VM to use two virtual processors
#processors=4
# Specify a custom Linux kernel to use with your installed distros. The default kernel used can be found at https://github.com/microsoft/WSL2-Linux-Kernel
#kernel=C:\\temp\\myCustomKernel
kernel=E:\\Test\\Linux\\WSL2\\6.6\\bzImage
# Sets additional kernel parameters, in this case enabling older Linux base images such as Centos 6
#kernelCommandLine = vsyscall=emulate
# Sets amount of swap storage space to 8GB, default is 25% of available RAM
#swap=8GB
# Sets swapfile path location, default is %USERPROFILE%\AppData\Local\Temp\swap.vhdx
#swapfile=C:\\temp\\wsl-swap.vhdx
# Disable page reporting so WSL retains all allocated memory claimed from Windows and releases none back when free
pageReporting=true
#一个布尔值,用于在 WSL 中打开或关闭对 GUI 应用程序 (WSLg) 的支持。 仅适用于 Windows 11
guiApplications=true
#一个布尔值,用于在 WSL 2 发行版实例启动时打开显示 dmesg 内容的输出控制台窗口。 仅适用于 Windows 11。
#debugConsole=true
# Turn off default connection to bind WSL 2 localhost to Windows localhost
#一个布尔值,用于指定绑定到 WSL 2 VM 中的通配符或 localhost 的端口是否应可通过 localhost:port 从主机连接。
#localhostforwarding=true
# Disables nested virtualization
#用于打开或关闭嵌套虚拟化的布尔值,使其他嵌套 VM 能够在 WSL 2 中运行。 仅适用于 Windows 11。
#nestedVirtualization=false
#如果值为 mirrored,则会启用镜像网络模式。 默认或无法识别的字符串会生成 NAT 网络。
#networkingMode=mirrored
networkingMode=NAT
#如果设置为 true,则 Windows 防火墙规则以及特定于 Hyper-V 流量的规则可以筛选 WSL 网络流量。
firewall=false
#更改将 DNS 请求从 WSL 代理到 Windows 的方式
#dnsTunneling=true
#强制 WSL 使用 Windows 的 HTTP 代理信息
##autoProxy=true
注意上面的kernel=E:\\Test\\Linux\\WSL2\\6.6\\bzImage
就是6.6内核
的位置,改成你自己的就行了,之后不需要重启电脑
,直接打开虚拟机发行版
就行了。
注意:上面的所有参数都可以注释掉,WSL2有默认值,可以根据喜好设置。
总结
1、不难,甚至很简单,我每次都是一把成功