4. 主机开发环境准备:Ubuntu 22.04安装、VMware配置、SSH服务、VNC远程桌面

做嵌入式Linux开发,主机环境是第一步。说白了,你得先有个趁手的「兵器」。

我个人习惯用Ubuntu 22.04作为开发主机。为什么选它?因为RK3568的官方SDK和交叉编译工具链,在22.04上跑得最稳。我之前试过20.04,有些依赖包需要手动打补丁,折腾了一下午。嗯,后来就老老实实换回22.04了。

本章目标: 在Windows宿主机上通过VMware搭建Ubuntu 22.04开发环境,并配置SSH和VNC,实现远程开发。

4.1 VMware Workstation安装与配置

VMware Workstation Pro 17是我目前在用的版本。你问我为什么不用VirtualBox?其实都可以,但VMware在3D加速和USB设备透传上更稳定。我在调试RK3568的USB摄像头驱动时,VMware的USB 3.0透传从来没掉过链子。

4.1.1 下载与安装

  1. 去VMware官网下载Workstation Pro 17 for Windows。
  2. 双击安装包,一路Next。注意勾选「增强型键盘驱动程序」——这个后面用VNC时会省很多事。
  3. 安装完成后,输入许可证密钥(或者用30天试用版)。
小技巧: 安装路径不要有中文,否则虚拟机快照功能可能报错。我吃过这个亏。

4.1.2 创建Ubuntu 22.04虚拟机

这里我直接给出一套经过验证的配置参数。这套配置跑RK3568的SDK编译,大概20分钟能完成一次全量构建。

配置项 推荐值 说明
CPU核心数 4 至少2核,4核编译速度翻倍
内存 8 GB 4 GB勉强能用,8 GB才流畅
磁盘大小 120 GB SDK + 交叉工具链约30 GB,留余量
网络类型 NAT 方便宿主机与虚拟机互通
USB控制器 USB 3.0 用于连接RK3565开发板

创建步骤很简单:

  1. 点击「创建新的虚拟机」→「典型(推荐)」。
  2. 选择Ubuntu 22.04的ISO镜像文件。
  3. 设置虚拟机名称和存储位置。
  4. 指定磁盘大小,勾选「将虚拟磁盘存储为单个文件」。
  5. 点击「自定义硬件」,按上表调整CPU、内存、USB。
注意: 磁盘一定要选「单个文件」!拆分成多个文件后,虚拟机迁移时会多出很多麻烦。我曾经因为这个问题,在换电脑时折腾了整整一个晚上。

4.2 Ubuntu 22.04系统安装

启动虚拟机,进入Ubuntu安装界面。这里有几个关键点:

4.2.1 分区方案

我建议手动分区,别用「清除整个磁盘」的自动选项。为什么?因为后面你可能需要挂载额外的数据盘,手动分区更灵活。

挂载点 大小 文件系统 说明
/boot 1 GB ext4 引导分区,1 GB足够
/ 60 GB ext4 根分区,系统 + 工具链
/home 剩余全部 ext4 用户数据,SDK放这里
swap 8 GB swap 交换分区,内存不够时救急

4.2.2 安装后初始化

系统装完后,第一件事是换源。国内用户不换源,apt update能等到你怀疑人生。

# 备份原源
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak

# 替换为清华源
sudo sed -i 's/archive.ubuntu.com/mirrors.tuna.tsinghua.edu.cn/g' /etc/apt/sources.list
sudo sed -i 's/security.ubuntu.com/mirrors.tuna.tsinghua.edu.cn/g' /etc/apt/sources.list

# 更新
sudo apt update && sudo apt upgrade -y
建议: 顺手装几个必备包。我每次装完系统都会跑这条命令:
sudo apt install -y build-essential git vim net-tools openssh-server curl wget

4.3 SSH服务配置

SSH是嵌入式开发的命脉。你想想看,每次调试都要跑到虚拟机前面去操作,多麻烦。配好SSH,你就可以在Windows上用MobaXterm或者VS Code Remote-SSH连接过去,舒服得很。

4.3.1 安装与启动

# 安装SSH服务
sudo apt install openssh-server -y

# 查看服务状态
sudo systemctl status ssh

# 如果没启动,手动启动
sudo systemctl start ssh
sudo systemctl enable ssh  # 开机自启

4.3.2 配置优化

默认配置够用,但我习惯改两个地方:

sudo vim /etc/ssh/sshd_config

# 找到下面两行,修改为:
PermitRootLogin yes          # 允许root登录(调试时方便)
ClientAliveInterval 60       # 每60秒发一次心跳,防止断连
ClientAliveCountMax 3        # 连续3次心跳无响应才断开

改完重启服务:sudo systemctl restart ssh

安全提醒: 如果你在公网环境,千万别开PermitRootLogin。但在本地VMware里,图个方便没问题。我自己的开发机一直这么配,没出过事。

4.3.3 测试连接

在Windows宿主机上打开CMD或PowerShell:

ssh username@虚拟机IP

虚拟机IP怎么查?在Ubuntu里跑 ip addr show,找到ens33或eth0那个网卡的inet地址。一般是192.168.x.x。

4.4 VNC远程桌面配置

SSH能搞定命令行,但有时候你需要图形界面——比如配置RK3568的显示参数,或者用Qt Creator做界面开发。这时候VNC就派上用场了。

4.4.1 安装VNC服务器

Ubuntu 22.04默认用GNOME桌面,但GNOME对VNC不太友好。我推荐用Xfce4,轻量又稳定。

# 安装Xfce4桌面
sudo apt install xfce4 xfce4-goodies -y

# 安装TightVNC服务器
sudo apt install tightvncserver -y

4.4.2 配置VNC

# 启动VNC服务(第一次会要求设置密码)
vncserver

# 停止VNC服务,修改配置
vncserver -kill :1

# 编辑配置文件
vim ~/.vnc/xstartup

# 写入以下内容:
#!/bin/bash
xrdb $HOME/.Xresources
startxfce4 &

给配置文件加执行权限:

chmod +x ~/.vnc/xstartup

4.4.3 启动VNC服务

# 启动VNC,分辨率设为1920x1080,颜色深度24位
vncserver -geometry 1920x1080 -depth 24 :1

在Windows上,用VNC Viewer连接 虚拟机IP:5901,输入刚才设置的密码,就能看到Xfce4桌面了。

避坑指南: 我曾经在VNC里启动GNOME,结果卡成PPT。后来换成Xfce4,流畅度直接起飞。如果你非要GNOME,可以试试x11vnc,但配置起来麻烦不少。

4.5 本章知识体系

下面这张图把整个环境搭建的脉络理清楚了。你可以把它当作一个检查清单,每完成一项就打个勾。

主机开发环境搭建流程 主机开发环境搭建流程 VMware Workstation Ubuntu 22.04 安装 SSH 服务 VNC 远程桌面 命令行开发/调试 图形界面开发 远程桌面管理 RK3568 驱动开发环境就绪 说明:SSH用于命令行操作,VNC用于图形界面,两者互补,建议都配置上

4.6 验证环境

全部配置完成后,我习惯跑一个快速验证脚本,确保所有服务都正常:

#!/bin/bash
echo "=== 检查SSH服务 ==="
sudo systemctl is-active ssh && echo "SSH OK" || echo "SSH FAIL"

echo "=== 检查VNC服务 ==="
vncserver -list 2>/dev/null | grep -q ":1" && echo "VNC OK" || echo "VNC FAIL"

echo "=== 检查网络连通性 ==="
ping -c 1 8.8.8.8 &>/dev/null && echo "网络 OK" || echo "网络 FAIL"

echo "=== 检查磁盘空间 ==="
df -h / | awk 'NR==2 {print "剩余空间: "$4}'

把这段脚本保存为 check_env.sh,跑一下。如果三项都OK,恭喜你,开发环境已经准备好了。

我的经验: 环境搭建这一步,宁可慢一点,也要把每个环节都验证到位。我见过太多人急着往下走,结果编译SDK时报错,回头才发现是SSH没配好或者磁盘空间不够。磨刀不误砍柴工,真的。