挂载SD卡后开发应用仍报磁盘空间不足的解决方案咨询
挂载SD卡后开发应用仍报磁盘空间不足的解决方案咨询
看起来你遇到的问题是:虽然挂载了SD卡,但克隆MediaPipe的时候还是在往快满的eMMC根分区写数据对吧?这是因为默认的操作目录还是在根分区下,SD卡只是额外挂载的存储,系统不会自动把开发操作转移过去。下面给你两种可行的解决思路:
快速临时方案:把开发目录迁移到SD卡并建立关联
这种方式不用改动系统启动逻辑,适合快速解决当前的克隆问题:
- 直接在SD卡上克隆项目:如果还没开始克隆,先切换到SD卡的目录再执行命令,这样所有文件都会存在SD卡上:
# 先在SD卡创建开发目录 sudo mkdir -p /mnt/sdcard/develop cd /mnt/sdcard/develop # 执行克隆 git clone https://github.com/google/mediapipe.git - 迁移已有的开发目录到SD卡:如果已经在根分区下有部分文件,先把文件移到SD卡,再用软链接或者绑定挂载让原路径指向SD卡:
- 先在SD卡创建对应目录:
sudo mkdir -p /mnt/sdcard/develop/mediapipe - 移动根分区下的项目文件:
mv /path/to/your/mediapipe/* /mnt/sdcard/develop/mediapipe/ - 建立软链接(简单易用,适合用户目录下的项目):
或者用绑定挂载(更稳定,适合系统级目录,重启后需要重新挂载或者配置开机自动挂载):ln -s /mnt/sdcard/develop/mediapipe /path/to/your/mediapipe
如果要让绑定挂载开机生效,编辑sudo mount --bind /mnt/sdcard/develop/mediapipe /path/to/your/mediapipe/etc/fstab添加一行:/mnt/sdcard/develop/mediapipe /path/to/your/mediapipe none bind 0 0
- 先在SD卡创建对应目录:
彻底解决方案:从SD卡启动系统
如果后续还有大量开发需求,根分区空间会持续紧张,直接从SD卡启动是更省心的方案:
- 准备SD卡:先确保SD卡已经分区并格式化(推荐ext4格式,和原eMMC分区类型一致)
- 复制系统到SD卡:
- 用
dd直接镜像整个eMMC到SD卡(适合快速复制,注意目标设备是/dev/mmcblk1,不要写错):sudo dd if=/dev/mmcblk0 of=/dev/mmcblk1 bs=4M status=progress - 或者用
rsync同步所有文件(更灵活,只复制文件系统内容):sudo rsync -axv / /mnt/sdcard/
- 用
- 配置启动顺序:修改嵌入式设备的启动配置(比如U-Boot环境变量,或者
/boot目录下的启动配置文件),让系统优先从SD卡启动 - 验证启动:重启设备后,用
df -h查看根目录挂载的是SD卡分区,此时所有系统和开发操作都会使用SD卡的空间
两种方案对比
- 快速方案:操作简单,不用改动系统启动逻辑,但如果SD卡被拔出,对应的开发目录会失效,适合临时需求
- 彻底方案:一劳永逸解决空间问题,但需要配置启动,且SD卡的读写速度如果是低速卡的话,可能比eMMC稍慢(高速SD卡影响可以忽略)
备注:内容来源于stack exchange,提问作者wgthompson




