RK3588作为瑞芯微旗舰级SoC芯片,其8核Cortex-A76/A55架构和6TOPS NPU算力使其成为当前嵌入式开发的热门选择。但在实际部署中,很多开发者会遇到一个典型问题:按照官方镜像烧录后,存储空间并未充分利用,比如128GB的eMMC只显示16GB可用空间。这种现象源于Linux系统分区表的固定分配机制,需要通过手动扩容才能释放全部存储潜力。
上周我在部署一台RK3588边缘计算设备时就遇到了这个痛点。官方提供的Ubuntu镜像默认只划分了16GB空间,而设备实际搭载了128GB eMMC。这导致在安装完ROS2和深度学习框架后,系统频繁报出磁盘空间不足的警告。经过多次实践,我总结出一套安全可靠的扩容方案,整个过程涉及分区表调整、文件系统扩展和启动验证三个关键阶段。
首先通过lsblk命令确认当前存储情况:
bash复制$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
mmcblk1 179:0 0 128G 0 disk
├─mmcblk1p1 179:1 0 1G 0 part /boot
└─mmcblk1p2 179:2 0 15G 0 part /
这里可以看到mmcblk1总容量为128GB,但p2分区仅有15GB可用。同时需要确认设备型号:
bash复制$ cat /proc/device-tree/model
Rockchip RK3588 EVB1 LP4 V10 Board
需要准备以下工具包:
bash复制sudo apt update
sudo apt install -y gdisk e2fsprogs parted
特别提醒:不同Linux发行版的工具链可能有差异,对于Debian系建议使用apt,而Fedora系应换成dnf。
扩容操作存在风险,必须提前备份:
bash复制sudo tar czvf /tmp/system_backup.tar.gz /etc /var/lib
bash复制sudo sgdisk --backup=partition_table_backup.bin /dev/mmcblk1
首先需要卸载根分区(注意:必须在救援模式或LiveCD环境下操作):
bash复制sudo umount /dev/mmcblk1p2
进入交互式分区工具:
bash复制sudo parted /dev/mmcblk1
执行以下关键操作:
重要提示:此处16GB需与原始分区结束扇区对齐,可通过原始print输出中的End值确认。
先检查文件系统一致性:
bash复制sudo e2fsck -f /dev/mmcblk1p2
然后执行扩容:
bash复制sudo resize2fs /dev/mmcblk1p2
这个过程耗时与存储容量成正比,128GB设备大约需要3-5分钟。
为防止启动时文件系统检测失败,需要重建initramfs:
bash复制sudo update-initramfs -u -k $(uname -r)
重启后检查:
bash复制$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mmcblk1p2 118G 12G 100G 11% /
同时验证分区表:
bash复制$ sudo parted /dev/mmcblk1 print
Model: MMC BJTD4R (sd/mmc)
Disk /dev/mmcblk1: 128GB
Partition Table: gpt
Number Start End Size File system Name Flags
1 1049kB 1075MB 1074MB fat32 boot legacy_boot
2 1075MB 128GB 127GB ext4 root boot
现象:卡在initramfs提示无法挂载rootfs
解决方法:
bash复制sudo blkid /dev/mmcblk1p2
现象:resize2fs报"superblock corrupt"
应急方案:
bash复制sudo sgdisk --load-backup=partition_table_backup.bin /dev/mmcblk1
bash复制sudo fsck.ext4 -y /dev/mmcblk1p2
扩容后可能出现IO性能降低,可通过以下优化:
bash复制# /etc/fstab
UUID=xxxx / ext4 defaults,noatime,discard 0 1
bash复制sudo fstrim -v /
对于生产环境设备,建议采用更稳妥的方案:
bash复制sudo pvcreate /dev/mmcblk1p2
sudo vgcreate rk3588_vg /dev/mmcblk1p2
sudo lvcreate -l 100%FREE -n root_lv rk3588_vg
bash复制#!/bin/bash
THRESHOLD=90
CURRENT=$(df / --output=pcent | tail -1 | tr -d '%')
[ $CURRENT -gt $THRESHOLD ] && \
logger -t "StorageAlert" "Root filesystem usage $CURRENT%"
实际测试发现,在RK3588的PCIe 3.0x4接口下,扩容后的eMMC 5.1连续读取速度可达310MB/s,4K随机读写性能与扩容前基本持平。对于需要频繁写入日志的AI应用,建议单独划分/var分区以避免影响主系统稳定性。