Closed TEACAET closed 1 month ago
vbmeta 校验删了?需要提取 vbmeta 镜像文件修改
之前确实没有修补vbmeta。 https://github.com/libxzr/vbmeta-disable-verification 我用这个单独修补了vbmeta,但还是牡蛎QAQ,开机卡第一屏
固件的AP和BL里面都有vbmeta,我对比了两者的md5,应该是一个东西。 我尝试先刷入原版固件后,再依次刷入super.img,vbmeta.img还是开机卡第一屏 附件是我修改的vbmeta和原版{AP和BL里面的} vbmeta.zip
还是说我还差修补vbmeta_system.img,我再试试
修补vbmeta.img和vbmeta_system.img后问题依旧:(
试了试一键打包为odin格式刷机文件,odin报错 <ID:0/003> persist.img <ID:0/003> FAIL! <ID:0/003> <ID:0/003> Complete(Write) operation failed.
一键打包时候的一些报错 /home/teacaet/Desktop/oneui/UY-Sct/my_workspaces/6.1.1/Ready-to-flash/images/init_boot.img : errno=2 : No such file or directory /home/teacaet/Desktop/oneui/UY-Sct/my_workspaces/6.1.1/Ready-to-flash/images/vm-bootsys.img : errno=2 : No such file or directory 处理器为8GEN1,没init_boot.img应该是没关系的吧
/home/teacaet/Desktop/oneui/UY-Sct/my_workspaces/6.1.1/Ready-to-flash/images/cpucp_dtbs.elf : errno=2 : No such file or directory /home/teacaet/Desktop/oneui/UY-Sct/my_workspaces/6.1.1/Ready-to-flash/images/keymint.mbn : errno=2 : No such file or directory
无论我刷没刷vbmeta,开机的第一个loge界面都有Set warranty bit:vbmeta.刷原版super的时候能正常开机。
在刷入打包后的super时候download会先提示一个Set warranty bit: sparse,然后在快结束的时候会在提示一个Set warranty bit: sparse。 在刷入原版的super无提示。 然后我尝试打包了一个非稀疏的super,刷入的时候download提示Set warranty bit: sparse,odin<ID:0/003> super.img/<ID:0/003> FAIL!/<ID:0/003> /<ID:0/003> Complete(Write) operation failed.瞬间报错。
感觉目前卡开机的问题还是在打包方面,但我不太能找到关于Set warranty bit: sparse的问题所在
刷入修改的 super 后有没有去恢复模式清数据,尝试一下,如果还是不能开机,将子分区打包成 erofs 试试
恢复模式清数据后还是照旧
不做任何修改打包成erofs还是有参考值会比原始值大的问题,所以我还是删除了之前的东西按照原始值打包,刷入后还是老问题。
然后我尝试了解包super后不解包子分区,把子分区直接打包为super,刷入时download界面也有两次Set warranty bit : sparse,但能正常开机。这样出来的super和原ap里经过lz4解压后的原super在windows里面分别为8,738,950,144 字节和8,779,509,760 字节
然后因为要手动进rec重置,貌似一直一来的不是卡第一屏,第一屏过后好像是直接黑屏但没关机,开机键没反应只能开机键+音量下强制重启
这样可以判断 super 打包刷入是没有问题的,Set warranty bit : sparse 这个可能是三星还有某种机制检测 super 分区的稀疏大小是否变化,看起来不影响刷入,我只知道 super 大小的非稀疏是官方大小就能刷入。 而你说的打包错误,我是以S24为参考的,看起来有些分区所在的位置和你的机型不同,这个暂时没想好怎么改善三星的打包,如果不同机型具有差异。 最后你说 super 子分区保持原文件打包可以刷入开机,但是不能排除是不是三星本身还有校验,你可以尝试只修改其中一个子分区,和其它子分区打包刷入,以此来排除是不是工具打包的问题,还是三星还有其它校验
我本身只在 hyperos 测试过,刷入开机都是没有任何问题的,现在需要找到三星是否有其它校验
一键打包如果要继续完善,加个case选择需不需要cp应该就好了,不要cp的都是wifi版本的文件结构,要cp的就是现在的打包方式{未验证}
只修改system然后打包f2fs,配从原super解包出来的其他分区,进系统了,是我修改后的system。可喜可贺,可喜可贺。
我现在试试是哪个分区解包在打包后会导致不开机
system(erofs) 卡第一屏后黑屏,更换应该是支持erofs的gki内核无果 system+odm 卡第一屏不黑屏 system+vendor 正常启动 system+vendor+system_ext 卡第一屏后自动重启 system+vendor+product flashing 卡第一屏后自动重启 system+vendor+vendor_dlkm 卡第一屏不黑屏
沟槽只让动system和vendor。
算了,动system和vendor够我精简和加gpu驱动了,不过不能打包成erofs :(原始预期只能达成2/3 。我换了应该是支持erofs的gki内核启动不了,感觉是三星在这个型号上就没搞过erofs支持
打包的问题确实奇怪,很明显不是工具的问题,难以找到问题,新版的机型都是 erofs 了,而且貌似打包也没有这种校验问题。。。
另外,测试了一下不按原始值打包,其实也能正常开机,应该和其他差不多只能小不能大就行了吧。
这个原始大小是因为这个工具在其他人测试时跟我说有这个问题,S23,S24 super 只要大小不是官方大小,刷不进 我昨天也研究了下这个卡开机问题,我觉得问题大概率出在大小上,目前 F2FS 打包,目标文件夹必须要加上一定大小,这个大小会让镜像超过原镜像很多,而且这个固定值在镜像较小时更明显,例如 odm 解压出来,文件夹2MB不到,因为超级块打包必须要+50MB及以上,否则无法正确打包,这部分我不知道怎么优化,我看三星官方,odm 也就20MB。。。问题或许就在大小上,三星可能有什么优化的工具打包,不然大小相差太多了,如果是新机型,全是 erofs,打包应该就没这个问题,我觉得你可以尝试把刷入不开机的镜像打包成 ext4 格式
三星的avb总共要改好几处:
vendor 分区的etc/fstab.qcom
和 vendor_boot 分区的root.1/first_stage_ramdisk/fstab.qcom
,要删掉里面所有avb=...
avb_keys=...
avb,
vendor_boot 分区vendor_boot.avb.json
,vbmeta 分区vbmeta.avb.json
和 vbmeta_system 分区的vbmeta_system.avb.json
,都是"flags" : 0,
改"flags" : 2,
三星的avb总共要改好几处:
vendor 分区的
etc/fstab.qcom
和 vendor_boot 分区的root.1/first_stage_ramdisk/fstab.qcom
,要删掉里面所有avb=...
avb_keys=...
avb,
vendor_boot 分区vendor_boot.avb.json
,vbmeta 分区vbmeta.avb.json
和 vbmeta_system 分区的vbmeta_system.avb.json
,都是"flags" : 0,
改"flags" : 2,
这样修改就能任意修改子分区,而不会卡开机了???
另外,测试了一下不按原始值打包,其实也能正常开机,应该和其他差不多只能小不能大就行了吧。
你修改了 vendor_boot 分区vendor_boot.avb.json吗?
三星的avb总共要改好几处:
vendor 分区的
etc/fstab.qcom
和 vendor_boot 分区的root.1/first_stage_ramdisk/fstab.qcom
,要删掉里面所有avb=...
avb_keys=...
avb,
vendor_boot 分区vendor_boot.avb.json
,vbmeta 分区vbmeta.avb.json
和 vbmeta_system 分区的vbmeta_system.avb.json
,都是"flags" : 0,
改"flags" : 2,
感谢,我仔细对比了小米和三星的 vendor_boot,原来如此
另外,测试了一下不按原始值打包,其实也能正常开机,应该和其他差不多只能小不能大就行了吧。
你修改了 vendor_boot 分区vendor_boot.avb.json吗?
不按原始值打包的情况我没修改vendor_boot 分区vendor_boot.avb.json,只修补了vbmeta和vbmeta_system,vendor未修改只重新打包,system分区和之前提到的一样的修改
另外,测试了一下不按原始值打包,其实也能正常开机,应该和其他差不多只能小不能大就行了吧。
你修改了 vendor_boot 分区vendor_boot.avb.json吗?
不按原始值打包的情况我没修改vendor_boot 分区vendor_boot.avb.json,只修补了vbmeta和vbmeta_system,vendor未修改只重新打包,system分区和之前提到的一样的修改
他说的修改可能是其它子分区重新打包后刷入不开机的原因,能不能测试下?如果确实是这样,我就把去校验的逻辑加在一键修改了
国庆的时候试试
三星的avb总共要改好几处: vendor 分区的
etc/fstab.qcom
和 vendor_boot 分区的root.1/first_stage_ramdisk/fstab.qcom
,要删掉里面所有avb=...
avb_keys=...
avb,
vendor_boot 分区vendor_boot.avb.json
,vbmeta 分区vbmeta.avb.json
和 vbmeta_system 分区的vbmeta_system.avb.json
,都是"flags" : 0,
改"flags" : 2,
这样修改就能任意修改子分区,而不会卡开机了???
我一直是这样改的,没因为avb卡过开机
现在版本的问题(我同步仓库用的) 1.按BunnyYang05提议的修改好后一键打包,刷入home_csc(我手动删除了其中的.pit)odin报错 <ID:0/003> optics.img <ID:0/003> FAIL! 换用原版home_csc能刷入,刷入后bootloop
我现在试试按之前流程刷这次打包的分区而不是一键刷入包
现在版本的问题(我同步仓库用的) 1.按BunnyYang05提议的修改好后一键打包,刷入home_csc(我手动删除了其中的.pit)odin报错 ID:0/003 optics.img ID:0/003 FAIL! 换用原版home_csc能刷入,刷入后bootloop
我现在试试按之前流程刷这次打包的分区而不是一键刷入包
仔细观察,CSC 比 HOME CSC 不仅仅多了 pit 文件,还多了个 omr.img,可能与这个有关吗。
现在版本的问题(我同步仓库用的) 1.按BunnyYang05提议的修改好后一键打包,刷入home_csc(我手动删除了其中的.pit)odin报错 ID:0/003 optics.img ID:0/003 FAIL! 换用原版home_csc能刷入,刷入后bootloop
我现在试试按之前流程刷这次打包的分区而不是一键刷入包
你测试,先测试只修改 super 子分区刷入试试,optics.img 我看你提示这个失败,你是不是把这个分区打包成 F2FS 了。。。这个原官方是 EXT4 ,不知道是不是与这个有关
optics.img确实疏忽了,但是我选择 EXT4打包后packed没有optics.img,也没提示报错,打包成f2fs就可以。解包的时候提示的optics.img是EXT就是指的EXT4吧
optics.img确实疏忽了,但是我选择 EXT4打包后packed没有optics.img,也没提示报错,打包成f2fs就可以。解包的时候提示的optics.img是EXT就是指的EXT4吧
测试修改 super 子分区后能开机吗,optics.img 打包问题后续再看
重新做好了,正在刷入,刚刚卡在vbmeta了
又卡vbmeta,不应该啊
测试修改 super 子分区是指按BunnyYang05说的修改后修改之前会卡开机的其他分区嘛
o,我忘记这件事情了,super 子分区我全是重新打包了的。但是我现在刷不进去ap了,即使我把vbmeta直接换成之前用的在odin的时候也会fail
<ID:0/003> super.img <ID:0/003> vbmeta.img <ID:0/003> FAIL!
我试试刷了原固件后,单独刷vbmeta,vbmeta_system,vendor_boot,optics和super(全子分区重新打包)
o,我忘记这件事情了,super 子分区我全是重新打包了的。但是我现在刷不进去ap了,即使我把vbmeta直接换成之前用的在odin的时候也会fail
ID:0/003 super.img ID:0/003 vbmeta.img ID:0/003 FAIL!
super 打包是官方原大小吗,如果是,我也不理解了。。
是原始值,我想先能启动后再看看非原始值
vbmeta貌似重新打包有问题,我用之前工具修补的能刷进去了,不过vendor_boot我用的修改avb后重新打包的,optics.img用的原镜像。 然后bootloop了QAQ
vbmeta貌似重新打包有问题,我用之前工具修补的能刷进去了,不过vendor_boot我用的修改avb后重新打包的,optics.img用的原镜像。 然后bootloop了QAQ
这么看来,去校验子分区修改后还是不能开机,还有,你在用盾牌座打包前,有没有手动移除校验修改 flags,你用的那个修补工具是自动帮你移除了校验的
flags" : 0 改成2了
我在刚刚基础上刷入之前的之打包的,只重新打包了system和vendor的super后还是卡开机黑屏了
现在版本的问题(我同步仓库用的) 1.按BunnyYang05提议的修改好后一键打包,刷入home_csc(我手动删除了其中的.pit)odin报错 ID:0/003 optics.img ID:0/003 FAIL! 换用原版home_csc能刷入,刷入后bootloop
我现在试试按之前流程刷这次打包的分区而不是一键刷入包
不对,打包应该没问题,应该是我这次改错了什么?第一个工程没卡vbmeta的,我再看看
现在版本的问题(我同步仓库用的) 1.按BunnyYang05提议的修改好后一键打包,刷入home_csc(我手动删除了其中的.pit)odin报错 ID:0/003 optics.img ID:0/003 FAIL! 换用原版home_csc能刷入,刷入后bootloop 我现在试试按之前流程刷这次打包的分区而不是一键刷入包
不对,打包应该没问题,应该是我这次改错了什么?第一个工程没卡vbmeta的,我再看看
打包没问题,是什么分区打包没问题。vbmeta 还是有问题?
第一次那个工程刷到csc的optics.img才fail(不过因为没空间了被我删了),optics.img应该是需要后面看一下的。 vbmeta打包这次有问题应该是我的问题
可能是复制的时候出问题了,我没改东西只是重新单独打包vbmeta和vbmeta_system,能刷进去了。之前放ready-to-flash的md5和原版的,改后的都不一样
可能是复制的时候出问题了,我没改东西只是重新单独打包vbmeta和vbmeta_system,能刷进去了。之前放ready-to-flash的md5和原版的,改后的都不一样
那 super 子分区确认是重新打包后无法开机,是吗
嗯,多修改的vendor_boot后刷一起能开机的super(只修改system和vendor)也开不了了 如果是修改vbmeta和vbmeta_system,super只修改system和vendor能启动,我重新试验了一次
嗯,多修改的vendor_boot后刷一起能开机的super(只修改system和vendor)也开不了了 如果是修改vbmeta和vbmeta_system,super只修改system和vendor能启动,我重新试验了一次
好吧,我还是决定把移除 vbmeta 校验加到一键修改里,看起来你的机型有某些验证机制,由于技术原因,我暂时无法解决 重新打包也需要调整我注意到 S24 的 AP 文件并没有 vbmeta.img ,而 BL 文件都有 vbmeta.img,这里应该可以删除 AP 的
已更新
现在可以选择 CSC 保留数据了
佬,我解包后打包,如果什么都不改参考值会比原始值大,删了点不影响使用的app{/perlod和/priv-app路径里的,在正常使用的系统冻结过没没影响的那些},应用了oneui一键修改的1,2,4,5,6,9,10,11,12,13,18,镜像都保持原固件的f2fs打包,按原始值打包{only-a|稀疏}后单独刷入super.img后卡第一屏
设备型号SM-X800 固件:X800ZCU8CXHB 环境:Ubuntu 22.04.4 LTS