制作工厂烧录固件,定制userdata分区问题
我的应用案例,需要制作工厂烧录固件时,在userdata分区预置一些 私有数据。并且userdata分区要尽可能大使用了以下2个方式尝试:
1、方式1生成userdata.img
修改了firefly-rk3399-ubuntu.mk
#userdata config
export RK_USERDATA_DIR=userdata_normal
并在userdata_normal目录下放入私有数据
执行./build.sh后,在rockdev下看到了生成的userdata.img
但烧录rockdev/pack下的生成固件后,userdata分区数据下没有看到 我放的私有数据
然后,通过AndroidTool_Release_v2.71单独升级userdata.img后,可以看到userdata分区数据是更新了,但是分区大小不对,没有根据内存大小自动设置。
对于userdata是最后一个分区的情况,但如何生成userdata.img?
2、通过 ff_export_rootfs 导出系统rootfs
导出rootfs(生成的rootfs中包含了userdata分区的数据)后,通过./build.sh生成新的固件。
升级后,查看私有数据确实放到了userdata分区。
但root-ro分区空间大小不对,有几个GB的空间浪费。
(由于在导出rootfs时,rootfs文件中 包含了userdata分区的数据。因此rootfs文件大小比实际的root-ro更大,最终打包固件时,分区表是根据rootfs文件大小分配rootfs分区的大小。)
================================================
有谁能告诉一下,该如何解决这个问题? 对你的以上方法进行回复:
1.你修改了userdata.img是不可行的
系统上写后,第一次上电会userdata进行格式化。
2.ff_export_rootfs 导出系统rootfs这个方法是可行的
2.1
可能你的SDK比较旧,后面有个补丁文件可以自动调整userdata分区大小
my_sdk/tools/linux/Linux_Pack_Firmware/rockdev$
mkupdate.sh -> rk3399-mkupdate.sh*
16d7b70- zouxf 2020-03-04 : firefly: add userdata partition, auto modify rootfs size
最终文件
http://git.t-firefly.com:8081/rk-linux/tools/blob/rk3399/firefly/linux/Linux_Pack_Firmware/rockdev/rk3399-mkupdate.sh
2.2
如果没有自动调整分区的补丁,手动修改分区表rockdev/parameter.txt
具体要改多少,可以参考这个
https://wiki.t-firefly.com/AIO-3399C/customize_android_firmware.html 895816513 发表于 2022-3-7 15:00
对你的以上方法进行回复:
1.你修改了userdata.img是不可行的
系统上写后,第一次上电会userdata进行格式 ...
你好,可能我没有讲清
我主要的问题是,root-ro的分区有空间浪费。如下:
--------------------------------------------------------------------------------
root@coshipG2000:~# df -h
Filesystem SizeUsed Avail Use% Mounted on
udev 1.9G 0 1.9G 0% /dev
tmpfs 385M748K384M1% /run
/dev/mmcblk1p7 10G 6.6G 3.0G 70% /root-ro
/dev/mmcblk1p8 19G 2.2G 17G 12% /userdata
overlayroot 19G 2.2G 17G 12% /
tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs 5.0M 4.0K 5.0M1% /run/lock
tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
tmpfs 385M 0 385M 0% /run/user/0
---------------------------------------------------------------------------------
root-ro是只读的。对于我来说,意味着,32个G的内存,我有3个G的浪费!!!
然后,我跟踪了一下原因,发现是 在执行ff_export_rootfs时,root-ro这个分区的空间大小,是根据导出的roofs大小生成的。
而,通过ff_export_rootfs导出的rootfs,包含了userdata的数据。最终烧下去后,root-ro中,就有了3个G的没有使用的空间。请帮忙看下,怎样解决我的问题,谢谢! 刚刚链接我给错了
分别是:
https://gitlab.com/firefly-linux/tools/-/commit/16d7b70d6d1fae16b534aae27ecde6055a62e7e5
https://gitlab.com/firefly-linux/tools/-/blob/firefly/linux/Linux_Pack_Firmware/rockdev/rk356x-mkupdate.sh
你的意思是/dev/mmcblk1p7本来就多出了3G,然后导出的固件把这3G空的空间也包含进去了。 3355 发表于 2022-3-7 16:02
你好,可能我没有讲清
我主要的问题是,root-ro的分区有空间浪费。如下:
e2fsck -p -f linuxroot.img
resize2fs-M linuxroot.img
导出固件后用这几个命令重新压缩大小 895816513 发表于 2022-3-7 17:39
e2fsck -p -f linuxroot.img
resize2fs-M linuxroot.img
好的,谢谢! 895816513 发表于 2022-3-7 15:00
对你的以上方法进行回复:
1.你修改了userdata.img是不可行的
系统上写后,第一次上电会userdata进行格式 ...
您好,我想要删掉userdata分区,全部分配给/root,通过修改配置文件为rk3399的parameter-ubuntu-nouserdata.txt。编译通过了,烧录上能显示firefly的boot加载图片,然后就黑屏了。请问正确的给root扩容的方式是什么? SDK/rockdev/parameter.txt
这里有个链接文件,你可以手动修改分区表大小 支持 895816513 发表于 2022-3-7 15:00
对你的以上方法进行回复:
1.你修改了userdata.img是不可行的
系统上写后,第一次上电会userdata进行格式 ...
请问,系统烧写后,第一次上电为什么会有格式化userdata的操作?
页:
[1]