简介
编译wsl
的内核,支持usbstorage
相关驱动。
预备工作
sudo apt install build-essential flex bison libssl-dev libelf-dev libncurses-dev autoconf libudev-dev libtool bc dwarves
下载代码
下载wsl
代码,对准自己的版本,通过uname -r
查看
https://github.com/microsoft/WSL2-Linux-Kernel
这里我选择5.15
的分支
因为wsl
直接clone
很慢,所以直接把zip
包下载下来,放到wsl
里面,输入命令解压
unzip WSL2-Linux-Kernel-linux-msft-wsl-5.15.y.zip
配置内核
make menuconfig KCONFIG_CONFIG=Microsoft/config-wsl
勾选CONFIG_USB_STORAGE
勾选CONFIG_USB_MASS_STORAGE
还有其他的SCSI
协议支持的选项,这里就不列举了,可以参考以前的文章
为了防止后面编译的时候出现load BTF xxx
之类的错误,内核还要把CONFIG_DEBUG_INFO_BTF
从y
改为n
最后保存为Microsoft/config-wsl
再复制过来cp Microsoft/config-wsl .config
编译
输入命令
make -j$(nproc) bzImage KCONFIG_CONFIG=Microsoft/config-wsl
编译成功
最终成果物在arch/x86/boot
目录下,也即bzImage
文件
wsl,启动
我把编译的bzImage
文件放在D:\WSL
然后在 Windows
的用户目录(默认是C:\Users\{username}
)下创建一个名为.wslconfig
的文件,输入下面的内容并保存。注意第二行的路径需要使用两个反斜杠,代替路径中的单个反斜杠。
[wsl2]
kernel=D:\\WSL\\bzImage
我的.wslconfig
文件如下
最后在powershell
中输入wsl --shutdown
关闭wsl
,然后再重新启动wsl
,此时wsl
就已经使用我们自己编译的内核启动了。
启动后通过cat /proc/version
可以确认是否用了我们编译的新内核
其他
原本老的内核镜像是放在这个路径的,命名是kernel
C:\Windows\System32\lxss\tools
查看内核是否支持某个CONFIG
选项,可以通过如下方式来查看
zcat /proc/config.gz | grep -w CONFIG_USB_STORAGE
参考链接
FEATURED TAGS
Ubuntu
markdown
stm32
OSDK
飞控
串口
Jscope
C
C++
bin
J-Flash
字符串
指针数组
malloc
vscode
svg
png
github
python
CMake
CMakeLists
Linux
拷贝构造函数
GIF
录屏
docker
操作系统
make
Makefile
文件操作
DSP
CCS
SQL
MySQL
shell
bochs
计算机网络
win10
SMTP
Socket
iOS
uxplay
投屏
证书错误
apt
nodesource
ELF
Typora
图床
fossil
sql
git
SecureCRT
windows
cygwin
blog
alsa
alsa-utils
alsa-lib
音频
USB
链接文件
内存
mmap
tcpdump
交叉编译
网络
防火墙
crontab
bond
Linux性能
udev
linux
pcie
wsl2
MMIO
wsl
qemu
raspi4
gdb
ssh
tun
tap
ifconfig
打印
gmac
phy
vim
组播
rock3a
win11
usb
sd
ubuntu
iptables
netfilter
wifi
veth
ipv6
wireshark
radvd
dhcpv6
dhcpv4
网络命名空间
br虚拟网卡
NDP
emmc
存储
raspi4b
baremental
jtag
buildroot
rootfs
ext4
调试
uboot
dropbear
raspi
ebpf
uart
baremetal
kernel
bringup
libbpf