WSL使用问题记录
目录
记录一下使用
wsl2
的时候遇到的问题和解决方案。
1 更新内核头文件和支持编译ko
复现CVE
的时候发现io_uring.h
缺失一些宏定义。
参考WSL升级到最新版本Linux内核headers的方法 - 知乎 (zhihu.com)。不要在/mnt
目录下编译。
步骤如下:
- 使用
uname -r
查看当前内核的版本 - 到Releases · microsoft/WSL2-Linux-Kernel (github.com)下载对应版本的源码
- 解压缩源码
tar -zxvf xxxx.tar.gz
- 进入源码文件夹,拷贝配置文件
cp Microsoft/config-wsl .config
- 安装所需依赖
sudo apt install libelf-dev build-essential pkg-config bison build-essential flex libssl-dev libelf-dev bc dwarves
- 执行命令
make oldconfig && make prepare && make scripts && sudo make modules && sudo make modules_install && make headers_install && sudo cp -r ./usr/include/* /usr/include
之后编译ko
更改一下include path
即可。
如果想编译任意版本的linux ko
,需要四步:
- 下载对应版本源码
- 编译
bzImage
make modules
- 更改
Makefile
中的表示kernel include dir
的这个变量即可
2 wsl中的runlevel问题
安装一些软件包的时候,会报出一些关于runlevel
的错误,这个时候:
|
|
3 WSL2中安装kali,使用apt install报错
如图所示解决即可:
4 WSL 中挂载windows磁盘的权限问题
有时候需要控制/mnt/x/
的权限,需要在对应的操作系统中,新建一个文件/etc/wsl.conf
。输入以下内容:
|
|
之后就能看到宿主机磁盘文件的权限,属主变成了1000
的用户。
主要是为了解决直接从 linux
系统中访问 windows
磁盘文件的权限问题。
5 清空 wsl 的磁盘数据
不管使用的是 wsl
的什么操作系统,或者使用 backend
是 wsl
的 docker desktop
,都会生成一个名为 ext4.vhdx
的文件,这个文件随着系统的使用会越来越大,而且只会变大,不会变小。那么,有时候需要在适当的时候压缩一下这个文件,释放出空间。
其实很简单,使用这个命令即可:Optimize-VHD (Hyper-V) | Microsoft Learn
压缩之前,可以先执行一下 docker system prune
然后:wsl.exe --shutdown
然后在 powershell
中执行 Optimize-VHD -Path "YourPath\ext4.vhdx" -Mode Full
修改一下对应的文件路径即可。
之后,就可以完美释放 wsl
使用过程中占用的磁盘空间。
Buy me a coffee~
支付宝
微信