以泰山派无 eMMC 版为例,嘉立创给的Linux镜像有问题!我也不清楚他没什么这样做,可能是因为他们考虑到但大部分人用的都是8G以上所以他们也默认你用的是8G卡,这样你就算用323G也能正常使用只不过资源太少了
  1. ​
    你挂在完之后一定要配置下次自动挂载不然你这只是临时挂载,你一重启就没了:
    关键:配置 “自动挂载”,避免重启后失效
    手动挂载的分区重启后会消失,需要修改 /etc/fstab 文件配置自动挂载,步骤如下:
    
    
    blkid /dev/mmcblk1p8
    
    
    /dev/mmcblk1p8: UUID="12345678-1234-1234-1234-1234567890ab" TYPE="ext4"  # 记下UUID和TYPE
    
    
    # 用nano编辑fstab(如果没有nano,用vi也可以)
    nano /etc/fstab
    
    
    UUID=12345678-1234-1234-1234-1234567890ab  /mnt/large_storage  ext4  defaults  0  2
    
    解释参数:defaults 表示默认挂载选项(可读可写、自动检测);0 2 表示不备份、开机检查分区。
    
    
    # 先卸载分区
    umount /mnt/large_storage
    # 再用fstab配置重新挂载所有分区
    mount -a
    # 查看是否挂载成功
    df -h | grep /mnt/large_storage
    
    
    ​

你用下面方法挂载的磁盘不是默认磁盘,下载安装软件时记得有c d盘那样的意识防止爆满

https://blog.csdn.net/2301_80317247/article/details/152723453?fromshare=blogdetail&sharetype=blogdetail&sharerId=152723453&sharerefer=PC&sharesource=2301_80317247&sharefrom=from_link

嘉立创这么做的核心原因是避免镜像烧录失败

  • 若镜像采用 “动态扩展分区”,需在首次启动时自动识别 SD 卡容量并调整分区大小,这会增加镜像复杂度(需适配不同 SD 卡芯片、处理分区扩容异常);
  • 固定 8G 适配的分区表,能确保 8G、16G、32G、64G 卡都能 “一次烧录成功启动”,降低新手使用门槛(但忽略了大 SD 卡用户的空间利用需求)。

解决方案:激活 32G 卡的 “闲置空间”,充分利用容量见下方:

嵌入式 Linux(泰山派无 eMMC 版)32G SD 卡报 “磁盘不够” 解决方案

一、问题背景

泰山派无 eMMC 版嵌入式 Linux 系统(Ubuntu 20.04 LTS)中,明明使用 32G SD 卡(实际容量~29.7G),却频繁报错 “磁盘空间不足”:

  • df -h / 显示根分区 /dev/root(实际为 /dev/mmcblk1p6)100% 占用(5.9G 总容量,可用空间为 0);
  • 无法安装软件(如 openssh-server)、配置 WiFi,甚至基本命令执行失败;
  • 硬件层面确认 SD 卡无损坏,且 32G 容量理论上足以支撑系统 + 常用软件(如 OpenCV)。

二、核心原因排查

通过命令排查,发现 32G SD 卡的 “空间浪费” 问题,主要原因如下:

  1. 根分区未扩容:系统默认仅将 SD 卡的 5.9G(/dev/mmcblk1p6)设为根分区,剩余 23.4G 空间存于未正确识别的 /dev/mmcblk1p8 分区;
  2. 无效交换文件占用:根分区存在 2.1G 的 /swapfile(未启用却占用空间);
  3. 大分区文件系统损坏:23.4G 的 /dev/mmcblk1p8 分区默认格式为 ext2,且误挂载到 /userdata,系统识别为 4M 小分区;
  4. 系统日志 / 缓存累积/var/log/var/cache 目录堆积大量日志和安装缓存。

三、完整解决方案(分步骤执行)

以下操作均在泰山派本地终端执行(需连接显示器和键盘,待 SSH 配置完成后可远程操作),所有命令均标注作用和注意事项。

1. 紧急释放根分区空间(解决 “无法执行命令” 问题)

根分区 100% 占用时,需先删除非核心文件腾出操作空间(至少 100MB):

# 1. 删除APT缓存(释放几百MB,最直接有效)
sudo rm -rf /var/cache/apt/archives/*

# 2. 删除旧系统日志(非核心文件,删除不影响系统启动)
sudo rm -rf /var/log/*

# 3. 删除临时文件
sudo rm -rf /tmp/*

# 4. 验证是否释放空间(此时Avail应显示>0)
df -h /

2. 排查 SD 卡分区表,找到 “隐藏的 23.4G 大分区”

泰山派无 eMMC 版 SD 卡通常被识别为 /dev/mmcblk1(非默认的 /dev/mmcblk0),需确认分区结构:

# 查看SD卡(mmcblk1)完整分区表
fdisk -l /dev/mmcblk1

预期输出关键信息(确认大分区位置):

Device            Start      End  Sectors  Size Type
/dev/mmcblk1p6   360448 12943359 12582912    6G unknown  # 根分区(5.9G)
/dev/mmcblk1p8 13205504 62333887 49128384 23.4G unknown  # 未识别的大分区

3. 清理无效 swapfile(释放 2.1G 根分区空间)

根分区中的 /swapfile 未启用却占用大量空间,直接删除:

# 1. 尝试关闭swap(若提示“Invalid argument”,说明未启用,直接跳过)
sudo swapoff /swapfile 2>/dev/null

# 2. 删除无效swapfile
sudo rm -rf /swapfile

# 3. 删除/etc/fstab中swapfile的残留配置(避免开机报错)
sudo sed -i '/swapfile/d' /etc/fstab

# 4. 验证空间(此时根分区可用应>2G)
df -h /

4. 修复并挂载 23.4G 大分区(长期解决空间问题)

/dev/mmcblk1p8 是真正的大分区,需修复文件系统并挂载到系统:

步骤 4.1 卸载大分区的默认挂载点(/userdata)

系统默认将 mmcblk1p8 挂载到 /userdata,需先卸载:

# 1. 查看当前挂载状态
mount | grep /dev/mmcblk1p8  # 输出类似:/dev/mmcblk1p8 on /userdata type ext2

# 2. 卸载/userdata(若提示“device is busy”,先杀进程)
sudo umount /userdata

# 3. 验证卸载(无输出则成功)
mount | grep /dev/mmcblk1p8
步骤 4.2 格式化大分区为 ext4(修复容量识别)

将原 ext2 格式化为 ext4(支持大容量,稳定可靠):

# 强制格式化mmcblk1p8为ext4(-F跳过交互确认,数据安全:该分区无重要数据)
sudo mkfs.ext4 -F /dev/mmcblk1p8

格式化成功标志:输出包含 Creating filesystem with 6141048 4k blocks(对应 23.4G 容量)。

步骤 4.3 挂载大分区并配置自动挂载
# 1. 创建挂载目录(固定路径,方便管理)
sudo mkdir -p /mnt/large_storage

# 2. 临时挂载大分区
sudo mount /dev/mmcblk1p8 /mnt/large_storage

# 3. 验证容量(关键!确认显示23G)
df -h /mnt/large_storage  # 预期:/dev/mmcblk1p8   23G   45M   22G   1%

# 4. 配置开机自动挂载(避免重启失效)
# 4.1 获取大分区UUID(唯一标识,防止设备名变化)
p8_uuid=$(blkid /dev/mmcblk1p8 | awk -F '"' '{print $2}')

# 4.2 写入/etc/fstab(添加自动挂载配置)
echo "UUID=$p8_uuid /mnt/large_storage ext4 defaults 0 2" | sudo tee -a /etc/fstab

# 4.3 测试自动挂载(无报错则成功)
sudo umount /mnt/large_storage
sudo mount -a  # 重新加载fstab
df -h /mnt/large_storage  # 确认再次挂载成功

四、核心问题总结

问题现象 根本原因 解决方案
32G SD 卡报磁盘不足 根分区仅 5.9G,23.4G 大分区未识别 格式化并挂载 mmcblk1p8 到 /mnt/large_storage
根分区 100% 占用 2.1G 无效 swapfile + 日志缓存累积 删除 swapfile 和日志文件
SSH 登录 Access denied PermitRootLogin 默认禁止 root 密码登录 修改 sshd_config 为 PermitRootLogin yes
大分区挂载后显示 4M 原 ext2 文件系统损坏,默认挂载到 /userdata 重新格式化为 ext4 并指定挂载点

五、后续空间管理建议

  1. 大文件存大分区:安装 OpenCV、Python 大库时,指定路径到 /mnt/large_storage
    # 示例:pip安装OpenCV到大分区
    pip install opencv-python --target=/mnt/large_storage/python_libs
    
  2. 定期清理缓存:每月执行一次,避免根分区再次满溢:
    sudo apt-get clean && sudo rm -rf /var/log/*
    
  3. 避免冗余软件:嵌入式系统优先安装轻量版软件(如 python3-opencv 而非完整版 OpenCV)。

通过以上步骤,可彻底解决 32G SD 卡 “磁盘不够” 的问题,同时实现 SSH 远程管理,让泰山派嵌入式 Linux 系统稳定运行。

Logo

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

更多推荐