第一优先级:必做核心性能优化(立竿见影解决卡顿)
-
内存 & CPU 专属优化(适配编译开发)在 Windows 用户目录
C:\Users\你的用户名下创建.wslconfig文件,粘贴以下内容,保存后在 PowerShell 执行wsl --shutdown重启 WSL2 生效:[wsl2] # 内存配置:根据你的电脑调整,24GB内存设10G,16GB内存设6G,预留足够资源给Windows memory=7GB # CPU核心数,调用i5-12500全核心6,最大化编译速度 processors=6 # 缩小swap(虚拟内存,MB级速度极慢),优先用物理内存,减少硬盘IO卡顿 swap=1GB # 自动回收闲置内存,解决WSL2内存只涨不跌 pageReporting=true # 关闭GUI,嵌入式开发无需GUI,关闭后减少资源占用;用UI的场景app?QT设计? guiApplications=false # 关闭嵌套虚拟化(WSL2中开虚拟机),提升稳定性 nestedVirtualization=false # 内核参数:多个参数用空格分隔,注释单独一行 # 500=5秒,时间到后临时数据等待写入磁盘 # 1000=10秒,主动写入磁盘 kernelCommandLine=sysctl.vm.dirty_expire_centisecs=500 sysctl.vm.dirty_writeback_centisecs=1000 -
磁盘 IO 性能优化(编译大量小文件的核心瓶颈)
bash# WSL中确定路径 luo@Luo1469:~$ df -h Filesystem Size Used Avail Use% Mounted on none 3.4G 0 3.4G 0% /usr/lib/modules/6.6.87.2-microsoft-standard-WSL2 none 3.4G 4.0K 3.4G 1% /mnt/wsl drivers 931G 233G 698G 26% /usr/lib/wsl/drivers /dev/sdd 1007G 25G 931G 3% / none 3.4G 0 3.4G 0% /usr/lib/wsl/lib rootfs 3.4G 2.7M 3.4G 1% /init none 3.4G 496K 3.4G 1% /run none 3.4G 0 3.4G 0% /run/lock none 3.4G 0 3.4G 0% /run/shm C:\ 931G 233G 698G 26% /mnt/c D:\ 508G 287G 222G 57% /mnt/d E:\ 424G 253G 172G 60% /mnt/e tmpfs 694M 16K 694M 1% /run/user/1000-
硬性前提:必须把 WSL2 的
ext4.vhdx虚拟磁盘文件放在固态硬盘上,绝对不能放在机械硬盘; -
关闭 Windows Defender 实时扫描:打开 Windows 安全中心→病毒和威胁防护→管理设置→添加排除项,把
ext4.vhdx所在文件夹、wsl.exe进程加入排除列表,IO 性能直接提升 30% 以上;
-
定期收缩虚拟磁盘(WSL 官方最新、最简单、最安全的方法):
对比维度 普通模式(动态非稀疏 VHDX,WSL 默认) 稀疏模式(Sparse VHDX) 核心特性 动态扩展的虚拟磁盘,是微软最成熟的经典方案 给动态磁盘加了「自动空间回收」能力的进阶模式 C 盘空间占用逻辑 你在 WSL 里存多少文件,文件就占多大 C 盘;但删除文件后,占用的 C 盘空间不会自动释放,文件体积只涨不跌 你在 WSL 里存文件,占用 C 盘同步上涨;删除文件后,Windows 会自动把闲置的空间还给 C 盘,文件体积会自动缩小 闲置空间回收 完全手动:必须先关 WSL,再执行 Optimize-VHD命令,才能把多余空间收回来全自动:执行一次 fstrim后,系统后台自动回收,不用你再敲任何命令性能与稳定性 拉满:经过十几年验证,无兼容性问题,无数据风险,读写性能无损耗 优秀:日常使用感知不到性能差异,仅在极端高负载写入场景有极微弱损耗;微软标注了「潜在数据风险」(实际概率极低,只是官方免责) 兼容性 完美:支持所有 Windows 磁盘工具、Hyper-V 命令,不会出现命令报错 有限制:不支持 Optimize-VHD压缩命令,部分老版本 Windows / 磁盘工具不识别,会出现你之前遇到的报错维护成本 高:C 盘被占满了,就得手动执行一次压缩流程 极低:一次开启,终身自动回收,不用再管 bash# 在 Ubuntu/WSL 终端里执行 sudo fstrim -v / #/: 981.5 GiB (1053907185664 bytes) trimmed # 关闭 WSL(Windows PowerShell 里执行) wsl --shutdown # PS C:\Users\27969> WSL -l # 适用于 Linux 的 Windows 子系统分发: # Ubuntu-24.04 (默认值) # 先确保为普通模式 wsl --manage Ubuntu-24.04 --set-sparse true --allow-unsafe # 手动压缩,普通模式一般是默认方案,最稳定,兼容性最好 Optimize-VHD -Path "C:\Users\27969\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu24.04LTS_79rhkp1fndgsc\LocalState\ext4.vhdx" -Mode Full # 开启稀疏模式,懒人必备,自动清理 wsl --manage Ubuntu-24.04 --set-sparse true --allow-unsafe # 新版本可能可用这个 wsl --compact Ubuntu-24.04 # 正在进行转换,这可能需要几分钟时间。 # 操作成功完成。
-
-
编译场景专属优化(嵌入式开发必备)
-
更换清华国内源,解决更新、安装软件卡顿:
# 手动替换 sudo vim /etc/apt/sources.list # 或者 sudo nano /etc/apt/sources.list # 一键替换 sudo sed -i 's/archive.ubuntu.com/mirrors.tuna.tsinghua.edu.cn/g' /etc/apt/sources.list sudo sed -i 's/security.ubuntu.com/mirrors.tuna.tsinghua.edu.cn/g' /etc/apt/sources.list sudo apt update && sudo apt upgrade -y # 换了也就300k左右,感觉一般 -
一键安装嵌入式开发全量工具链:
sudo apt install build-essential gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf gdb-multiarch openocd git cmake ninja-build -y -
编译时启用多核加速:
make -j$(nproc),自动调用所有 CPU 核心,编译速度提升 3-5 倍。
-
第二优先级:网络优化(解决 SSH、git 拉取、开发板调试卡顿)
-
固定 WSL2 IP 地址,避免每次重启 IP 变化,方便 SSH 连接、开发板调试;
-
配置 git 国内镜像,解决 github 拉取代码慢:
git config --global url."https://ghproxy.com/https://github.com".insteadOf "https://github.com" -
关闭 IPv6(无需求则关),编辑 Ubuntu 内
/etc/gai.conf,(sudo vim /etc/gai.conf)
去掉precedence ::ffff:0:0/96 100的注释,解决网络解析卡顿。(去掉即优先使用IPv4)
以下感觉至少短期不需要
第三优先级:安全配置加固(开发环境必备,避免权限泄露、恶意代码风险)
- 基础权限加固
-
禁止 root 用户 SSH 登录,仅给普通用户开放 sudo 权限:
# 创建普通用户(若未创建) sudo adduser 你的用户名 sudo usermod -aG sudo 你的用户名 # 编辑SSH配置 sudo nano /etc/ssh/sshd_config # 将PermitRootLogin yes改为PermitRootLogin no,保存退出 sudo systemctl restart sshd -
配置 sudo 免密(开发便捷 + 安全):执行
sudo visudo,在末尾添加你的用户名 ALL=(ALL) NOPASSWD: ALL,保存退出。
-
- 系统安全防护
-
安装 ufw 防火墙,仅开放必要端口:
sudo apt install ufw -y sudo ufw default deny incoming sudo ufw default allow outgoing sudo ufw allow 22/tcp # 仅开放SSH端口,按需添加其他开发端口 sudo ufw enable -
定期更新系统修复漏洞:每周执行
sudo apt update && sudo apt upgrade -y; -
禁用不必要的开机服务,减少攻击面,比如
sudo systemctl disable --now telnetd。
-
- 开发环境专属安全
- 用 SSH 密钥替代密码登录服务器、git 平台,生成命令:
ssh-keygen -t ed25519,私钥设置权限chmod 600 ~/.ssh/id_ed25519; - 第三方开源代码单独存放,禁止在 root 权限下直接运行未知代码;
- 定期备份开发环境:PowerShell 执行
wsl --export Ubuntu 备份路径\Ubuntu2404_Backup.tar,避免系统崩溃丢失文件。
- 用 SSH 密钥替代密码登录服务器、git 平台,生成命令:
- 跨系统安全加固
- 无需求则禁用 WSL2 运行 Windows 程序:在
.wslconfig中添加interop.enabled=false,避免恶意代码跨系统执行; - 限制 Windows 文件访问权限:在
.wslconfig中添加options=metadata,umask=0077,收紧跨系统文件权限。
- 无需求则禁用 WSL2 运行 Windows 程序:在