4. Ubuntu 22.04 LTS 安装与基础配置:系统安装(双系统/虚拟机)、换源(阿里云/清华源)、SSH服务开启、VNC远程桌面配置

好,咱们进入正题。嵌入式平板开发,操作系统是地基。我个人习惯用 Ubuntu 22.04 LTS,稳定、软件源丰富,社区支持也到位。这一章我带你走一遍从安装到基础配置的全流程,包括双系统/虚拟机的选择、换源、SSH 和 VNC 配置。这些都是我实际项目中反复折腾过的,踩过的坑一并告诉你。

4.1 系统安装:双系统还是虚拟机?

先解决第一个问题:装双系统还是用虚拟机?这没有标准答案,得看你的实际场景。

我的建议:

  • 虚拟机(推荐新手): 用 VMware 或 VirtualBox,安装简单,不影响宿主机。适合学习、调试、编译小型项目。
  • 双系统: 需要直接操作硬件、跑大型编译任务、或者做性能敏感的开发(比如实时系统、GPU 加速)。

我在项目中遇到过一种情况:用虚拟机编译嵌入式 Linux 内核,结果因为磁盘 I/O 瓶颈,一次完整编译要 40 分钟。换成双系统后,直接缩短到 15 分钟。你想想看,如果每天编译十几次,这时间差就大了。

4.1.1 虚拟机安装(以 VMware 为例)

  1. 下载 Ubuntu 22.04 LTS 镜像(iso 文件),官网或镜像站都行。
  2. 新建虚拟机,选择「典型」配置,指定 iso 文件路径。
  3. 分配资源:建议至少 4GB 内存、2 个 CPU 核心、60GB 磁盘空间。
  4. 启动虚拟机,按提示完成安装。语言选中文,时区选上海。
  5. 安装完成后,记得安装 VMware Tools(或 open-vm-tools),提升显示和鼠标体验。

小技巧: 虚拟机磁盘格式选 VMDK,方便后续迁移。网络模式选 NAT,宿主机和虚拟机可以互通,又不影响局域网其他设备。

4.1.2 双系统安装(UEFI + GPT)

双系统稍微麻烦点,但性能确实好。我当年第一次装双系统时,把 Windows 引导搞坏了,折腾了一整天。嗯,这里要注意几个关键点:

  • 备份数据: 这是铁律。用磁盘工具先压缩出一个空闲分区(至少 80GB)。
  • 关闭 Secure Boot: 进 BIOS 关掉,否则 Ubuntu 可能无法启动。
  • 启动盘制作: 用 Rufus(Windows)或 dd 命令(Linux)写入 U 盘。
  • 分区方案: 建议手动分区——/(根分区)40GB、swap 8GB、/home 剩余空间。

警告: 双系统安装时,引导程序(GRUB)要装到 EFI 分区,不要装到 Windows 的引导分区。我曾经手滑选错,结果两个系统都进不去,最后用 Live CD 修复才救回来。

4.2 换源:阿里云 vs 清华源

系统装好了,第一件事就是换源。默认的 Ubuntu 源在国外,下载速度慢得让人抓狂。换成国内镜像站,速度能快几十倍。

我个人习惯用阿里云源,速度快,更新及时。清华源也不错,但偶尔会有同步延迟。你选哪个都行,操作步骤一样。

4.2.1 换源步骤

  1. 备份原源文件:sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
  2. 编辑源文件:sudo vim /etc/apt/sources.list
  3. 替换为以下内容(以阿里云源为例):
deb http://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ jammy-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ jammy-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ jammy-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ jammy-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ jammy-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ jammy-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ jammy-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ jammy-backports main restricted universe multiverse
  1. 更新软件包列表:sudo apt update
  2. 升级已安装软件:sudo apt upgrade -y

提示: 如果你用清华源,把上面的 mirrors.aliyun.com 换成 mirrors.tuna.tsinghua.edu.cn 即可。另外,jammy 是 Ubuntu 22.04 的代号,别写错了。

4.3 SSH 服务开启

嵌入式平板开发,很多时候你没法直接接显示器和键盘。SSH 就是你的远程控制台。我每次拿到新板子,第一件事就是开 SSH,然后丢到机柜里,后面全靠命令行操作。

4.3.1 安装与配置

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

# 查看服务状态
sudo systemctl status ssh

# 如果没启动,手动启动
sudo systemctl start ssh

# 设置开机自启
sudo systemctl enable ssh

安装完成后,用 ip addr 查看本机 IP,然后在另一台电脑上测试连接:

ssh 用户名@IP地址

安全配置建议:

  • 修改默认端口(22 改成 2222 或其他),减少被扫描的概率。
  • 禁止 root 登录:编辑 /etc/ssh/sshd_config,设置 PermitRootLogin no
  • 使用密钥登录,关闭密码登录。

我曾经在项目现场调试,SSH 默认端口被客户内网的安全策略封了。临时改成 443 端口才连上,搞得一身汗。所以,端口号最好提前规划好。

4.4 VNC 远程桌面配置

SSH 能搞定命令行,但有时候你需要图形界面——比如调试 Qt 应用、查看 UI 布局。这时候 VNC 就派上用场了。

4.4.1 安装 VNC 服务端

Ubuntu 22.04 默认用 Wayland,但 VNC 对 X11 支持更好。我建议切换到 Xorg 会话。

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

# 安装桌面环境(如果没装)
sudo apt install ubuntu-desktop -y

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

启动后,VNC 默认监听 5901 端口(:1 对应 5901)。在客户端用 IP:5901 连接即可。

4.4.2 配置 VNC 启动脚本

为了让 VNC 启动时加载正确的桌面环境,需要编辑 ~/.vnc/xstartup 文件:

#!/bin/bash
export XKL_XMODMAP_DISABLE=1
export XDG_CURRENT_DESKTOP="GNOME-Flashback:Unity"
export XDG_MENU_PREFIX="gnome-flashback-"
gnome-session --session=gnome-flashback-metacity --disable-acceleration-check &

然后给脚本加执行权限:chmod +x ~/.vnc/xstartup,重启 VNC 服务:

vncserver -kill :1
vncserver :1

注意: VNC 默认不加密,不要在公网上直接暴露。建议配合 SSH 隧道使用:ssh -L 5901:localhost:5901 用户名@IP,然后在本地连接 localhost:5901。这样数据走 SSH 加密通道,安全多了。

4.5 本章小结

这一章内容不少,但都是实打实的操作。总结一下:

  • 系统安装: 虚拟机适合新手和轻量开发,双系统适合性能敏感场景。
  • 换源: 阿里云或清华源,二选一,速度提升明显。
  • SSH: 远程开发的必备工具,记得做安全加固。
  • VNC: 图形界面远程访问,配合 SSH 隧道更安全。

下一章,我们会搭建交叉编译环境,开始真正为嵌入式平板写代码。到时候你会发现,今天这些基础配置,都是后面高效工作的基石。

一句话总结: 环境搭得好,开发没烦恼。别嫌这些步骤琐碎,我见过太多项目因为环境问题浪费大量时间。一步到位,后面就顺了。