1 安装WSL2子系统
1.1 下载安装
进入windows Store,搜索Ubuntu,下载:
1.2 开启依赖
右键windows左下角->应用和功能->相关设置-程序和功能->启用或关闭windows功能。勾选适用于Linux的windows子系统和虚拟机平台(WSL2需要)选项:
也可以直接在powershell中输入如下两条指令开启:
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
1.3 启动WSL Ubuntu
wsl是windows控制Ubuntu镜像的工具。
1.3.1 查看版本为WSL2
安装完成后,启动Ubuntu,会提示创建用户。在powerShell中输入:
wsl -l --all -v
可以看到版本为wsl2。如果不是wsl2,请按照下面方式升级:
wsl --set-version Ubuntu-20.04 2
提示需要更新内核组件,我们这里直接下载linux内核包进行安装:
https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi
使WSL 2成为你的默认体系结构:
wsl --set-default-version 2
1.4 导出Ubuntu到D盘
默认会安装到c盘:C:\Users\robin.lee\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu_79rhkp1fndgsc
wsl --shutdown //关闭虚拟机
wsl --export Ubuntu-20.04 D:\wsl-ubuntu20.04.tar //导出打包到D:\wsl-ubuntu20.04.tar
wsl --unregister Ubuntu-20.04 //注销当前分发版
wsl --import Ubuntu-20.04 D:\wsl2-ubuntu20.04 D:\wsl-ubuntu20.04.tar --version 2 //重新导入并安装WSL2到指定目录
导出完成后,在相应磁盘路径下即可看到文件夹:
可以删除tar文件,也可保留,方便损坏后重新导入tar文件。
1.5 wsl2与windows相互访问
1.5.1 wsl2访问windows
直接在ubuntu中访问/mnt/下磁盘挂载目录即可:
1.5.2 windows访问wsl2
直接在资源管理器中输入\\wsl$
即可:
\\wsl.localhost\Ubuntu
为了方便,固定到快速访问。注意这是不能再透过/mnt目录访问自己,如c,d盘:
1.6 vhdx虚拟磁盘瘦身
由于WSL2使用虚拟硬盘(VHD)存储linux下的文件,随着Linux下文件越来越多,占用空间也会不断增长。但是,在Linux中减少文件占用,WSL却没有相应的自动减少硬盘空间的占用。如下可以看到vhdx虚拟磁盘文件很大。
1.6.1 diskpart
执行diskpart,会弹出一个cmd窗口:输入如下命令即可完成瘦身。
select vdisk file="D:\WSL\Ubuntu2004\ext4.vhdx"
attach vdisk readonly
compact vdisk
detach vdisk
1.7 连接USB设备
https://learn.microsoft.com/zh-cn/windows/wsl/connect-usb
1.8 美化终端
1.8.1 windows terminal
原生的Ubuntu窗口还是low了点,字体和字符编码支持得都不是很好。可以进入windows的应用商店下载windows terminal
:
启动后界面如下,可自定义配色和语言字体等个性化设置。
2 winnfsd-windows搭建nfs服务
2.1 下载运行winnfsd
下载windows nfs服务Release 2.4.0 · winnfsd/winnfsd · GitHub,直接运行,选择要导出的目录:
.\WinNFSd.exe D:\code\
Usage: WinNFSd.exe [-id <uid> <gid>] [-log on | off] [-pathFile <file>] [-addr <ip>] [export path] [alias path]
wsl子系统默认是通过虚拟网卡NAT模式转接到笔记本的网卡上的,所以wsl是可以上网的:
目前wsl只支持一张虚拟网卡,也就是说wsl系统要上网和要和板子通信两者只能取其一,但是wsl系统中可以随意访问windows文件系统,所以可以在windows上搭建NFS服务,然后直接在wsl系统中访问windows导出的共享文件夹,这样就能同步更改到板子上了。
比如我们把D:\code作为开发目录,windows和wls都能访问,又能挂载到板子上。
2.2 配置Windows网卡和开发板互通
windows电脑的WIFI网卡上网, 以太网卡作为局域网和板端互通。
配置网卡ip;(网络适配器中找到对应网口的以太网卡,配置静态ip和网关)
2.3 挂载windows目录到板子
mount -t nfs -o nolock 192.168.1.100:/D/code /mnt/nfs
这里挂载d盘的code
文件夹,注意D一定要大写。
这样D/code
就挂载到了板端。同样D/code
下可以在wsl下进行代码编辑编译浏览,编译好之后直接可以切到板端去运行测试。