2、开发环境搭建:虚拟机安装Linux、配置SSH远程连接、安装Python3和Shell环境
说实话,嵌入式开发的第一步往往不是写代码,而是搭环境。我见过太多新手卡在这一步,兴致勃勃想学,结果被环境折腾到怀疑人生。今天咱们就把这事一次性搞定。
2.1 为什么非要用虚拟机?
你可能会问:我直接在Windows上写代码不行吗?嗯,理论上可以,但实际开发中你会遇到一堆麻烦。比如交叉编译工具链、文件权限、路径分隔符……这些在Windows上处理起来特别别扭。
我个人习惯用虚拟机跑Linux。原因很简单:嵌入式开发的最终目标设备,绝大多数跑的都是Linux。你在虚拟机里开发,跟最终部署的环境几乎一致,省去很多移植的坑。
核心思路: 宿主机(Windows/macOS)跑IDE和文档,虚拟机(Linux)跑编译和调试。各司其职,互不干扰。
2.2 虚拟机软件选哪个?
市面上主流的就两个:VMware Workstation 和 VirtualBox。我两个都用过,说说我的感受。
| 特性 | VMware Workstation | VirtualBox |
|---|---|---|
| 性能 | 更稳定,磁盘I/O快 | 稍弱,但够用 |
| 价格 | 收费(有试用版) | 免费开源 |
| 快照功能 | 支持,且恢复速度快 | 支持,但偶尔会出问题 |
| 3D加速 | 支持较好 | 一般 |
| 社区资源 | 企业用户多 | 个人用户多,教程丰富 |
我个人建议:初学者用VirtualBox就够了。免费、轻量、教程多。等你真正做项目了,再考虑VMware。
2.3 安装Linux虚拟机(以Ubuntu为例)
咱们选Ubuntu 22.04 LTS。为什么?因为它的软件源最全,遇到问题百度一下基本都有答案。
步骤其实很简单,我快速过一遍:
- 下载ISO镜像:去Ubuntu官网下载桌面版ISO文件。
- 新建虚拟机:VirtualBox里点「新建」,名称填「Ubuntu_Embedded」,类型选Linux,版本选Ubuntu 64-bit。
- 分配资源:内存给4GB(至少2GB),硬盘给20GB(动态分配)。
- 挂载ISO:在存储设置里,把ISO文件挂载到光驱。
- 启动安装:一路默认,设置用户名和密码。我习惯用「developer」作为用户名,简洁。
小技巧: 安装时选「最小安装」,省掉LibreOffice等用不上的软件。嵌入式开发不需要这些花里胡哨的东西。
2.4 配置SSH远程连接
为什么要配SSH?因为后面咱们要用VS Code远程连到虚拟机里写代码。你想想看,在Windows上写代码,在Linux里编译,多舒服。
配置SSH分三步:
2.4.1 虚拟机里安装SSH服务
sudo apt update
sudo apt install openssh-server -y
sudo systemctl enable ssh
sudo systemctl start ssh
装完后检查一下:
sudo systemctl status ssh
看到「active (running)」就对了。
2.4.2 获取虚拟机IP地址
ip addr show
找到类似 192.168.x.x 的地址。我遇到过有人把回环地址127.0.0.1当成IP,折腾半天连不上……嗯,这里要注意。
2.4.3 宿主机连接测试
Windows上打开PowerShell或CMD:
ssh developer@192.168.x.x
输入密码,如果看到Linux的命令行,恭喜你,SSH通了。
避坑指南: 我曾经在配置SSH时卡了整整一下午,最后发现是Windows防火墙把22端口拦了。如果你连不上,先检查防火墙,再检查虚拟机网络模式是不是「桥接」或「NAT」。
2.5 安装Python3环境
Ubuntu 22.04默认自带Python3,但版本可能不是最新的。咱们确认一下:
python3 --version
如果版本低于3.10,建议升级。我个人习惯用pyenv管理Python版本,这样切换项目时不会乱。
2.5.1 安装pyenv
curl https://pyenv.run | bash
然后配置环境变量,把下面三行加到 ~/.bashrc 里:
export PATH="$HOME/.pyenv/bin:$PATH"
eval "$(pyenv init --path)"
eval "$(pyenv virtualenv-init -)"
重载配置:
source ~/.bashrc
2.5.2 安装指定Python版本
pyenv install 3.11.5
pyenv global 3.11.5
验证一下:
python3 --version
# 输出:Python 3.11.5
为什么用pyenv? 我在项目中遇到过这种情况:项目A需要Python 3.8,项目B需要Python 3.11。如果没有版本管理工具,你会疯掉的。pyenv就是干这个的。
2.6 安装Shell环境
Ubuntu默认的Shell是Bash,这没问题。但做嵌入式开发,我强烈建议你换成Zsh + Oh My Zsh。为什么?因为它的自动补全和主题太香了。
2.6.1 安装Zsh
sudo apt install zsh -y
chsh -s $(which zsh)
退出重新登录,Shell就变成Zsh了。
2.6.2 安装Oh My Zsh
sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
装完后,你会看到命令行变得漂亮了。我个人喜欢用「agnoster」主题:
# 编辑 ~/.zshrc
ZSH_THEME="agnoster"
重载配置:
source ~/.zshrc
2.6.3 安装常用插件
这两个插件是嵌入式开发的利器:
# 语法高亮
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
# 自动建议
git clone https://github.com/zsh-users/zsh-autosuggestions.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
然后在 ~/.zshrc 的plugins里加上:
plugins=(git zsh-syntax-highlighting zsh-autosuggestions)
效果: 你输入命令时,它会自动提示历史命令。按右箭头就能补全,效率提升不止一倍。
2.7 验证环境
最后,咱们写个简单的脚本验证一下:
#!/bin/bash
# test_env.sh
echo "Shell: $SHELL"
echo "Python: $(python3 --version)"
echo "SSH: $(ssh -V 2>&1)"
运行:
chmod +x test_env.sh
./test_env.sh
如果一切正常,你会看到类似这样的输出:
Shell: /usr/bin/zsh
Python: Python 3.11.5
SSH: OpenSSH_8.9p1 Ubuntu-3
到这一步,你的嵌入式开发环境就搭好了。后面咱们就可以专心写代码了。
我的建议: 环境搭好后,拍个快照。万一后面搞坏了,一键恢复,不用重装。这个习惯帮我省了不知道多少时间。