嵌入式Linux(以泰山派无 eMMC 版为例,嘉立创给的Linux镜像有问题!)系统报错磁盘不够但我用的是32G不可能不够怎么解决
以泰山派无 eMMC 版为例,嘉立创给的Linux镜像有问题!我也不清楚他没什么这样做,可能是因为他们考虑到但大部分人用的都是8G以上所以他们也默认你用的是8G卡,这样你就算用323G也能正常使用只不过资源太少了
-
你挂在完之后一定要配置下次自动挂载不然你这只是临时挂载,你一重启就没了: 关键:配置 “自动挂载”,避免重启后失效 手动挂载的分区重启后会消失,需要修改 /etc/fstab 文件配置自动挂载,步骤如下:blkid /dev/mmcblk1p8/dev/mmcblk1p8: UUID="12345678-1234-1234-1234-1234567890ab" TYPE="ext4" # 记下UUID和TYPE# 用nano编辑fstab(如果没有nano,用vi也可以) nano /etc/fstabUUID=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 卡的 “空间浪费” 问题,主要原因如下:
- 根分区未扩容:系统默认仅将 SD 卡的 5.9G(
/dev/mmcblk1p6
)设为根分区,剩余 23.4G 空间存于未正确识别的/dev/mmcblk1p8
分区; - 无效交换文件占用:根分区存在 2.1G 的
/swapfile
(未启用却占用空间); - 大分区文件系统损坏:23.4G 的
/dev/mmcblk1p8
分区默认格式为 ext2,且误挂载到/userdata
,系统识别为 4M 小分区; - 系统日志 / 缓存累积:
/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 并指定挂载点 |
五、后续空间管理建议
- 大文件存大分区:安装 OpenCV、Python 大库时,指定路径到
/mnt/large_storage
:# 示例:pip安装OpenCV到大分区 pip install opencv-python --target=/mnt/large_storage/python_libs
- 定期清理缓存:每月执行一次,避免根分区再次满溢:
sudo apt-get clean && sudo rm -rf /var/log/*
- 避免冗余软件:嵌入式系统优先安装轻量版软件(如
python3-opencv
而非完整版 OpenCV)。
通过以上步骤,可彻底解决 32G SD 卡 “磁盘不够” 的问题,同时实现 SSH 远程管理,让泰山派嵌入式 Linux 系统稳定运行。