2. 宿主机开发环境搭建:Ubuntu 22.04 系统安装与配置、SSH远程连接与文件传输、VSCode与远程开发插件、Git版本控制与代码管理

做工业缺陷检测模型移植,宿主机就是你的大本营。我见过不少新手,一上来就在目标板上折腾,结果环境配到一半发现缺工具、缺库,来回传文件搞得焦头烂额。说白了,先把宿主机收拾利索了,后面能省下一大半的调试时间。

这一章咱们就把 Ubuntu 22.04 装好,配上 SSH、VSCode 和 Git。嗯,都是基本功,但每一步都有坑。

本章核心目标: 搭建一个可远程开发、可版本控制、可高效传输文件的宿主机环境,为后续交叉编译和模型移植铺平道路。
宿主机开发环境知识体系 宿主机 Ubuntu 22.04 系统安装与配置 SSH 远程连接 VSCode 远程开发 Git 版本控制 系统镜像 驱动与源 SSH 服务 文件传输 Remote-SSH 插件生态 Git 配置 四个模块环环相扣,缺一个后面都会卡住 建议按顺序搭建,不要跳步

2.1 Ubuntu 22.04 系统安装与配置

为什么选 22.04 LTS?因为它的软件源最稳定,对 ARM 交叉编译工具链的支持也最全。我之前试过 20.04,有些新版的 Python 包编译会报错;24.04 又太新,部分嵌入式工具还没适配。22.04 刚好是那个「甜点版本」。

2.1.1 系统安装要点

  • 镜像下载: 去 ubuntu.com/download/server 下载 Ubuntu Server 22.04 LTS。别下 Desktop 版,桌面环境占资源又没用。
  • 磁盘分区: 我习惯给 / 分 100GB,/home 分 200GB,swap 分 16GB(跟内存大小一致就行)。
  • 网络配置: 安装时设置静态 IP,别用 DHCP。你想想看,每次重启 IP 都变,SSH 配置就得改一次,烦不烦?
我的习惯: 安装时勾选「Install OpenSSH server」,这样装完就能直接远程连,省得再配一遍。

2.1.2 基础配置

装完系统第一件事,换源。国内用户用清华或阿里源,速度能快十倍。

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

# 替换为清华源(Ubuntu 22.04)
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 cmake git curl wget vim net-tools
注意: 别装 ubuntu-desktop 或任何图形界面。嵌入式开发用终端就够了,桌面环境只会拖慢系统、增加攻击面。

2.2 SSH 远程连接与文件传输

宿主机装好了,但你不可能天天蹲在机房或者服务器旁边敲键盘。SSH 就是你的远程遥控器。

2.2.1 SSH 服务端配置

如果安装时没勾选 OpenSSH server,手动装一下:

sudo apt install -y openssh-server
sudo systemctl enable ssh
sudo systemctl start ssh

然后改配置文件 /etc/ssh/sshd_config,我建议至少改这两项:

配置项 推荐值 说明
Port 2222(或其他非标准端口) 避免被扫描攻击,别用默认的 22
PermitRootLogin no 禁止 root 直接登录,用普通用户 + sudo
PasswordAuthentication no 关闭密码登录,改用密钥认证

改完重启服务:sudo systemctl restart ssh

密钥认证配置:
  1. 在本地生成密钥对:ssh-keygen -t ed25519
  2. 复制公钥到服务器:ssh-copy-id -p 2222 user@server_ip
  3. 测试登录:ssh -p 2222 user@server_ip

我曾经遇到过密钥权限不对导致连不上的情况,检查 ~/.ssh 目录权限必须是 700,authorized_keys 必须是 600。

2.2.2 文件传输方案

做模型移植,经常要在宿主机和目标板之间传模型文件、权重、日志。我常用的就三个:

  • scp: 最基础,传小文件够用。scp -P 2222 file user@ip:/path/
  • rsync: 传大目录、增量更新时用。支持断点续传,比 scp 快很多。
  • sftp: 交互式操作,适合浏览目录结构。VSCode 的 Remote-SSH 底层用的就是 sftp。
# rsync 示例:同步整个项目目录到服务器
rsync -avz -e 'ssh -p 2222' ./project/ user@ip:/home/user/project/
避坑: 传大文件(比如 >2GB 的模型权重)时,scp 可能会卡死。我后来全改用 rsync,再也没出过问题。

2.3 VSCode 与远程开发插件

说实话,我早期做嵌入式开发都是 vim 硬扛。后来用了 VSCode + Remote-SSH,回不去了。你想想看,本地写代码、远程编译、本地看结果,体验跟本地开发几乎一样。

2.3.1 安装 VSCode

去 code.visualstudio.com 下载 .deb 包,或者用命令行:

wget -qO- https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > packages.microsoft.gpg
sudo install -o root -g root -m 644 packages.microsoft.gpg /etc/apt/trusted.gpg.d/
sudo sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/repos/code stable main" > /etc/apt/sources.list.d/vscode.list'
sudo apt update && sudo apt install -y code

2.3.2 远程开发插件配置

装好 VSCode 后,安装这几个插件:

插件名 作用 必装?
Remote - SSH 通过 SSH 连接远程服务器,像本地一样开发 ✅ 必装
Remote - Explorer 管理多个远程连接 ✅ 必装
C/C++ 代码补全、调试(交叉编译时很有用) 推荐
Python 模型脚本开发 推荐
GitLens 可视化 Git 历史 可选

配置 Remote-SSH 连接:

  1. 按 F1,输入 Remote-SSH: Connect to Host
  2. 输入 ssh -p 2222 user@server_ip
  3. 选择配置文件保存位置(默认 ~/.ssh/config)
  4. 连接成功后,左下角会显示 SSH: server_ip
SSH Config 示例(~/.ssh/config):
Host dev-server
    HostName 192.168.1.100
    Port 2222
    User ubuntu
    IdentityFile ~/.ssh/id_ed25519

配置好后,在 VSCode 里直接选 dev-server 就能连,不用每次输 IP 和端口。

2.4 Git 版本控制与代码管理

做项目没有 Git?我不敢想象。模型移植过程中,你会反复修改代码、调整参数、测试不同版本的推理引擎。没有版本控制,改错了只能从头再来。

2.4.1 Git 安装与初始配置

sudo apt install -y git

# 配置用户信息(必做)
git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"

# 推荐配置
git config --global core.editor "vim"
git config --global merge.tool "vimdiff"
git config --global color.ui true

2.4.2 工作流建议

我个人习惯用这种分支策略:

  • main: 稳定版本,只合入经过测试的代码
  • dev: 日常开发分支
  • feature/xxx: 每个新功能或模型移植任务开一个分支
  • fix/xxx: 修复 bug 的分支
# 初始化仓库
git init
git add .
git commit -m "init: 项目初始化"

# 创建开发分支
git checkout -b dev

# 创建功能分支
git checkout -b feature/yolov5s-tensorrt
注意: 模型文件(.onnx、.weights、.engine)不要提交到 Git 仓库。这些文件动辄几百 MB,而且每次编译都会变。在 .gitignore 里加上:
*.onnx
*.weights
*.engine
*.trt
*.pth
*.pt
__pycache__/
build/
*.log

2.4.3 远程仓库配置

建议用 GitLab 或 Gitee 自建仓库,模型文件涉及公司数据,别放公开平台。

# 添加远程仓库
git remote add origin git@your-git-server:project.git

# 推送代码
git push -u origin dev

# 拉取更新
git pull origin dev
我的经验: 每次修改代码前,先 git status 看看当前状态,再 git pull 同步最新代码。养成习惯后,基本不会出现冲突到崩溃的情况。