2、开发环境总览:Linux vs Windows选择、虚拟机搭建(VirtualBox/VMware)、WSL2配置

说实话,每次带新人入行嵌入式,第一个绕不开的问题就是:到底用Windows还是Linux?

我见过不少新手,一上来就装双系统,结果折腾两天连驱动都没搞定。也见过老手,用Windows + 虚拟机一干就是十年。嗯,这里没有标准答案,但我会把这几条路都给你讲透。

2.1 Linux vs Windows:别纠结,先看需求

先说说我的个人习惯。我平时主力机是Windows,但所有编译、调试、交叉编译都在Linux虚拟机里跑。为什么?因为嵌入式开发的底层工具链,说白了就是Linux的天下。

你想想看,ARM的交叉编译器、Buildroot、Yocto、OpenOCD、GDB……这些东西在Windows上要么没有,要么装起来让你怀疑人生。而在Linux里,一条apt install就搞定了。

但Windows也不是一无是处。比如你写文档、画PCB、用Keil/IAR这些商业IDE,Windows确实方便。我有个项目,客户非要我用Keil调STM32,那没办法,Windows必须留着。

核心结论:

  • Linux:编译、调试、交叉编译、服务器部署 —— 这是你的主战场
  • Windows:文档、PCB设计、部分商业IDE —— 这是你的辅助工具
  • 别选双系统:切换麻烦,容易崩,我见过太多人把引导搞坏重装系统的

我的建议:Windows做宿主,Linux跑虚拟机或WSL2。这样你既能用Windows的生态,又能享受Linux的工具链。

2.2 虚拟机搭建:VirtualBox vs VMware

虚拟机这东西,说白了就是在你的Windows里再跑一个完整的Linux系统。我刚开始做嵌入式时,用的就是VirtualBox,免费、轻量、够用。

后来有次项目需要USB透传调试一个FPGA,VirtualBox死活认不出那个USB设备。我折腾了一下午,最后换了VMware Workstation,一次成功。嗯,这里有个坑:如果你需要频繁操作USB设备、串口、JTAG调试器,VMware的兼容性确实更好。

2.2.1 VirtualBox 快速搭建

我个人习惯用Ubuntu 20.04 LTS,稳定、社区活跃、遇到问题好搜答案。步骤如下:

  1. 下载VirtualBox安装包,一路下一步
  2. 下载Ubuntu 20.04 LTS的ISO镜像
  3. 新建虚拟机:内存给4GB以上,硬盘给40GB以上(动态分配)
  4. 启动虚拟机,挂载ISO,安装系统
  5. 安装增强功能(Guest Additions),不然屏幕分辨率不对

我曾经踩过的坑:虚拟机硬盘选了固定大小,结果后来想扩容,折腾半天。建议选动态分配,省心。

2.2.2 VMware Workstation 配置要点

如果你预算允许,VMware Workstation Pro确实更稳。我有个同事用它跑Yocto编译,连续编译8小时没崩过。

关键配置:

  • 处理器:至少2核,建议4核
  • 内存:8GB起步,16GB不嫌多
  • 网络:选NAT模式,方便上网;如果需要局域网访问,改桥接模式
  • USB控制器:选USB 3.0,兼容性更好

小技巧:在VMware里,给虚拟机分配CPU核心数时,别超过物理机核心数的一半。否则你的Windows会卡成PPT。

2.3 WSL2配置:轻量级Linux体验

WSL2是微软这几年做的最良心的事。它不像虚拟机那样需要单独分配内存和硬盘,而是直接和Windows共享内核。说白了,就是Windows里原生跑了一个Linux子系统。

我最近两年,大部分开发工作都迁移到了WSL2上。编译速度比虚拟机快,而且可以直接用Windows的VS Code编辑代码,终端里跑Linux命令,体验非常丝滑。

2.3.1 安装WSL2

前提条件:Windows 10 版本2004及以上,或者Windows 11。

# 以管理员身份打开PowerShell,执行:
wsl --install

# 安装完成后,重启电脑
# 设置WSL2为默认版本
wsl --set-default-version 2

# 查看已安装的Linux发行版
wsl -l -v

默认安装的是Ubuntu。你也可以从Microsoft Store里装其他发行版,比如Debian、Kali Linux。

2.3.2 WSL2的配置优化

安装完只是第一步。我建议你做几件事:

  1. 限制内存使用:WSL2默认会吃掉你一半的物理内存。在用户目录下创建.wslconfig文件:
[wsl2]
memory=4GB
processors=2
localhostForwarding=true
  1. 设置默认用户:避免每次都要输密码
  2. 安装必要的工具链:
sudo apt update
sudo apt install build-essential git cmake gcc-arm-none-eabi gdb-multiarch

注意:WSL2的网络模式是NAT,如果你需要调试开发板上的网络服务,记得配置端口转发。我曾经在这上面卡了半小时,后来发现是WSL2的IP和Windows不在同一个网段。

2.4 三种方案对比:一张表说清楚

特性 VirtualBox VMware Workstation WSL2
价格 免费 付费(约2000元) 免费
性能 中等 高 高(接近原生)
USB透传 一般 优秀 不支持(需USBIP)
GUI支持 完整桌面 完整桌面 仅命令行(可配X11)
磁盘占用 大(独立虚拟磁盘) 大 小(共享Windows文件系统)
适合场景 学习、轻量开发 专业开发、USB调试 日常开发、脚本、编译

2.5 我的选择建议

如果你问我个人怎么选,我会说:

  • 学生或刚入门:WSL2 + VS Code,零成本、上手快
  • 需要调试硬件(JTAG、串口):VMware + Ubuntu,稳
  • 只是学Linux命令:VirtualBox就够了,免费嘛

我有个项目,需要在Windows上跑Keil,同时用Linux编译一个RTOS。我的方案是:Windows + WSL2 + VMware(备用)。平时用WSL2,遇到USB调试就切到VMware。嗯,这套组合我用了两年,没出过问题。

一句话总结:别在环境搭建上浪费太多时间。选一个方案,用起来,把精力留给真正的嵌入式开发。

嵌入式开发环境选择流程图 你的开发需求是什么? 需要USB/串口/JTAG调试? 是 VMware Workstation USB透传稳定,兼容性好 否 WSL2 轻量、快速、与Windows无缝集成 学生/入门?→ VirtualBox(免费) 注:三种方案可共存,根据项目需求灵活切换

好了,环境搭建的思路就这些。记住,工具是为你服务的,别被工具绑架。选一个你最顺手的,开始写代码吧。

可可精品资料库