Android最后一次启动日志位置、Slot B启动失败排查及adb命令报错解决
Android启动日志相关问题解答
1. Android的最后一次启动日志存储在何处?
- 用户空间启动日志:默认由
logd守护进程暂存于内存中,设备重启后会被覆盖。可通过adb logcat --last命令读取上次启动的日志缓存;部分厂商设备会将持久化的启动日志写入/data/misc/logd/last_log(需root权限访问)。 - 内核启动日志:最后一次内核启动的日志通常存储在
/proc/last_kmsg,部分新设备则存于/sys/fs/pstore/console-ramoops,同样需要root权限查看。
2. Slot A可成功启动,但Slot B启动失败,进入Slot A系统后如何排查原因?
- 直接读取Slot B的启动日志:Android 10及以上版本支持
--slot参数,执行adb shell logcat --slot=B --last获取Slot B上次启动的日志。 - 查看持久化日志文件:root后检查
/data/misc/logd/下的Slot B相关日志(如last_log_b,命名可能因厂商而异)。 - 检查内核启动日志:执行
adb shell cat /proc/last_kmsg或/sys/fs/pstore/下的文件,内核启动失败的关键信息通常在这里。 - 排查OTA更新问题:如果Slot B是OTA更新后的分区,查看
/cache/recovery/下的recovery.log和update.log,确认更新过程是否存在错误。 - 验证分区完整性:root后执行
adb shell e2fsck /dev/block/bootdevice/by-name/system_b(需先卸载该分区),检查Slot B的system分区是否损坏。
3. 执行adb logcat --last | tee logcat.log时出现logcat: Logcat read failure: No such file or directory错误的解决方法
- 检查系统版本:
--last参数是Android 7.0及以上才支持的,低版本系统需改用adb logcat -d读取当前缓存的日志(无法获取上次启动日志)。 - 确认日志文件存在:root后检查
/data/misc/logd/last_log是否存在,若文件被删除或损坏,会导致读取失败。 - 提升权限:执行
adb root切换到root权限后再重新运行命令,普通权限可能无法访问日志存储路径。 - 重启设备:若
logd守护进程异常,重启设备后再尝试执行命令。
内容的提问来源于stack exchange,提问作者progquester
相关产品推荐
相关产品推荐

