Загрузочные сообщения Android для отладки?

23

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

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

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

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

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

Ответы:

14

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

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

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

Что я хотел бы сделать, так это установить на моем компьютере с Linux Linux два окна терминала, одно для adb 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 был размером 162 Мб, и я попытался его прошить, но fastboot отказался! Чтобы обойти ограничение, пришлось создать CWM-файл с перезаписываемым zip-файлом, чтобы обойти это и обойти это! )

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

t0mm13b
источник
3
Это отличная идея, но одна проблема .... adb работает только в том случае, если демон adb может обнаружить устройство. Если телефон не загрузился успешно, adb не работает. Таким образом, «загрузочная петля», когда вам понадобится logcat, больше всего не сработает, и в данный момент я так не пытаюсь. Единственное, что у вас есть доступ к команде, который не заботится о том, что телефон успешно загрузился, это "fastboot". Какая альтернатива в этом случае?
9exceptionThrower9
@ 9exceptionThrower9 отредактировал мой ответ, включив в него понятие fastboot и ответив в своем комментарии, fastboot не будет работать :)
t0mm13b
Единственная альтернатива, которую я могу придумать, это быстрая загрузка cacheи удаление dataраздела and - я не отвечаю ни за что плохое, если вы продолжите! И попробуйте еще раз прошить ПЗУ через CWM. Более того , забудьте о fastboot и используйте CWM для очистки как кэша, так и данных. Похоже, что загрузочный цикл вызван поврежденным кэшем или данными ...
t0mm13b
Интересно, что именно вы сделали, чтобы получить его в bootloop - это важный вопрос, и вы хотели бы знать, какие шаги вы предприняли?
t0mm13b
Я изменил ядро ​​Android (maguro) для Galaxy Nexus, в частности файл "socket.h", чтобы переопределить регистрацию INET с помощью исследовательского проекта FINS моей команды (который вытягивает интернет-протоколы в пользовательское пространство для сетевых исследователей). После изменения этого файла (всего несколько строк) я успешно перекомпилировал ядро, вставил это ядро ​​в дерево сборки Android maguro, перестроил образ системы Android, а затем прошил новые файлы recovery, boot, system и userdata.img в телефон ...
9exceptionThrower9
0

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

Narcotixs
источник
Что делать, если я получил bootloop? Есть ли способ сделать это с помощью USB-кабеля?
beppe9000