4. 主机开发环境准备:Ubuntu 22.04安装、VMware配置、SSH服务、VNC远程桌面
做嵌入式Linux开发,主机环境是第一步。说白了,你得先有个趁手的「兵器」。
我个人习惯用Ubuntu 22.04作为开发主机。为什么选它?因为RK3568的官方SDK和交叉编译工具链,在22.04上跑得最稳。我之前试过20.04,有些依赖包需要手动打补丁,折腾了一下午。嗯,后来就老老实实换回22.04了。
4.1 VMware Workstation安装与配置
VMware Workstation Pro 17是我目前在用的版本。你问我为什么不用VirtualBox?其实都可以,但VMware在3D加速和USB设备透传上更稳定。我在调试RK3568的USB摄像头驱动时,VMware的USB 3.0透传从来没掉过链子。
4.1.1 下载与安装
- 去VMware官网下载Workstation Pro 17 for Windows。
- 双击安装包,一路Next。注意勾选「增强型键盘驱动程序」——这个后面用VNC时会省很多事。
- 安装完成后,输入许可证密钥(或者用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开发板 |
创建步骤很简单:
- 点击「创建新的虚拟机」→「典型(推荐)」。
- 选择Ubuntu 22.04的ISO镜像文件。
- 设置虚拟机名称和存储位置。
- 指定磁盘大小,勾选「将虚拟磁盘存储为单个文件」。
- 点击「自定义硬件」,按上表调整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
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桌面了。
4.5 本章知识体系
下面这张图把整个环境搭建的脉络理清楚了。你可以把它当作一个检查清单,每完成一项就打个勾。
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,恭喜你,开发环境已经准备好了。