问题描述:
我的系统板是stm32mp157,属于mpu,搭载了嵌入式Linux系统,我将系统通过STM32CubeProgrammer烧录在了一张32g的sd卡上,可是系统烧录完毕启动板子后,使用命令df -h查看发现磁盘空间只有1个多g,如下图
上网查看,问题可能出在我的系统是由buildroot进行构建的,某些嵌入式系统的构建工具(如 Yocto 或 Buildroot)可能只使用最小的必要空间来创建镜像,因此设备启动后,未使用的存储空间仍保持空闲,除非进行手动分区或调整。
问题解决:
我们进入根文件系统之后,可以在/dev/下看到有很多 mmcblkXpY 的设备文件,这里如果大家把 sd 卡也插到卡槽中,可以看到 mmcblk1 代表的是 sd 卡,mmcblk2 代表的是 emmc,我们根据自己启动的方式选择相应的序号。
ls /dev/mmcblk*
(我这里多了个/dev/mmcblk1p5,原因是我的系统已经挂载了未分配的那部分空间产生的,后续我们将会创建这个分区)
然后输入
gdisk /dev/mmcblkX
X 代表 1 sd 卡,2 emmc。(这里作者使用的是sd卡,所以为 mmcblk1)
我们首先保存重新使用gdisk一下,不然后面会报错(原因在于gdisk 有 bug,第一次打开不会加载剩余空间)
我们输入w,2 次选择都选择 y,就重新加载了gdisk了
重新加载完后我这里再次输入
gdisk /dev/mmcblkX
下面我们输入 n 创建一个分区,一路回车即可,创建好后输入 p
可以看到我们创建的分区已经生成了 ,然后 w 保存,重启开发板。
重启完成后,可以看到/dev 下生成了一个 mmcblkXpY你刚刚创建的编号的一个设备文件,这就说明我们完成了分区表的创建。
下面我们需要格式化这个分区,格式为 ext4。mkfs.ext4 /dev/mmcblkXpY,Y 为你刚刚创建的编号
mkfs.ext4 /dev/mmcblk1p5
格式化完成后,我们挂载到 root 目录下(这里挂载到一个空目录下即可)
mount /dev/mmcblk1p5 /root/
然后输入 df -h 就可以看到挂载完成了。这样就创建好了我们新的分区目录,就可以将我们想要拷贝的内容存放到这里了。
挂载完成后,我们还可以配置自动挂载,这样我们只要没有重新烧录系统,就可以开机自动挂载了
首先使用 vi 打开/etc/fstab
可以看到这里有自动挂载 rootfs 的代码,我们按照上面这个代码,将 root 换成我们自己的设备文件.我这里是/dev/mmcblk1p5,然后上面的代码挂载点为/,我们这里就不能用/了,不然会导致两个点都在用/,就是共用 rootfs,没有实现我们扩容的效果,我这里推荐大家使用/root,因为启动系统就进入了,其他的就都一样了,示例: /dev/mmcblk1p5 /root auto rw 0 1
然后 reboot 重启,重启完成 df -h,发现挂载成功就可以了
标签:创建,gdisk,dev,嵌入式,磁盘空间,mmcblk1p5,Linux,挂载,我们 From: https://blog.csdn.net/m0_73406058/article/details/142891015