使用 qemu-nbd 需要 nbd 内核模块,有趣的是 WSL2 没有提供, apt-cache search linux-headers-$(uname -r) 也是啥也没有,只好手动编译。
uname -r 找到自己的版本,去 https://github.com/microsoft/WSL2-Linux-Kernel 找 Release Tag
$ uname -r
5.10.16.3-microsoft-standard-WSL2依赖包:
$ sudo apt-get install build-essential bison libelf-dev libncurses-dev编译安装:
$ unzip WSL2-Linux-Kernel-linux-msft-wsl-5.10.16.3.zip
$ cd WSL2-Linux-Kernel-linux-msft-wsl-5.10.16.3
$ cp Microsoft/config-wsl .config
$ make menuconfig找到 Device Drivers 下的 Block devices 下的 Network block device support 选中为 built-in 。
$ make -j $(expr $(nproc) - 1)
……省略输出
ZOFFSET arch/x86/boot/zoffset.h
OBJCOPY arch/x86/boot/vmlinux.bin
AS arch/x86/boot/header.o
LD arch/x86/boot/setup.elf
OBJCOPY arch/x86/boot/setup.bin
BUILD arch/x86/boot/bzImage
Kernel: arch/x86/boot/bzImage is ready (#3)最后会生成一个 bzImage ,将其拷贝出来,假设放在 C:\Users\weilinfox\bzImage (其中 weilinfox 是假设的用户名)。
建立 C:\Users\weilinfox\.wslconfig ,加入(注意双反斜杠):
[wsl2]
kernel=C:\\Users\\weilinfox\\bzImage进入 powershell 运行:
wsl --shutdown重新启动 WSL2 即可。 ls /dev 应该就可以看到 nbd 设备了。
参考:https://unix.stackexchange.com/questions/594470/wsl-2-does-not-have-lib-modules
by SDUST weilinfox



































































































































