泰山派无 eMMC 版 + YOLO(Ultralytics)YOLO环境部署完整安装指南:解决 SD 卡空间浪费 + TMPDIR 永久配置
本文针对泰山派无 eMMC 版(依赖 SD 卡启动) 的核心痛点 —— 嘉立创 Linux 镜像 “大 SD 卡空间闲置” 问题,结合 YOLO(Ultralytics)安装需求,整合「激活闲置 SD 卡空间」「TMPDIR 永久配置」「YOLO 安装」三大核心操作,彻底解决 “根分区满溢”“环境配置临时失效” 等问题,适用于 32G/64G SD 卡用户。
一、前置认知:泰山派 SD 卡分区的 “坑”
嘉立创为兼容性(适配 8G 最小 SD 卡),将 Linux 镜像设计为固定分区表,导致 32G/64G SD 卡的大部分空间被闲置,具体表现为:
- 根分区(
/dev/mmcblk1p6
):仅 5-6G,系统文件 / 软件挤在这里,易满溢; - 闲置大分区(
/dev/mmcblk1p8
):32G 卡中约 23G 空间未被正确激活(默认可能挂载到/userdata
或完全未挂载); - 其他小分区(
p1-p5/p7
):引导 / 缓存分区,占用空间可忽略。
所有操作的前提:先激活这 23G 闲置空间,否则后续安装 YOLO 仍会因根分区不足报错。
二、第一步:激活泰山派 SD 卡的闲置大分区(核心!)
通过 “识别分区→格式化→挂载→开机自动挂载”,让 32G/64G SD 卡的空间完全可用,目标是将闲置分区/dev/mmcblk1p8
挂载到/mnt/large_storage
(后续 YOLO 安装、TMPDIR 都依赖此目录)。
2.1 识别闲置分区(确认/dev/mmcblk1p8
)
先通过分区工具查看 SD 卡完整分区表,定位闲置大分区:
# 查看SD卡(/dev/mmcblk1,泰山派SD卡固定设备名)的分区信息
fdisk -l /dev/mmcblk1
预期输出(32G SD 卡示例):
Device | Start | End | Sectors | Size | Type |
---|---|---|---|---|---|
/dev/mmcblk1p1 | 16384 | 24575 | 8192 | 4M | 引导相关 |
/dev/mmcblk1p6 | 360448 | 12943359 | 12582912 | 6G | 根分区(满溢风险区) |
/dev/mmcblk1p8 | 13205504 | 62333887 | 49128384 | 23.4G | 闲置大分区(重点!) |
确认/dev/mmcblk1p8
的 Size 为 20G 以上,即为需要激活的空间。
2.2 卸载默认挂载(若已挂载到/userdata
)
嘉立创镜像可能将p8
默认挂载到/userdata
(但未正确识别大容量),先卸载:
# 1. 查看p8当前挂载状态
mount | grep /dev/mmcblk1p8
# 2. 若输出“/dev/mmcblk1p8 on /userdata type ext2”,执行卸载
sudo umount /userdata
2.3 格式化大分区(转为 ext4,适配大容量)
p8
默认可能是 ext2 格式(无日志功能,稳定性差),重新格式化为 ext4(支持大空间 + 更耐用):
# 强制格式化p8为ext4(-F跳过交互,该分区无重要数据,放心执行)
sudo mkfs.ext4 -F /dev/mmcblk1p8
格式化成功标志:
输出包含 “Creating filesystem with 6141048 4k blocks
”(对应 23.4G 容量)。
2.4 挂载大分区到/mnt/large_storage
将格式化后的p8
挂载到固定目录,方便后续使用:
# 1. 创建挂载目录(固定路径,后续统一用这个目录存大文件)
sudo mkdir -p /mnt/large_storage# 2. 临时挂载(立即生效,重启后失效,用于验证)
sudo mount /dev/mmcblk1p8 /mnt/large_storage# 3. 验证挂载结果(确认显示23G左右容量)
df -h /mnt/large_storage
验证成功标志:
Filesystem Size Used Avail Use% Mounted on
/dev/mmcblk1p8 23G 45M 22G 1% /mnt/large_storage
2.5 配置开机自动挂载(避免重启后失效)
通过/etc/fstab
写入挂载规则,确保每次开机自动挂载p8
。注意:操作前建议备份/etc/fstab
,避免配置错误导致无法开机:
# 1. 备份fstab(重要!防止配置错误)
sudo cp /etc/fstab /etc/fstab.bak# 2. 获取p8的UUID(唯一标识,避免设备名变化导致挂载失败)
p8_uuid=$(blkid /dev/mmcblk1p8 | awk -F '"' '{print $2}')# 3. 写入fstab(添加自动挂载规则)
echo "UUID=$p8_uuid /mnt/large_storage ext4 defaults 0 2" | sudo tee -a /etc/fstab# 4. 测试自动挂载(无报错则成功)
sudo umount /mnt/large_storage # 先卸载
sudo mount -a # 重新加载fstab规则
df -h /mnt/large_storage # 再次验证,确认挂载成功
三、第二步:永久配置 TMPDIR(解决安装时临时空间不足)
之前用TMPDIR=/mnt/large_storage/tmp
是临时环境变量(终端关闭后失效),现在配置永久生效,确保后续所有pip
/ 编译操作都用大分区的临时目录,避免根分区/tmp
满溢。
3.1 创建永久临时目录并设置权限
# 1. 在大分区下创建临时目录(与挂载目录一致)
sudo mkdir -p /mnt/large_storage/tmp# 2. 设置权限为777(确保所有用户都能读写,避免安装时权限错误)
sudo chmod 777 /mnt/large_storage/tmp
3.2 永久配置 TMPDIR(两种方案,选其一)
方案 1:仅当前用户(如 root)生效(推荐)
编辑用户的bash
配置文件,仅对当前用户生效,避免影响系统其他用户:
# 1. 编辑root用户的.bashrc(若用普通用户,替换~为/home/用户名)
sudo nano ~/.bashrc# 2. 在文件末尾添加以下内容(指定TMPDIR为大分区的tmp目录)
export TMPDIR=/mnt/large_storage/tmp# 3. 让配置立即生效(无需重启终端)
source ~/.bashrc# 4. 验证配置(输出/mnt/large_storage/tmp即成功)
echo $TMPDIR
方案 2:所有用户生效(系统级配置)
若需要所有用户(包括sudo
切换的用户)都使用该临时目录,编辑系统级配置文件:
# 1. 编辑/etc/profile(系统级环境变量配置文件)
sudo nano /etc/profile# 2. 在文件末尾添加
export TMPDIR=/mnt/large_storage/tmp# 3. 生效配置(所有终端重启后生效,或执行以下命令立即生效)
source /etc/profile# 4. 验证(任意用户执行echo $TMPDIR,均输出目标路径)
echo $TMPDIR
四、第三步:安装 YOLO(Ultralytics)
此时大分区已激活、TMPDIR 已永久配置,所有安装操作都会利用/mnt/large_storage
的空间,彻底避开根分区不足问题。
4.1 安装依赖(确保系统工具齐全)
# 更新apt缓存(避免安装依赖时找不到包)
sudo apt update -y# 安装Python基础依赖(若未安装)
sudo apt install -y python3 python3-pip python3-dev
4.2 用 pip3 安装 YOLO(指定大分区目录)
通过--target
指定安装目录、--cache-dir
指定缓存目录,确保所有文件都存到/mnt/large_storage
:
# 1. 创建YOLO安装目录和pip缓存目录(已在大分区下)
sudo mkdir -p /mnt/large_storage/python_libs # YOLO及依赖安装目录
sudo mkdir -p /mnt/large_storage/pip_cache # pip下载缓存目录# 2. 安装ultralytics(TMPDIR已永久配置,无需重复写)
pip3 install ultralytics \
--target=/mnt/large_storage/python_libs \
--cache-dir=/mnt/large_storage/pip_cache
安装成功标志:
终端最后显示 “Successfully installed ultralytics-xxx
”(忽略 “launchpadlib 依赖缺失” 警告,不影响 YOLO 使用)。
4.3 永久配置 PYTHONPATH(让 Python 找到 YOLO)
YOLO 安装在自定义目录,需让 Python 永久识别该目录,配置方法同 TMPDIR:
# 1. 编辑root用户的.bashrc(或/etc/profile,对应TMPDIR的配置方案)
sudo nano ~/.bashrc# 2. 在末尾添加(指定Python模块搜索路径)
export PYTHONPATH=/mnt/large_storage/python_libs:$PYTHONPATH# 3. 生效配置
source ~/.bashrc# 4. 验证(输出包含目标路径)
echo $PYTHONPATH
五、验证 YOLO 是否可用
5.1 基础导入测试(确认 Python 能找到 YOLO)
python3 -c "from ultralytics import YOLO; print('YOLO导入成功!')"
成功:输出 “YOLO 导入成功!”,无报错。
5.2 模型加载测试(确认 YOLO 功能正常)
加载 YOLOv8 预训练模型(首次运行需联网,自动下载到缓存):
python3 -c "
from ultralytics import YOLO
# 加载轻量版YOLOv8(yolov8n.pt,n代表nano,适合嵌入式设备)
model = YOLO('yolov8n.pt')
# 打印模型输入尺寸(验证加载成功)
print('YOLO模型加载成功!输入尺寸:', model.input_shape)
"
成功:输出 “YOLO模型加载成功!输入尺寸:(1, 3, 640, 640)
”。
六、关键注意事项
- fstab 配置错误修复:若因
/etc/fstab
写错导致无法开机,可通过泰山派串口登录,执行sudo cp /etc/fstab.bak /etc/fstab
恢复备份; - 扩展根分区(可选):若需扩大根分区(
p6
),需用fdisk
调整分区表后执行sudo resize2fs /dev/mmcblk1p6
,但新手建议优先 “挂载 p8”(操作简单无风险); - 定期清理:每月执行
sudo apt clean && sudo rm -rf /mnt/large_storage/tmp/*
,清理 APT 缓存和临时文件,避免大分区满溢。
七、总结
本文针对泰山派无 eMMC 版的硬件特性,先解决 “SD 卡空间浪费” 的根本问题,再通过 “TMPDIR+PYTHONPATH 永久配置” 确保环境稳定,最后安装 YOLO,形成 “硬件→环境→软件” 的完整闭环。核心逻辑是:所有大文件(安装包、临时文件、模型)都放到激活后的闲置分区,彻底摆脱根分区 5-6G 的限制,满足 YOLO 目标检测的存储需求。