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的源里都能直接装,省心。

核心建议: 如果你手头没有特殊要求,直接选Ubuntu 20.04.6 LTS桌面版。服务器版没有图形界面,新手调试起来会多很多麻烦。

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连接。
注意: 磁盘类型选VMDK(VMware)或VDI(VirtualBox),动态分配。别选固定大小,否则一开始就占满硬盘空间。

3.4 Ubuntu 20.04 LTS安装步骤

安装过程其实不复杂,但有几个坑我帮你提前踩了。

  1. 下载镜像: 去Ubuntu官网下载20.04.6 LTS桌面版ISO文件。别用第三方网站,防止镜像被篡改。
  2. 创建虚拟机: 在VMware里选“创建新虚拟机” -> “典型” -> “稍后安装操作系统” -> 选择Linux -> Ubuntu 64位。
  3. 挂载ISO: 在虚拟机设置里,CD/DVD选项选择下载好的ISO文件。
  4. 启动安装: 开机后选“Install Ubuntu”。语言选中文或英文都行,我建议选英文,因为终端报错信息是英文的,方便搜索。
  5. 分区方案: 新手直接选“擦除磁盘并安装Ubuntu”。想折腾的话,手动分区:
    /boot     ext4   1GB
    /         ext4   20GB
    /home     ext4   剩余空间
    swap      交换分区  4GB(如果内存够大可以不要)
  6. 创建用户: 用户名别用中文,否则某些工具会报路径错误。我习惯用“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 知识体系总览

下面这张图帮你理清本章的核心逻辑:

Linux开发机搭建知识体系 Ubuntu 20.04 LTS 虚拟机方案选择 VMware Workstation VirtualBox 虚拟机配置参数 内存/CPU/磁盘/网络 系统安装步骤 分区方案/用户创建 SSH服务与远程访问 安装/配置/密钥登录 Windows远程连接 PowerShell/Putty

3.7 避坑指南

最后分享几个我踩过的坑:

  • 虚拟机无法上网: 检查网络适配器是不是选了桥接模式。如果还是不行,试试NAT模式。
  • SSH连接被拒绝: 先确认SSH服务是否启动,再检查防火墙:sudo ufw status。如果防火墙开着,用 sudo ufw allow 2222/tcp 放行端口。
  • 虚拟机卡顿: 给虚拟机分配的内存别超过宿主机的一半。我见过有人给8GB内存的笔记本分配6GB给虚拟机,结果宿主机卡死。
  • 共享文件夹挂载失败: VMware里要安装VMware Tools,VirtualBox要安装增强功能。安装后重启才能生效。

环境搭好了,下一步就是装工具链了。不过那是下一章的事,先把虚拟机跑起来再说。


专注资料整理