3、Linux开发机搭建:Ubuntu 20.04 LTS安装、虚拟机配置与SSH远程访问
做RMC固件开发,Linux环境是绕不开的坎。我见过不少新手在Windows上折腾半天,最后发现还是得回到Linux下编译。说白了,嵌入式开发的工具链、交叉编译器,大部分都是为Linux准备的。这一章,我就带你一步步把开发环境搭起来。
3.1 为什么选择Ubuntu 20.04 LTS?
你可能要问:Ubuntu版本那么多,为什么偏偏选20.04?
我个人习惯用LTS版本,也就是长期支持版。20.04 LTS的支持周期到2025年,企业级软件和工具链对它适配得最好。我在项目中遇到过用22.04编译某些老版本BSP时,依赖库版本冲突的问题,换成20.04就一切正常。说白了,稳定压倒一切。
另外,RMC固件开发常用的工具,比如GCC交叉编译器、Make、CMake、Python 3.8,在20.04的源里都能直接装,省心。
3.2 虚拟机方案:VMware vs VirtualBox
嗯,这里要分两种情况讨论。如果你电脑配置不错(16GB内存以上、SSD),用VMware Workstation Pro体验更好。如果只是临时用用或者预算有限,VirtualBox完全够用。
| 对比项 | VMware Workstation Pro | VirtualBox |
|---|---|---|
| 性能 | 优秀,3D加速好 | 良好,日常够用 |
| 稳定性 | 非常稳定 | 偶尔有小问题 |
| 价格 | 商业软件,需付费 | 免费开源 |
| 快照功能 | 支持,速度快 | 支持,速度一般 |
| 与Windows集成 | 拖拽文件、共享剪贴板 | 需安装增强功能 |
我个人更推荐VMware。为什么?因为它的快照恢复速度比VirtualBox快一倍。你想想看,做固件开发时经常要测试不同内核版本,快照一恢复就是几秒钟的事,效率差距就出来了。
3.3 虚拟机配置要点
不管用哪个虚拟机软件,配置参数有讲究。我直接给出一套经过验证的配置方案:
- 内存: 至少4GB,推荐8GB。编译RMC固件时,4GB勉强够用,8GB才流畅。
- CPU: 分配2-4个核心。别贪多,给宿主机留一半核心。
- 磁盘: 40GB起步,建议60GB。系统装完大概占10GB,加上工具链和项目文件,20GB很快就没了。
- 网络: 选桥接模式(Bridged)。这样虚拟机跟宿主机在同一网段,方便SSH连接。
3.4 Ubuntu 20.04 LTS安装步骤
安装过程其实不复杂,但有几个坑我帮你提前踩了。
- 下载镜像: 去Ubuntu官网下载20.04.6 LTS桌面版ISO文件。别用第三方网站,防止镜像被篡改。
- 创建虚拟机: 在VMware里选“创建新虚拟机” -> “典型” -> “稍后安装操作系统” -> 选择Linux -> Ubuntu 64位。
- 挂载ISO: 在虚拟机设置里,CD/DVD选项选择下载好的ISO文件。
- 启动安装: 开机后选“Install Ubuntu”。语言选中文或英文都行,我建议选英文,因为终端报错信息是英文的,方便搜索。
- 分区方案: 新手直接选“擦除磁盘并安装Ubuntu”。想折腾的话,手动分区:
/boot ext4 1GB / ext4 20GB /home ext4 剩余空间 swap 交换分区 4GB(如果内存够大可以不要) - 创建用户: 用户名别用中文,否则某些工具会报路径错误。我习惯用“rmcdev”这种名字。
安装完成后重启,记得在虚拟机设置里把CD/DVD断开连接,否则又会进入安装界面。
3.5 SSH服务与远程访问
为什么要配SSH?因为固件开发经常要在服务器上编译,或者你习惯用自己笔记本连台式机。SSH是最基本的远程访问方式。
3.5.1 安装与启动SSH服务
Ubuntu默认没装SSH服务端,需要手动安装:
# 更新源
sudo apt update
# 安装openssh-server
sudo apt install openssh-server -y
# 检查服务状态
sudo systemctl status ssh
如果看到绿色的“active (running)”,说明成功了。我曾经遇到过安装后启动失败的情况,多半是端口被占用了。用 sudo netstat -tlnp | grep 22 查一下,把冲突的进程干掉就行。
3.5.2 配置SSH
配置文件在 /etc/ssh/sshd_config。有几个关键项我建议你改一下:
# 允许root登录(如果你需要)
PermitRootLogin no
# 修改默认端口(防扫描)
Port 2222
# 允许密钥认证
PubkeyAuthentication yes
# 允许密码认证(调试阶段开着,上线后关掉)
PasswordAuthentication yes
改完记得重启服务:sudo systemctl restart ssh
ssh -p 2222 用户名@虚拟机IP。虚拟机IP用 ip addr 查看,一般是192.168.x.x。
3.5.3 从Windows连接虚拟机
Windows下推荐用PowerShell自带的SSH客户端(Win10 1809以上版本自带),或者用Putty。我个人习惯用PowerShell:
ssh rmcdev@192.168.1.100 -p 2222
第一次连接会提示确认主机指纹,输入yes就行。然后输入密码,搞定。
3.5.4 配置密钥登录(推荐)
输密码太麻烦,而且不安全。配置密钥对登录才是正经做法:
# 在Windows PowerShell里生成密钥对
ssh-keygen -t rsa -b 4096
# 把公钥复制到虚拟机
ssh-copy-id -p 2222 rmcdev@192.168.1.100
# 或者手动复制(如果ssh-copy-id不可用)
cat ~/.ssh/id_rsa.pub | ssh -p 2222 rmcdev@192.168.1.100 "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
配置好后,再连接就不用输密码了。嗯,这才是开发该有的体验。
3.6 知识体系总览
下面这张图帮你理清本章的核心逻辑:
3.7 避坑指南
最后分享几个我踩过的坑:
- 虚拟机无法上网: 检查网络适配器是不是选了桥接模式。如果还是不行,试试NAT模式。
- SSH连接被拒绝: 先确认SSH服务是否启动,再检查防火墙:
sudo ufw status。如果防火墙开着,用sudo ufw allow 2222/tcp放行端口。 - 虚拟机卡顿: 给虚拟机分配的内存别超过宿主机的一半。我见过有人给8GB内存的笔记本分配6GB给虚拟机,结果宿主机卡死。
- 共享文件夹挂载失败: VMware里要安装VMware Tools,VirtualBox要安装增强功能。安装后重启才能生效。
环境搭好了,下一步就是装工具链了。不过那是下一章的事,先把虚拟机跑起来再说。