有两种方法可以做到这一点:
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 logcat
logcat开始滚动显示的那一刻抓取日志!
编辑:
请注意,使用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拒绝了!它!)
请谨慎操作并确保分区正确,然后再次检查并再次检查,如果有必要,请离开计算机,休息一下,再次返回,然后再次检查,这可能会导致严重错误,将错误的文件刷新到错误的分区... 耸耸肩