You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

挂载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卡:
    1. 先在SD卡创建对应目录:
      sudo mkdir -p /mnt/sdcard/develop/mediapipe
      
    2. 移动根分区下的项目文件:
      mv /path/to/your/mediapipe/* /mnt/sdcard/develop/mediapipe/
      
    3. 建立软链接(简单易用,适合用户目录下的项目):
      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卡启动是更省心的方案:

  1. 准备SD卡:先确保SD卡已经分区并格式化(推荐ext4格式,和原eMMC分区类型一致)
  2. 复制系统到SD卡
    • dd直接镜像整个eMMC到SD卡(适合快速复制,注意目标设备是/dev/mmcblk1,不要写错):
      sudo dd if=/dev/mmcblk0 of=/dev/mmcblk1 bs=4M status=progress
      
    • 或者用rsync同步所有文件(更灵活,只复制文件系统内容):
      sudo rsync -axv / /mnt/sdcard/
      
  3. 配置启动顺序:修改嵌入式设备的启动配置(比如U-Boot环境变量,或者/boot目录下的启动配置文件),让系统优先从SD卡启动
  4. 验证启动:重启设备后,用df -h查看根目录挂载的是SD卡分区,此时所有系统和开发操作都会使用SD卡的空间

两种方案对比

  • 快速方案:操作简单,不用改动系统启动逻辑,但如果SD卡被拔出,对应的开发目录会失效,适合临时需求
  • 彻底方案:一劳永逸解决空间问题,但需要配置启动,且SD卡的读写速度如果是低速卡的话,可能比eMMC稍慢(高速SD卡影响可以忽略)

备注:内容来源于stack exchange,提问作者wgthompson

火山引擎 最新活动