安装Linux虚拟机或WSL:为什么推荐Linux环境

说实话,我第一次接触嵌入式开发时,也问过同样的问题:为什么非要用Linux? Windows用得好好的啊。

后来踩了不少坑才明白——NuttX的构建工具链、依赖库、编译脚本,几乎都是为Linux设计的。你在Windows上折腾半天,可能只是环境问题就耗掉一整天。我有个同事,光在Windows上配NuttX环境就花了三天,最后换到Linux,半小时搞定。

说白了,Linux是嵌入式开发的“标准战场”。大部分开源RTOS、交叉编译工具链、调试工具,原生支持Linux。你用Windows,反而要绕很多弯路。

Linux vs Windows:核心差异

对比项 Linux Windows
包管理 apt一键安装依赖 手动下载、配置路径
命令行 原生bash,强大高效 cmd/PowerShell,兼容性差
编译工具链 gcc/arm-none-eabi直接可用 需要额外配置MinGW或Cygwin
文件系统 大小写敏感,符合POSIX标准 大小写不敏感,容易出问题
社区支持 嵌入式开发资料几乎都是Linux 相对较少

你看,差距很明显。我个人习惯用Ubuntu 22.04 LTS,稳定、软件源丰富,社区活跃。遇到问题,搜一下基本都有答案。

安装VirtualBox或VMware

如果你不想完全切换系统,虚拟机是个好选择。我推荐VirtualBox,免费、轻量、够用。VMware Workstation功能更强,但收费。

VirtualBox安装步骤

  1. 去官网下载VirtualBox(Windows版)
  2. 双击安装,一路默认选项
  3. 安装完成后,下载Ubuntu 22.04 LTS的ISO镜像
  4. 新建虚拟机:分配2GB以上内存、20GB以上硬盘
  5. 启动虚拟机,选择ISO文件,开始安装
小技巧: 我给虚拟机分配了4GB内存和2个CPU核心,编译NuttX时明显快很多。如果你电脑配置允许,尽量多给点资源。

VMware Workstation(可选)

如果你需要更好的3D加速、USB设备直通,VMware是更好的选择。不过对于NuttX开发,VirtualBox完全够用。我个人觉得没必要花那个钱。

安装Ubuntu 22.04 LTS

Ubuntu 22.04 LTS是目前最稳定的长期支持版本。我一直在用,没出过什么大问题。

安装要点

  • 语言选择: 建议选英文。中文环境下,终端有时会出现乱码或路径问题。
  • 分区: 新手直接选“擦除磁盘并安装”就行。如果你熟悉分区,可以单独分一个/home。
  • 用户名: 不要用中文,避免后续编译路径出问题。
  • 更新: 安装时勾选“安装第三方软件”和“下载更新”。
注意: 我曾经因为用户名用了中文,结果编译NuttX时,工具链死活找不到路径。折腾了两小时才发现是中文空格的问题。嗯,血的教训。

安装后的基本配置

# 更新软件源
sudo apt update && sudo apt upgrade -y

# 安装常用开发工具
sudo apt install build-essential git vim curl wget -y

# 安装NuttX依赖
sudo apt install flex bison libncurses-dev libelf-dev -y

这几行命令,基本就把环境搭好了。你想想看,在Windows上要配这些,得下载多少个安装包?

配置WSL2(Windows用户)

如果你不想装虚拟机,又想在Windows上用Linux,WSL2是最佳选择。它比虚拟机更轻量,启动快,资源占用少。

WSL2安装步骤

  1. 启用WSL功能: 以管理员身份打开PowerShell,运行:
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
  1. 重启电脑
  2. 设置WSL2为默认版本:
wsl --set-default-version 2
  1. 安装Ubuntu 22.04: 在Microsoft Store搜索“Ubuntu 22.04 LTS”,点击安装
  2. 启动Ubuntu: 第一次启动会要求创建用户名和密码
避坑指南: 我曾经在WSL1上编译NuttX,结果因为文件系统性能问题,编译速度慢得离谱。换成WSL2后,速度提升了3倍以上。所以一定要用WSL2,别用WSL1。

WSL2与Windows文件互访

WSL2的Linux文件系统在:\\wsl$\Ubuntu-22.04\home\你的用户名\

Windows的C盘挂载在:/mnt/c/

重要: 不要在Windows文件系统(/mnt/c/)下直接编译NuttX!WSL2跨文件系统访问性能很差。我一开始图方便,把代码放在D盘,结果编译一次要10分钟。后来移到Linux原生文件系统,只要2分钟。差距就是这么大。

WSL2的图形界面(可选)

如果你需要图形界面,可以安装VcXsrv或WSLg。不过对于NuttX开发,命令行就够了。我个人很少用图形界面,除非要调试GUI程序。

总结一下

三种方式,各有优劣:

  • 虚拟机: 隔离性好,适合新手,资源占用高
  • WSL2: 轻量、启动快,适合Windows重度用户
  • 双系统: 性能最好,但切换麻烦

我个人推荐:Windows用户用WSL2,Mac用户用虚拟机或Docker。如果你有Linux基础,直接装双系统也行。

好了,环境搭好之后,下一章我们就开始正式安装NuttX工具链。到时候你会发现,前面这些准备工作,真的值得。