三星s9(scv38)刷机root过程记录


三星s9(scv38)刷机root过程记录

地区编码KDI,是个日版手机,完整基带代码:SCV38KDU1BSG3,找官方固件包的时候就照着这个找。

所有文件上传123网盘

https://www.123pan.com/s/xMzAjv-WR7dv.html提取码:RNKk

1、刷4件套

刷4件套的过程网上很多,参考地址:https://onfix.cn/course/165?bid=3&mid=1083

需要用到文件:

SAMFW.COM_SCV38_KDI_SCV38KDU1BSG3_fac.zip 官方4件套固件

Odin3_v3.14.1_3B_PatcheD.rar 电脑端线刷工具

SAMSUNG_USB_Driver_for_Mobile_Phones.rar 三星手机驱动程序

其中

官方4件套固件可以在https://samfw.com/firmware/SM-G9600/ 下载KDI版的

Odin3可以在https://odindownload.com/download/ 下载最新版

三星手机驱动,我是网上搜索下载的,应该都是通用的

2、解锁OEM

这个简单,直接打开开发者选项,解锁OEM,如果没有这个选项,说明可能是KG锁没解开,解锁会要求恢复出厂设置,而恢复出厂设置会导致KG锁上锁。。。所以如果有OEM就先解锁OEM

3、解锁KG锁

刚刷完4件套,手机恢复为原版系统,此时kg锁被上锁。开始解锁:

开机配置手机时,不要联网,直接修改时间为8天前(日期减8)关闭自动同步时间,打开开发者选项,关闭系统自动更新,打开USB调试,重启(好像不重启也可以),连接wifi,设置->软件更新(会显示设备注册之类的信息或者处理失败什么的不用管),如果有更新,暂停,多点几次更新(感觉有用),然后重启(好像不重启也可以),打开自动同步时间(设置正确的时间),然后点击系统更新(多点击几次,感觉有用),然后关机,进入下载模式查看KG锁状态,一般是已经解锁了。

上面的“恢复正确时间再次点击系统更新”,好像有时候可以省略,有时候又不行。

4、刷机

4.1、刷twrp

twrp可以到https://twrp.me/samsung/samsunggalaxys9qcom.html下载,根据设备选择型号,要看cpu型号,国际版和亚太不一样,国行是高通cpu,要选这种:starqltechn

很多版本可选,有人说这个版本选择很玄学,不是越新越好,我实际刷机中选择了:twrp-3.2.1-0-starqltechn.img.tar

4.1、刷国行第三方rom

我刷的是番茄rom(http://rom.tomatolei.com/g9600.html),找的Android 9 的(又叫Pie)

装过Android 10的,但是和内核不兼容(也许新版的内核能够兼容,但需要测试,我懒得折腾,找了Android 9 兼容的)

Tomato-S9-G9600-G9650-SKA-v21-free(卡刷版).zip

v21 是最新的Android 9,更新的是Android 10 的了

进入recovery,然后保持系统分区只读,连接电脑,将刷机包拷贝到手机sd卡,然后安装,选择存储位置为SD卡,找到rom包,刷入番茄rom

实际操作时,我尝试重启,但明显陷入了无限重启中,回到recovery继续

4.2、刷内核

内核文件卡刷包:g9600_klabit_pie_V5.8.zip

v5.8这个版本是支持Android 9 的,我在https://github.com/klabit87/android_kernel_samsung_sdm845/releases上找的,更新版本的好像适配Android 10,懒得折腾了,就用Android 9

进入recovery,连接电脑,将内核拷贝到sd卡,安装找到内核,刷入

4.3、解决data分区加密问题

本来刷好内核就完了,但是三星手机的data分区默认是加密的,启动的时候虽然内核启动了,有开机动画了,但是,启动到一半失败了,又重启,我就猜是data分区加密的问题,根据https://xdaforums.com/t/official-twrp-sm-g9600-starqlte-chn.3803297/的说法,刷入了[RMM_patch+forceencrypt_remover.zip](https://www.androidfilehost.com/?fid=6006931924117921399),然后就好了。

这步操作是试出来的,是为了禁用data分区加密,至于为什么要禁用分区加密,原理不是很清楚。

还是用recovery刷入,文件是:RMM_patch+forceencrypt_remover.zip

看名字,作用好像是RMM的补丁(RMM就是KG锁)和强制移除加密。

4.4、格式化data分区

没有为什么,刷了这么多遍的经验告诉我,清空没有坏处,不清空可能有影响,至于是不是真的有影响,不知道。

最后重启进入系统

5、问题汇总

为什么刷第三方rom?

一开始我是没刷第三方rom的,直接刷内核,然后重启,结果内核启动后马上有失败了,重启,感觉是data分区加密导致的

我就根据https://xdaforums.com/t/official-twrp-sm-g9600-starqlte-chn.3803297/的说法,刷入了[RMM_patch+forceencrypt_remover.zip](https://www.androidfilehost.com/?fid=6006931924117921399),然后的确可以进系统了,一切正常。

但是,重启,开不了机了,为什么呢?

刷入内核后强制要求恢复出厂设置,恢复出厂设置后,官方原版系统将KG锁上锁了,启动时,由于KG锁上锁,Bootloader会检测内核,发现不是官方内核,直接拒绝启动。。。所以不是不可以用官方系统,而是不能在用官方系统的同时把KG锁上锁。但是恢复出厂设置又必然导致KG锁上锁,也许可以在关机之前解锁,但没试过,也许不行,都刷了内核了,怎么改时间更新系统触发KG锁解锁?

为什么刷了第三方rom还要刷内核?

番茄的内核无法启动,无限重启,感觉连内核都没有启动,毕竟这是为国行/港版机器提供的rom,日版的机器刷了,可能内核不兼容硬件,导致重启。

总结就是番茄没有专门为日版手机制作rom,这个刷机包是为国行和港版制作的,其中的内核对应的硬件也是国行/港版手机硬件的。(这只是我的猜测,但他自带的内核启动不起来是事实)

总体思路就是:

需要一个第三方system分区(系统),防止恢复出厂设置后KG锁上锁

需要一个第三方内核,替代官方内核,因为官方内核会检验系统是不是官方系统。https://twrp.me/samsung/samsunggalaxys9qcom.html 中也说了:

This device uses dm-verity!
This means that swiping to allow system modifications will prevent you from being able to boot if you are using the stock kernel. In order to bypass dm-verity's boot prevention, you will have to install a kernel that has dm-verity disabled in the fstab.

一些设备有dm-verity,会校验system分区是否被修改过,需要一个第三方内核来禁用dm-verity

需要禁用data分区加密,防止系统启动失败(为什么第三方内核不能用data分区加密我也不知道)

6、研究过程中遇到的对我有启发或误导作用的信息

https://zmis.me/user/zmisgod/post/1665

国行三星s8 的root过程,和我一样遇到了无限重启,他通过输入内核解决了无限重启的问题,这里启发我往内核方面思考,但是也有误导我的地方,他说先刷内核再刷magisk,但是magisk会修改内核,这导致我操作的时候手机变成无限重启,我不知道为什么他的可以我的不行,但是我选择的内核是不需要内magisk修改的,它本身有root权限,而且禁用了dm-vertiy。

https://ministryofsolutions.com/2019/03/samsung-galaxy-s9-scv38-twrp-and-root.html

这是一篇误导我的文章,写明了是三星S9 SCV38的root教程,和我的机型一模一样,不知道咋回事,反正我按这个操作不成功,回过头来看,应该是no-verity-opt-encrypt-6.0-star没生效,对我的内核的修改无效。浪费了我很多时间。

对我的启发就是,让我明白,需要禁用启动过程中内核对系统的校验(dm-verity)。

https://bbs.ixmoe.com/t/topic/22450

https://pan.itj.me/s/J7Fc3zMBRMsFnTG?path=%2FArchive

这个记录了Android 9 去除dm-verity的方法,但是我用这种方法操作官方内核,并没有去除dm-verity,算是误导了我。浪费了我很多时间。

https://evilpan.com/2020/11/14/android-secure-boot/

这篇文章不是讲刷机的,而是讲Android系统启动过程中如何防止系统被篡改的。看的不是很懂,更深刻的理解了:bootloader校验内核(默认是拒绝启动非官方内核的,通过解锁各种锁(bl、kg)来启动非官方内核),内核校验系统分区(通过刷第三方内核来去除校验,或者修改官方内核来去除校验,但我找到的所有通过修改内核来去除校验的方法都不成功)

https://xdaforums.com/t/kernel-q-g9650-g9600-klabit-kernel.3900816/

提供内核的论坛,我root成功的基石之一

https://rajpatellinks.medium.com/disable-dm-verity-or-android-verified-boot-without-twrp-a416d5c4496c

这个是不通过twrp来获取root,原理是通过修改内核,去除dm-verity,进而获得修改系统的能力,然后在系统中添加root权限。但是对我来说,修改官方内核的尝试并不成功,不知道这个日版的官方内核为啥这么顽固。

https://xdaforums.com/t/official-twrp-sm-g9600-starqlte-chn.3803297/

这个是论坛,可信度高,提供内核来源和禁用加密的补丁,但是禁用dm-verity方面说的语焉不详,有误导的嫌疑,说什么“确保在禁用 dm-verity 之前不允许修改系统”,其实修改了也无所谓,只有最后刷入内核,干掉了dm-verity,系统还是能启动。但是这篇文章还是非常重要,因为它我成功了一大半。

https://twrp.me/samsung/samsunggalaxys9qcom.html

提供recovery的网站,可选我没有认真取读它的说明,不然能更早意识到,需要刷第三方内核。

https://blog.csdn.net/iffy1/article/details/128344586

讲述安装分区的文章,没有细看,搜索到它的时候,我正在刷最后成功的一次机,用不到了,当课外知识吧。

https://xdaforums.com/t/rom-g96xf-ds-fd-n-alexndr-uhfvg4-devbase-v7-4-encryption-support-sep-20.3764822/

误导文章,和我的机型没关系

https://github.com/topjohnwu/Magisk/issues/7254

让我意识到,magisk本身并不支持root三星s9,要换其他方法

https://highonandroid.com/android-smartphones/how-to-root-galaxy-s9-or-s9-plus-exynos-supersu/

煞有其事的root教程,有时修改官方内核的,可惜对我没用

https://highonandroid.com/android-smartphones/how-to-root-galaxy-s9-or-s9-plus-exynos-supersu/

同上类似

http://www.romleyuan.com/news/readnews?newsid=3126

没有认真看,说了遇到无限重启要刷入boot分区,可以它没有指出,这个“刷入boot分区”是指第三方解锁了dm-verity增加了root的第三方内核,但是这个网站(http://www.romleyuan.com/lec/read?id=443)让我对解锁kg锁有了方向,当时我的系统还是国行的,非原版系统用这个方法没法解锁。于是开始找原版系统。

https://www.cnblogs.com/nayitian/p/15201829.html

非常非常重要的文章,指出了卡在setupconnection是USB供电不足,我想破脑袋都想不出来了哪里的问题,这篇文章解决我真正刷机的最大障碍。试了用扩展坞提高USB供电,我才真正开始刷机,没有这个,后面的一切都免谈。

https://www.bilibili.com/video/BV1eQ4y1p7vF/?spm_id_from=333.337.search-card.all.click&vd_source=ccf50d10cd6fc93e596e1d5a132a1d4b

一键工具箱,看个热闹