V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
amrnxcdt
V2EX  ›  Android

有熟悉 android 系统启动过程的兄弟吗?有偿请求解决个问题

  •  
  •   amrnxcdt · 211 天前 · 5869 次点击
    这是一个创建于 211 天前的主题,其中的信息可能已经有所发展或是发生改变。

    如题,lineageos 用 kernelflash 刷入了 anykernel3.zip 的包,刷到一半手机自动重启了,现在重新刷入原本的 boot 也无法启动,也尝试过完整刷入系统。

    有开机 log ,看上去都卡在同一个地方。

    日志文件较大,节选了下面的信息,如果有熟悉的兄弟请留下联系方式请教一下,薄酬 50 红包,谢谢。

    03-18 18:13:08.535     0     0 I init    : starting service 'vendor.ipacm'...
    03-18 18:13:08.537     0     0 I init    : ... started service 'vendor.ipacm' has pid 5719
    03-18 18:13:08.556     0     0 I init    : Service 'vendor.ipacm' (pid 5719) exited with status 0
    03-18 18:13:08.556     0     0 I init    : Sending signal 9 to service 'vendor.ipacm' (pid 5719) process group...
    03-18 18:13:08.556     0     0 I libprocessgroup: Successfully killed process cgroup uid 1001 pid 5719 in 0ms
    03-18 18:13:08.556     0     0 E init    : process with updatable components 'vendor.ipacm' exited 4 times before boot completed
    03-18 18:13:08.557     0     0 I init    : processing action (sys.init.updatable_crashing=1) from (/system/etc/init/flags_health_check.rc:10)
    03-18 18:13:08.557     0     0 I init    : starting service 'exec 129 (/system/bin/flags_health_check UPDATABLE_CRASHING)'...
    03-18 18:13:08.558     0     0 I init    : ... started service 'exec 129 (/system/bin/flags_health_check UPDATABLE_CRASHING)' has pid 5720
    03-18 18:13:08.558     0     0 I init    : SVC_EXEC service 'exec 129 (/system/bin/flags_health_check UPDATABLE_CRASHING)' pid 5720 (uid 1000 gid 1000+0 context default) started; waiting...
    03-18 18:13:08.565  5720  5720 I flags_health_check: ServerConfigurableFlagsReset reset_mode value: 1
    03-18 18:13:08.565  5720  5720 I flags_health_check: ServerConfigurableFlagsReset updatable crashing detected, resetting flags.
    03-18 18:13:08.570     0     0 I init    : Service 'exec 129 (/system/bin/flags_health_check UPDATABLE_CRASHING)' (pid 5720) exited with status 0 waiting took 0.012000 seconds
    03-18 18:13:08.570     0     0 I init    : Sending signal 9 to service 'exec 129 (/system/bin/flags_health_check UPDATABLE_CRASHING)' (pid 5720) process group...
    03-18 18:13:08.570     0     0 I libprocessgroup: Successfully killed process cgroup uid 1000 pid 5720 in 0ms
    03-18 18:13:09.621     0     0 E FG      : fg_psy_get_property: unsupported property 76
    03-18 18:13:09.627     0     0 E FG      : fg_psy_get_property: unsupported property 76
    03-18 18:13:09.631     0     0 W healthd : battery l=100 v=4369 t=29.2 h=2 st=2 c=78000 fc=2878000 cc=0 chg=u
    03-18 18:13:09.636     0     0 E FG      : fg_psy_get_property: unsupported property 76
    03-18 18:13:09.773   750  1012 D BootAnimation: Playing files = /product/media/bootanimation.zip/part1, Requested repeat = 0, playUntilComplete = true
    03-18 18:13:10.311     0     0 I sysrq   : Show Blocked State
    03-18 18:13:10.311     0     0 I         : task                        PC stack   pid father
    03-18 18:13:10.311     0     0 I kworker/u16: 1   D ffffff955ec85a64     0    83      2 0x00000010
    03-18 18:13:10.311     0     0 I Workqueue: mpm msm_mpm_work_fn
    03-18 18:13:10.311     0     0 I Call trace:  
    03-18 18:13:10.311     0     0 I         : [<ffffff955ec85a64>] __switch_to+0xa8/0xb4
    03-18 18:13:10.311     0     0 I         : [<ffffff955fcfc990>] __schedule+0x578/0x7f4
    03-18 18:13:10.311     0     0 I         : [<ffffff955fcfc3f8>] schedule+0x70/0x90
    03-18 18:13:10.311     0     0 I         : [<ffffff955fcfff54>] schedule_timeout+0x3c/0x308
    03-18 18:13:10.311     0     0 I         : [<ffffff955fcfdbdc>] wait_for_common+0xb0/0x130
    03-18 18:13:10.311     0     0 I         : [<ffffff955fcfdb24>] wait_for_completion+0x14/0x1c
    03-18 18:13:10.311     0     0 I         : [<ffffff955f192364>] msm_mpm_work_fn+0x50/0xd4
    03-18 18:13:10.311     0     0 I         : [<ffffff955ecc9190>] process_one_work+0x1b0/0x478
    03-18 18:13:10.311     0     0 I         : [<ffffff955ecc8c68>] worker_thread+0x240/0x484
    03-18 18:13:10.311     0     0 I         : [<ffffff955eccdc68>] kthread+0xf4/0x13c
    03-18 18:13:10.311     0     0 I         : [<ffffff955ec83310>] ret_from_fork+0x10/0x40
    03-18 18:13:10.311     0     0 I         : mdss_dsi_event  D ffffff955ec85a64     0   175      2 0x00000010
    03-18 18:13:10.311     0     0 I Call trace:  
    03-18 18:13:10.311     0     0 I         : [<ffffff955ec85a64>] __switch_to+0xa8/0xb4
    03-18 18:13:10.311     0     0 I         : [<ffffff955fcfc990>] __schedule+0x578/0x7f4
    03-18 18:13:10.311     0     0 I         : [<ffffff955fcfc3f8>] schedule+0x70/0x90
    03-18 18:13:10.311     0     0 I         : [<ffffff955f09a154>] dsi_event_thread+0xc4/0x3a8
    03-18 18:13:10.311     0     0 I         : [<ffffff955eccdc68>] kthread+0xf4/0x13c
    03-18 18:13:10.311     0     0 I         : [<ffffff955ec83310>] ret_from_fork+0x10/0x40
    03-18 18:13:10.311     0     0 I msm-core: sampli D ffffff955ec85a64     0   541      2 0x00000010
    03-18 18:13:10.311     0     0 I Call trace:  
    03-18 18:13:10.311     0     0 I         : [<ffffff955ec85a64>] __switch_to+0xa8/0xb4
    03-18 18:13:10.311     0     0 I         : [<ffffff955fcfc990>] __schedule+0x578/0x7f4
    03-18 18:13:10.311     0     0 I         : [<ffffff955fcfc3f8>] schedule+0x70/0x90
    03-18 18:13:10.311     0     0 I         : [<ffffff955fcfff54>] schedule_timeout+0x3c/0x308
    03-18 18:13:10.311     0     0 I         : [<ffffff955fcfdbdc>] wait_for_common+0xb0/0x130
    03-18 18:13:10.311     0     0 I         : [<ffffff955fcfdb24>] wait_for_completion+0x14/0x1c
    03-18 18:13:10.311     0     0 I         : [<ffffff955fcfa688>] do_sampling+0xbc/0x244
    03-18 18:13:10.311     0     0 I         : [<ffffff955eccdc68>] kthread+0xf4/0x13c
    03-18 18:13:10.311     0     0 I         : [<ffffff955ec83310>] ret_from_fork+0x10/0x40
    03-18 18:13:10.311     0     0 I         : mdss_fb0        D ffffff955ec85a64     0   785      2 0x00000010
    03-18 18:13:10.311     0     0 I Call trace:  
    03-18 18:13:10.311     0     0 I         : [<ffffff955ec85a64>] __switch_to+0xa8/0xb4
    03-18 18:13:10.311     0     0 I         : [<ffffff955fcfc990>] __schedule+0x578/0x7f4
    03-18 18:13:10.311     0     0 I         : [<ffffff955fcfc3f8>] schedule+0x70/0x90
    03-18 18:13:10.311     0     0 I         : [<ffffff955f0d5f18>] __mdss_fb_display_thread+0x154/0x5fc
    03-18 18:13:10.311     0     0 I         : [<ffffff955eccdc68>] kthread+0xf4/0x13c
    03-18 18:13:10.311     0     0 I         : [<ffffff955ec83310>] ret_from_fork+0x10/0x40
    03-18 18:13:10.311     0     0 I sysrq   : Show backtrace of all active CPUs
    03-18 18:13:10.311     0     0 I         : Backtrace for cpu 7 (current):
    03-18 18:13:10.311     0     0 I         : CPU: 7 PID: 5209 Comm: watchdog Not tainted 4.4.302-perf+ #1
    

    完整 log: https://f.ws59.cn/f/e70xi28hdcm

    第 1 条附言  ·  208 天前

    补充下后续。首先,希望不要有人是因为要搜索解决方法而找到这个帖子的。

    其次,bad ending。数据丢失,wipe data分区后开机了。

    事故分析

    一开始应该是因为在系统中刷新内核的时候软重启导致损坏了某些内容导致无法开机。 关于@SGRRYRS 发现的‘keystore2’的问题,估计当时开机就因为密钥不存在,导致加密的数据丢失了。

    至于keystore2的问题,我的猜测是因为我胡乱操作下使用了twrp的恢复context 或者是/system/bin/restorecon -Rv /data、这是其中一部分原因。

    另外的原因应该是软重启应该是损坏了/data/misc和/data/vendor、/data/system这三个文件夹的元数据,我在排查通过对比另一台正常启动的android系统和android的源码发现,不少本应该是system:system用户组和用户持有文件都变成了root:root用户所持有。

    在recovery下为系统打开adb调试:https://gist.github.com/varhub/7b9555cdd1e5ad785ffde2300fcfd0bd

    uesrdebug标志构建的系统,比如lineageos、开机动画时候就会有adbd在运行,可以使用adb shell执行一些操作、或者用adb logcat获取到早期开机的日志,我觉得在引导循环的时候调试是非常有用的一个方案,要是平常没有开adb调试或者没有注册设备,上面这个方案就用得上。

    第 2 条附言  ·  208 天前
    更正:keystore2 应该是权限不足,开机会导致数据被清理;然后改正配置文件权限也无法再恢复数据了。
    23 条回复    2024-05-26 16:46:10 +08:00
    JayZXu
        1
    JayZXu  
       211 天前   ❤️ 1
    是用的什么手机刷的?
    感觉这种刷机反复重启,多半还是 vbmeta 的问题吧
    虽然 anykernel3 能自动修补 vbmeta ,但是很多手机还会校验 vbmeta 的签名
    amrnxcdt
        2
    amrnxcdt  
    OP
       211 天前
    @JayZXu #1 一加 5 ,已解锁的设备,组后看到 anykernel3 的 log 提示是在刷入 boot ,然后手机就软重启了。尝试清空过/system 重新刷入了一个旧版本(之前能正常启动的)系统。也是卡在同样的位置。
    amrnxcdt
        3
    amrnxcdt  
    OP
       211 天前
    @amrnxcdt #2 组后-> 最后
    winzkh
        4
    winzkh  
       211 天前   ❤️ 1
    要不试试删除/data/adb 呗,anykernel3 配置中如果 do.systemless=1 的话,会创建一个 magisk 模块,可能是这个影响了系统启动
    amrnxcdt
        5
    amrnxcdt  
    OP
       211 天前
    @winzkh #4 重命名了/data/adb/ -> /data/adb1/,还是卡在开机页面
    Musong
        6
    Musong  
       211 天前   ❤️ 1
    init_boot 刷回系统的试试呢?
    amrnxcdt
        7
    amrnxcdt  
    OP
       211 天前
    @Musong #6 旧设备只有 boot.img ,尝试重刷了一样是卡在这里
    azuyume
        8
    azuyume  
       211 天前   ❤️ 1
    一加 5 机型太老了不能刷 Anykernel3 。KernelSU 官网对非 GKI 设备有其他人编译的一加 5 内核,要刷这个才行。
    amrnxcdt
        9
    amrnxcdt  
    OP
       211 天前
    @azuyume #8 我知道,anykernel3.zip 是我自己编译的内核。但是现在看上去并不是内核问题,因为我刷回 lineageos 官方的 boot.img 也无法启动。

    看起来是刷入内核的途中软重启不知道弄坏了什么。
    SGRRYRS
        10
    SGRRYRS  
       210 天前   ❤️ 1
    等一下,我捋一下。首先可以确定,Anykernel3 这都随便乱来的,兼容性好到离谱,我之前的 Nexus6P 都刷了不少,也是自编译的内核。(直接解压现成的 XDA 上的内核,把我编译的放进去,哈哈哈哈)还有,你不会是在系统里刷的内核吧,这个 kernelflash 怕是那个刷写的软件?综上,一方面可能和你刷入方式有关,总不能还破坏了 vendor 那了吧。容我再看看日志
    amrnxcdt
        11
    amrnxcdt  
    OP
       210 天前
    @SGRRYRS #10
    没错,anykerenl3 配置是手动写好的,不匹配是刷不进去的。
    kernel flash 指这个工具: https://github.com/capntrips/KernelFlasher

    以上这两个都用了有一段时间了,不知道为什么突然翻车。

    现在怀疑的是/data 有损坏的设置,因为已经尝试清空所有除/data 以外的分区了。包括/system 和/vendor ,然后重新刷入完整的系统,一样是卡在相同的地方。
    SGRRYRS
        12
    SGRRYRS  
       210 天前
    @amrnxcdt 哈哈,是这个啊,之前在 Fdroid 里还看见过(设计很好看嘛),我觉得它的问题可能还蛮大的,毕竟一加 5 这个原生也不支持 PT(后续倒是弄上了),更是 A only 的设备,难免有点水土不服。不过,我还是更关心问题本身,你是要找回原系统的数据,还是说只是简简单单要修好设备,让它可以启动?
    amrnxcdt
        13
    amrnxcdt  
    OP
       210 天前
    @SGRRYRS #12 软件在后续的更新有支持 non a/b 的设备。
    只要开机直接 wipe /data 是最简单的。

    最好的情况是保留数据:)。
    SGRRYRS
        14
    SGRRYRS  
       210 天前
    @amrnxcdt 那只能一条条排除,可能要点时间了,试着 wipe 一下缓存什么的。对了,你之前提到的“刷入完整的系统”是 Recovery 里重新刷入卡刷包还是什么其他的
    SGRRYRS
        15
    SGRRYRS  
       210 天前
    还是先 twrp 里做个备份,让系统可以启动了再回去折腾
    amrnxcdt
        16
    amrnxcdt  
    OP
       210 天前
    @SGRRYRS #14
    是指 lineageos 的卡刷包。
    amrnxcdt
        17
    amrnxcdt  
    OP
       210 天前
    @SGRRYRS #15 twrp 备份对于我说已经没用了,因为我启用了工作资料,所以程序数据的文件在 twrp 下都是加密的,比如/data/data/,内置储存等。
    SGRRYRS
        18
    SGRRYRS  
       210 天前
    @amrnxcdt emmm 这默认加密是真难受,看来你启动不了的原因应该就在这了,可是要保数据又不可能格式化,死循环。BTW ,你的 lineage os 不是最新版,5.20 还有一个更新,实在不行试试看那个。
    SGRRYRS
        19
    SGRRYRS  
       210 天前   ❤️ 1
    @amrnxcdt 再细细看了日志 Service 'keystore2' (pid 1065) received signal 6 就是加密这边的问题了,它启动后续的也启动不了,晕~
    SGRRYRS
        20
    SGRRYRS  
       210 天前
    P.S. 站内居然有讨论这个的: https://www.v2ex.com/t/926342
    amrnxcdt
        21
    amrnxcdt  
    OP
       210 天前
    @SGRRYRS 5.20 我已经安装了,一样的问题,keystore2 这里我也没留意到,我去研究下。
    SGRRYRS
        22
    SGRRYRS  
       210 天前
    @amrnxcdt 应该是只能格式化 data 了
    amrnxcdt
        23
    amrnxcdt  
    OP
       210 天前
    @SGRRYRS #22 有进展了,keystore2 的问题解决了,虽然现在还是没能开机。



    keystore2 的问题是因为/data/misc/keystore/ 这个目录下的文件所有者变成了 root:root 。改成 keystore:keystore 就可以正常启动了。参考:https://stackoverflow.com/questions/71108966/andoid-12-keystore-user-0-missing-foder



    这是修 keystore2 后的 log: https://f.ws59.cn/f/e7cuiqj2ktx


    上面这个日志也是会报告
    ````
    01-01 22:11:14.203 760 760 E keystore2: system/security/keystore2/src/error.rs:200 - system/security/keystore2/src/maintenance.rs:177: getting keymint device
    01-01 22:11:14.203 760 760 E keystore2:
    01-01 22:11:14.203 760 760 E keystore2: Caused by:
    01-01 22:11:14.203 760 760 E keystore2: 0: system/security/keystore2/src/globals.rs:339: Cannot connect to Keymint
    01-01 22:11:14.203 760 760 E keystore2: 1: system/security/keystore2/src/globals.rs:250: Trying to get Legacy wrapper.
    01-01 22:11:14.203 760 760 E keystore2: 2: Error::Km(r#HARDWARE_TYPE_UNAVAILABLE)
    01-01 22:11:14.203 736 736 E vold : keystore2 Keystore earlyBootEnded returned service specific error: -68
    01-01 22:11:14.203 0 0 E vold : keystore2 Keystore earlyBootEnded returned service specific error: -68
    ````
    我找了之前这个手机正常启动时候的 dmesg 发现里面也会报
    ````
    [ 10.272954] incfs: IncFs_Features: failed to open features dir, assuming v1/none.: No such file or directory
    [ 10.307151] vold: keystore2 Keystore earlyBootEnded returned service specific error: -68
    [ 10.307938] init: Service 'exec 5 (/system/bin/vdc keymaster earlyBootEnded)' (pid 794) exited with status 0 waiting took 0.043000 seconds
    ````
    keystore2 现在应该是正常的。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2767 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 09:31 · PVG 17:31 · LAX 01:31 · JFK 04:31
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.