2. 宿主机开发环境搭建:Ubuntu 22.04 系统安装与配置、SSH远程连接与文件传输、VSCode与远程开发插件、Git版本控制与代码管理
做工业缺陷检测模型移植,宿主机就是你的大本营。我见过不少新手,一上来就在目标板上折腾,结果环境配到一半发现缺工具、缺库,来回传文件搞得焦头烂额。说白了,先把宿主机收拾利索了,后面能省下一大半的调试时间。
这一章咱们就把 Ubuntu 22.04 装好,配上 SSH、VSCode 和 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 配置就得改一次,烦不烦?
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
- 在本地生成密钥对:
ssh-keygen -t ed25519 - 复制公钥到服务器:
ssh-copy-id -p 2222 user@server_ip - 测试登录:
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/
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 连接:
- 按
F1,输入Remote-SSH: Connect to Host - 输入
ssh -p 2222 user@server_ip - 选择配置文件保存位置(默认
~/.ssh/config) - 连接成功后,左下角会显示
SSH: server_ip
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
.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 同步最新代码。养成习惯后,基本不会出现冲突到崩溃的情况。