zongkai28 发表于 2021-9-6 11:04:06

调整img文件大小

本帖最后由 zongkai28 于 2021-9-6 11:09 编辑

设备为全志FETA40i-c-v1.2,内存为1GB,板载EMMC为8GB。原系统将rootfs之后的空间作为用户分区,我们需要调整分区,除了rootfs,再划分出两个用户分区。
通过修改sys_partition_linux.fex两个文件,重新调整了分区:


其中,用户分区的img文件也是参考setup_fakeroot.fs,命令为:mke2img -d ${PWD}/userfs_app -G 4 -R 1 -b 1636537 -i 0 -o ${PWD}/out/sun8iw11p1/linux/common/userfs_app.ext4
制作完成后的img文件可以正常烧录到系统中工作:





现在的问题是,制作完成的镜像太大了,跟实际分区大小是一致的,达到了5.5GB,但是从df -h信息可以看到,镜像加载后实际占用空间并不大,只有1GB不到。

镜像太大,一方面导致烧录时间加长,达到了7分钟。另一方面也导致OTA等需要传输的文件超大,即便压缩传输了,在设备上也无法解压。

想请教一下,该如何缩小制作完成的系统镜像大小?



zhichao 发表于 2021-9-6 11:11:17

现在最新的分区修改方法可以减小镜像大小,但是没有添加用户分区的方法,setup_fakeroot.fs文件里的-B参数应该写成0

zongkai28 发表于 2021-9-6 11:20:46

zhichao 发表于 2021-9-6 11:11
现在最新的分区修改方法可以减小镜像大小,但是没有添加用户分区的方法,setup_fakeroot.fs文件里的-B参数 ...

谢谢回复,我将-B参数改为0试过,这种情况下,rootfs的img大小确实缩小了,但是加载后,分区大小与设置的不一致。如下图所示,分区设置大小为1.6GB,但是-B参数为0时,镜像大小为1.1GB了,分区大小也只有1.1GB。

这种情况在用户分区时,更加不可行了。因为用户分区里目前没有文件,所以大小为空。如果-B参数为0,制作出来的img大小只有几MB,挂载后的分区大小也只有几MB,不能用了。

本来打算参考boot_resource分区方法,使用fsbuild工具的,但是那个工具只能制作fat16和fat32的分区,可靠性不够。

wolongtest 发表于 2021-9-8 20:52:29

zongkai28 发表于 2021-9-6 11:20
谢谢回复,我将-B参数改为0试过,这种情况下,rootfs的img大小确实缩小了,但是加载后,分区大小与设置的 ...
进入系统后,通过 resize2fs 命令修复文件系统到实际大小;

zongkai28 发表于 2021-9-10 11:53:53

wolongtest 发表于 2021-9-8 20:52
进入系统后,通过 resize2fs 命令修复文件系统到实际大小;

方案可行,谢谢回复。
页: [1]
查看完整版本: 调整img文件大小