Сообщения о загрузке Android для отладки?

Я пытаюсь выяснить, есть ли у Android (т. е. Galaxy Nexus, Nexus S и/или Motorola Xoom) какая-то возможность создавать журнал «загрузки». (что-то вроде загрузочного экрана Linux). Было бы очень полезно выяснить, как далеко ваш телефон продвинулся на этапах загрузки до того, как он выйдет из строя (например, загрузчик первого этапа, основной загрузчик, затем загрузка ядра и т. д.). Кто-нибудь знает, как заставить телефон выдавать этот файл журнала или включить «подробный» режим загрузки (и распечатать фактические сообщения на терминале компьютера с Linux, к которому подключен телефон)?

Мой телефон застревает в «цикле загрузки» с моей текущей модифицированной сборкой, и я хотел бы отладить ее, если это возможно.

В качестве альтернативы, кто-нибудь знает какие-либо полезные ресурсы или учебные пособия, которые объясняют, как легко «взломать» телефон, чтобы сделать это (без возни с оборудованием)? Или каких-то форумов, где мой вопрос мог быть задан, но в более неясной форме?

Это была неприятная проблема в последнее время, поэтому любая помощь будет принята с благодарностью!

я знаю, что он начинает писать в logcat очень рано, но это очищается после перезагрузки. он должен начать писать, как только покажет "загрузочную анимацию" (или, может быть, даже немного раньше).
как бы вы получили доступ к logcat без «adb»? Adb работает только тогда, когда телефон находится в стабильном состоянии, что, как мне кажется, противоречит всей сути существования logcat (кого волнует, успешно ли загружается телефон, инструмент не так уж и нужен).
adb — одна из первых служб, которые запускаются. если вы видите загрузочную анимацию, adb уже запущен. adb доступен даже в режиме восстановления.
Ну, я не уверен, что вижу загрузочную анимацию, о которой вы говорите. После символа «зарядки» аккумулятора телефон зависает на заставке с белым «Google» перед тем, как вылететь. После этого нет заставки «Android» или какой-либо загрузочной анимации. Так что я не думаю, что ADB еще работает...

Ответы (3)

Есть несколько способов сделать это:

  • cat /proc/last_kmsg > /sdcard/last_kernel_message_log.txt
  • dmesg > /sdcard/kernel_boot_log.txt
  • подключите USB-кабель при выключенном смартфоне. Затем введите команду adb logcatс вашего терминала Windows cmd или Linux, он зависнет в ожидании подключения устройства к сети, теперь включите смартфон. Затем логарифм должен начать прокручиваться.

Поскольку вы выразили заинтересованность в выяснении того, как далеко продвинулся ваш телефон на этапах загрузки до того, как он выйдет из строя , эти методы должны помочь. Дело в том, что вам нужно быть довольно быстрым, чтобы получить журнал ядра (первые два метода, показанные выше).

Что бы я сделал, так это на моем компьютере с 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. Более того, в случае разработки ядра с помощью fastboot boot new_kernelэтого временно загружается новое ядро ​​и загружается с его помощью, не затрагивая собственную загрузку загрузчика.

Также существует ограничение на размер необработанного образа, который необходимо прошить, когда я говорю необработанный образ, я имею в виду файл с .imgрасширением, образ не должен превышать 128 Мб. ( Я это обнаружил при разработке ics4blade, после завершения сборки system.img был 162Mb, и я пытался его прошить, но fastboot отказывался! Чтобы обойти ограничение, пришлось создать CWM-прошиваемый zip-файл, чтобы сделать это и обойти это! )

Соблюдайте осторожность и убедитесь, что раздел правильный, и перепроверьте и перепроверьте еще раз, если необходимо, отойдите от компьютера, сделайте перерыв, вернитесь снова и снова перепроверьте, вот где это может пойти ужасно неправильно, прошить не тот файл не в тот раздел... хорошо пожимает плечами

Это отличная идея, но есть одна проблема... adb работает только в том случае, если демон adb может обнаружить устройство. Если телефон не загрузился успешно, adb не работает. Таким образом, «загрузочная петля», когда вам больше всего понадобится logcat, не сработает, и в данный момент я не пытаюсь это сделать. Единственное, к чему у вас есть доступ с помощью команд, которым не важно, успешно ли загрузился телефон, — это «fastboot». Какая тогда альтернатива в этом случае?
@ 9exceptionThrower9 отредактировал мой ответ, включив в него концепцию fastboot, и чтобы ответить в вашем комментарии, fastboot не будет работать :)
Единственная альтернатива, которую я могу придумать, - это стереть раздел cacheи dataраздел через fastboot - я не несу ответственности за что-либо неблагоприятное, если вы продолжите! И попробуйте еще раз прошить ROM через CWM. Еще лучше , забудьте о fastboot и используйте CWM для очистки кеша и данных , похоже, что бутлуп происходит из-за неработающего кеша или данных...
Интересно, что именно вы сделали, чтобы заставить его загрузиться - это важный вопрос, и хотелось бы знать, какие шаги вы предприняли?
Я модифицировал ядро ​​Android (maguro) для Galaxy Nexus, особенно файл «socket.h», чтобы переопределить регистрацию INET в исследовательском проекте моей команды FINS (который извлекает интернет-протоколы в пользовательское пространство для сетевых исследователей). После изменения этого файла (всего несколько строк) я успешно перекомпилировал ядро, вставил это ядро ​​в дерево сборки Android maguro, пересобрал образ системы Android, а затем прошил новые файлы восстановления, загрузки, системы и userdata.img в Телефон...
... Телефон зависает после отображения символа батареи и некоторое время зависает на заставке с белым текстом «Google», а затем вылетает. Любые предложения, основанные на этой уникальной ситуации?
для чего это стоит, по опыту при сборке из исходников, и он зависает на заставке, обычно он не может смонтировать некоторые разделы. Я бы сравнил стандартный и модифицированный fstab, чтобы увидеть, изменилось ли что-нибудь. вы, вероятно, можете включить adb в init.rc и поймать журнал до сбоя. но это может быть многое другое.
fastbootне всегда требует root-доступа, по крайней мере, не в некоторых дистрибутивах Linux. Вы можете просто поручить людям использовать sudo или администратора, если им будет отказано в разрешении.

Вы можете использовать LiveBoot. Это в магазине Google Play. Он будет делать именно то, что вы просите.

Что, если у меня есть бутлуп? Есть ли способ сделать это с помощью USB-кабеля?
не знаю, заслуживает ли это тега ведения журнала, но это хороший трюк :) play.google.com/store/apps/details?id=eu.chainfire.liveboot

Вы можете войти в режим восстановления на этом экране, он позволяет вам получить доступ к нескольким файлам журнала, к которым вы не можете получить доступ после загрузки телефона. То, что вы пытаетесь устранить, будет в этих предзагрузочных журналах.