Android开机讯息进行调试?


23

我正在尝试确定Android(例如Galaxy Nexus,Nexus S和/或Motorola Xoom)是否具有某种功能来生成“启动”日志。(有点像Linux的启动屏幕),这有助于弄清手机在崩溃之前进入引导阶段的程度(例如第一阶段的引导程序,主引导程序,然后是内核加载等)。有谁知道如何使电话吐出该日志文件或启用“详细”启动模式(并将实际消息打印到已连接电话的Linux计算机的终端)?

我的手机被当前修改的版本卡在“启动循环”中,如果可能,我想对其进行调试。

或者,任何人都知道任何有用的资源或教程,这些资源或教程说明了如何轻松地“破解”手机来做到这一点(不弄乱硬件)吗?还是在其他论坛中可能有人问过我,但形式比较晦涩?

最近这是一个令人沮丧的问题,因此,将不胜感激任何帮助!


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

2
没有“ adb”,您将如何访问logcat?Adb仅在电话处于稳定状态时才起作用,这与我猜测logcat存在的原因(谁在乎电话是否成功启动,对工具的需求不大)的观点相矛盾。
9exceptionThrower12年

adb是启动的首批服务之一。如果看到启动动画,则表明adb已经在运行。处于恢复模式时,adb甚至可用。
瑞安·康拉德

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

Answers:


14

有两种方法可以做到这一点:

  • cat /proc/last_kmsg > /sdcard/last_kernel_message_log.txt
  • dmesg > /sdcard/kernel_boot_log.txt
  • 在智能手机关闭的情况下插入USB电缆。然后adb logcat从Windows cmd或Linux终端发出命令,该命令将挂起,等待设备联机,现在启动智能手机。然后,logcat应该开始滚动。

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

我要做的是,在Arch Linux机器上,有两个终端窗口,一个为,另一个为在adb logcatlogcat开始滚动显示的那一刻抓取日志!

编辑:

请注意,使用adb和会有区别fastboot

fastboot它的工作方式有所不同,它仅用于将映像刷新到指定的分区中,并且与引导加载程序进程紧密相关,即,它可以了解引导加载程序机制。它还要求:

  • 在Windows下,具有“管理员”特权来执行它
  • 在Linux下具有“ root”特权

它之所以需要它,是因为它绕过了硬件的某些输入/输出,因此不以adb协议“交谈” ,而是直接与引导加载程序“交谈”。普通用户无法完成的操作。这是的用法帮助fastboot

$ sudo fastboot
usage: fastboot [ <option> ] <command>

commands:
  update <filename>                        reflash device from update.zip
  flashall                                 flash boot + recovery + system
  flash <partition> [ <filename> ]         write a file to a flash partition
  erase <partition>                        erase a flash partition
  getvar <variable>                        display a bootloader variable
  boot <kernel> [ <ramdisk> ]              download and boot kernel
  flash:raw boot <kernel> [ <ramdisk> ]    create bootimage and flash it
  devices                                  list all connected devices
  continue                                 continue with autoboot
  reboot                                   reboot device normally
  reboot-bootloader                        reboot device into bootloader
  help                                     show this help message

options:
  -w                                       erase userdata and cache
  -s <serial number>                       specify device serial number
  -p <product>                             specify product name
  -c <cmdline>                             override kernel commandline
  -i <vendor id>                           specify a custom USB vendor id
  -b <base_addr>                           specify a custom kernel base address
  -n <page size>                           specify the nand page size. default: 2048

的一种众所周知的用法fastboot是,例如,用于刷新恢复映像:sudo fastboot flash recovery recovery.img,另一种方法是直接刷新原始映像sudo fastboot flash system system.img。对于内核开发的更多信息,使用this fastboot boot new_kernel,它会临时下载一个新内核并使用该内核进行引导,而不会涉及引导加载程序自身的引导。

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

请谨慎操作并确保分区正确,然后再次检查并再次检查,如果有必要,请离开计算机,休息一下,再次返回,然后再次检查,这可能会导致严重错误,将错误的文件刷新到错误的分区... 耸耸肩


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

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

我能想到的唯一选择是快速启动擦除cachedata分区-如果您继续进行操作,我不承担任何责任!并尝试通过CWM再次刷新ROM。更好的是,忘了fastboot并使用CWM擦除缓存数据,这听起来像是bootloop是由于缓存或数据
异常所致

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

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

0

您可以使用LiveBoot。它在Google Play商店中。它将满足您的要求。


如果我有bootloop怎么办?有没有办法用USB电缆来做到这一点?
beppe9000
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.