我正在尝试确定Android(即Galaxy Nexus,Nexus S和/或Motorola Xoom)是否具有某种功能来生成“启动”日志。 (有点像Linux的启动屏幕),这有助于弄清手机在崩溃之前进入引导阶段的程度(例如,第一阶段的引导程序,主引导程序,然后是内核加载等)。有谁知道如何使电话吐出该日志文件或启用“详细的”启动模式(并将实际消息打印到已连接电话的Linux计算机的终端上)? />我的手机被当前修改的版本卡在“启动循环”中,如果可能的话,我想对其进行调试。轻松地“破解”手机来做到这一点(不弄乱硬件)?或在任何有人问过我的问题但形式更晦涩的论坛上? >

评论

我知道它很早就开始写入logcat了,但是一旦重启它就被清除了。它应该在显示“启动动画”(甚至可能更快一点)后立即开始编写。

没有“ adb”,您将如何访问logcat? Adb仅在手机处于稳定状态时才起作用,这与我猜测logcat存在的原因(谁在乎手机能否成功启动,对工具的需求不大)有关,这与我的观点相矛盾。
adb是启动的首批服务之一。如果看到启动动画,则表明adb已经在运行。处于恢复模式时,adb甚至可用。

好吧,我不确定我看到的是您正在谈论的启动动画。电池显示“充电”符号后,手机会在崩溃前挂在初始屏幕上,屏幕上显示“ Google”为白色。此后没有“ Android”启动屏幕,也没有任何启动动画。所以我认为亚行还行不通...

#1 楼

有几种方法可以执行此操作:


然后从Windows cmd或Linux终端发出命令cat /proc/last_kmsg > /sdcard/last_kernel_message_log.txt,它将挂起,等待设备联机,现在启动智能手机。 logcat应该开始滚动。

由于您表示有兴趣弄清楚手机在崩溃前进入启动阶段的程度,因此这些方法应该会有所帮助。关键是您需要非常快地获取内核日志(上面显示的前两种方法)。

我会做的是,在Arch Linux机器上,有两个终端窗口,一个用于dmesg > /sdcard/kernel_boot_log.txt,另一个用于在logcat开始滚动显示时抓取日志!

编辑:

请注意,使用adb logcatadb logcat会有区别!与引导加载程序进程绑定在一起,即它可以了解引导加载程序机制。它还要求:


在Windows中具有“管理员”权限来执行它
在Linux中具有“ root”特权

它需要的原因这是因为它绕过了硬件的某些输入/输出,因此不会在adb协议中“交谈”,而是直接与引导加载程序“交谈”。普通用户无法完成的操作。这是使用fastboot的帮助。直接闪烁原始图像fastboot。有关内核开发的更多信息,请使用此adb临时下载一个新内核并使用该内核进行引导,而无需触摸引导加载程序自己的引导。

对于需要刷新的原始图像大小也有限制,当我说原始图像时,我指的是扩展名为fastboot的文件,该图像不得超过128Mb。 (我在开发ics4blade时发现了这一点,构建完成后,system.img为162Mb,我尝试对其进行刷新,但fastboot拒绝了! !)

小心并确保分区正确,然后再次检查并再次检查,如果需要,请离开计算机,休息一下,再次回来,然后再次检查再次,这可能会导致严重错误,将错误的文件闪入错误的分区...耸耸肩

评论


这是一个好主意,但是一个问题.... adb仅在adb守护程序可以检测到设备的情况下起作用。如果电话未能成功启动,则adb无法正常工作。因此,“启动循环”在您最需要logcat的情况下是行不通的,而在我尝试时此刻也不行。您可以访问的命令级命令中唯一不关心手机是否成功启动的是“ fastboot”。那么在这种情况下有什么选择呢?

– 9exceptionThrower9
2012年7月20日在14:28

@ 9exceptionThrower9编辑了我的答案,以包括fastboot的概念,并在您的评论中回答,fastboot无法正常工作:)

– t0mm13b
2012年7月20日在14:48

我能想到的唯一替代方法是快速启动以清除缓存和数据分区-如果您继续进行操作,我不承担任何责任!然后尝试通过CWM再次刷新ROM。更好的是,忘记快速启动并使用CWM擦除缓存和数据,这听起来像是bootloop是由于缓存或数据错误导致的...

–t0mm13b
2012年7月20日14:50



出于兴趣,您到底做了什么使它进入bootloop-这是一个至关重要的问题,想知道您采取了哪些步骤?

–t0mm13b
2012年7月20日下午14:55

我修改了适用于Galaxy Nexus的Android内核(maguro),特别是“ socket.h”文件,以覆盖我团队研究项目FINS的INET注册(该项目将Internet协议引入了网络研究人员的用户空间)。修改此文件(仅几行)后,我成功地重新编译了内核,将此内核插入了android maguro构建树,重新构建了Android系统映像,然后将新的恢复,引导,系统和userdata.img文件刷新到电话...

– 9exceptionThrower9
2012年7月20日15:33

#2 楼

您可以使用LiveBoot。它在Google Play商店中。它会按照您的要求进行操作。

评论


如果我有bootloop怎么办?有没有办法用USB电缆来做到这一点?

– beppe9000
19-6-30在16:41



不知道这是否可以获取日志记录标记,但这是一个不错的头:) play.google.com/store/apps/details?id=eu.chainfire.liveboot

– alecxs
20/12/29在7:58

#3 楼

您可以在该屏幕上进入恢复状态,它允许您访问一些日志文件,一旦手机启动,便无法访问。您要解决的问题将在这些预启动日志中。