文件系统打包烧写到sd卡,没有完全利用sd卡的全部空间

将buildroot生成的sd卡的.img烧录到一个32g的sd卡上,sd卡实际利用的空间只有几百M


我想问下怎么样才可以像树莓派那样,烧写到多大的sd卡上就会相应的利用上全部的空间

1 个赞

可以尝试在 buildroot_100ask_t113-pro/br2t113pro/board/100ask/t113-pro 目录下;
修改 genimage.cfg 文件,为你期望的大小;

例子

原先:
	partition rootfs {
		partition-type = 0x83
		image = "rootfs.ext4"
	}

修改后:
	partition rootfs {
		partition-type = 0x83
		image = "rootfs.ext4"
		size = 32000M
	}

谢谢回复。但是用这种方法产生的镜像非常的大,我不能接受。一个30多g的镜像,实际上的文件只有数百M,这个用着太不方便了

1 个赞

看了 genimage 的 readme,没找到解决这个问题的办法;
genimage_readme
@100ask_Alen 老师,你有这个问题的解决方法么?

1 个赞

一开始我是想用fdisk来进行分区扩容的,但是后来发现genimage工具打包的镜像分区是hybrid混合分区,fdisk只支持mbr分区,不支持gpt分区,所以使用fdisk -l 命令查看的分区和cat /proc/partitions查看的设备不一致,使用fdisk分区也无效。所以后来在buildroot中添加了gdisk包(gpt fdisk)。使用gdisk扩展了分区,再将分区挂载,这样就能利用剩余容量了。其实可以写一个脚本,第一次启动的时候自动扩展分区,并格式化,挂载,并将其添加到buildroot中,这样每次构建新镜像,启动时就可以自动扩展分区了。

感谢回复,我试试


用gdisk确实成功的将磁盘拓展到全部空间,但是挂载的还是之前的大小;挂载的文件也没有错,也重启过。

请问您是怎么解决这个问题的?

解决了,reboot之后运行 resize2fs /dev/mmcblk0p5 ,大小就修改成功了。但是我有了一个新的疑问。
这个是修改前的

这是修改之后的


使用的空间由423M直接变成了2.2G,这个不知道为啥?

因为我当时是新建了一个分区利用剩余空间,所以之前并没有遇到你的问题。如果是直接扩展rootfs的话,确实需要使用resize2fs来进行在线扩容。至于df那里为什么root那么大,我去尝试了一下并没有这么离谱,只是多了几m而已,你有没有尝试一下使用du命令做一下对比。

挺奇怪的,du出来的文件大小还是414M,等于没发生变化。但是df的使用却变成了2.2G。现在也不影响使用了,倒是可以先过去了 :joy:。感谢您的帮助,确实解决了我的大问题


你好,请问一下我sd显示还剩29G,为什么可用扇区却那么小

什么都不做,直接保存一下,再打开试试。我的一开始直接显示可用为0。直接保存修改,再重新用gdisk打开就好了。