内核加入preempt实时补丁后,使用mksparse命令生成的.img文件size异常大,没加前是20G,加入实时补丁后是57G

你好,使用的Jetpack版本是JP512,是“custom carrier board”,问题描述如下:
没使用“rt-patches的preempt”补丁的正常情况:生成量产刷机包过程中使用mksparse命令生成的system.img大小是20G.
加入源码“kernel/kernel-5.10/rt-patches/”中的preempt实时内核补丁后异常:生成量产刷机包过程中使用mksparse命令生成的system.img大小是57G.

问题点:源码是同一份,仅仅是加了“kernel/kernel-5.10/rt-patches/”中的preempt实时内核补丁,mksparse生成的system.img不应该就比之前大了37G
现在加入preempt实时内核补丁后量产刷机包太大,刷机时间太长,影响生产,麻烦帮看下该从哪方面解决或者给点建议?

补充,使用的mksparse命令是:“mksparse -b 512 -v --fillpattern ./clone.img.raw system.img”
谢谢

請問你是怎麼clone image的?
你直接用flash.sh clone的話應該會同時生成raw image和sparse image
你有確認過如果不加上RT patch,單純重新build kernel會不會這樣?

是使用“sudo ./flash.sh -r -k APP -G clone.img jetson-agx-orin-devkit mmcblk0p1”clone image的。执行后会生成raw image, 但生成sparse image失败,提示“size of system.img.raw is not mulple of 4096”,所以使用“mksparse -b 512 -v --fillpattern ./clone.img.raw system.img”重新生成sparse image, 但这里生成的sparse image大小异常,是57G(没加preempt补丁时是20G)

RT patch是新加的,就出现这种问题,之前不加上RT patch单纯build kernel不会这样

聽起來跟RT patch沒有關係,只是你的partition size不知道為什麼有問題
你可以試試看用原版kernel重燒,檢查一下這時候partition的大小是不是4096的倍數
這時候再把kernel換掉然後重新備份

1 Like

问题已解决,谢谢!
确实跟RT patch没有关系,解决方式如下:

sudo losetup --find --show clone.img.raw
sudo zerofree -v /dev/loop19
sudo losetup -d /dev/loop19
sudo ./mksparse -b 512 -v --fillpattern=0 clone.img.raw system.img

详见帖子:System image is still very large after mksparse - #3 by jiakai1000

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.