Повідомлення для завантаження Android для налагодження?


23

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

Мій телефон застряг у "циклі завантаження" з моєю поточною модифікованою збіркою, і я хотів би налагодити його, якщо це можливо.

Крім того, хтось знає про будь-які корисні ресурси чи навчальні посібники, які пояснюють, як легко "зламати" телефон, щоб це зробити (не возитися з обладнанням)? Або на будь-яких форумах, де моє запитання було задано, але в більш незрозумілій формі?

Це стало неприємною проблемою останніх років, тому будь-яка допомога буде дуже вдячна!


я знаю, що він починає писати на logcat дуже рано, але це очищається, як тільки він перезавантажується. слід почати писати, як тільки покаже «завантажувальну анімацію» (а може, навіть трохи раніше).
Райан Конрад

2
як би ви отримали доступ до logcat без "adb"? Adb працює лише тоді, коли телефон перебуває в стабільному стані, що суперечить всій суті. Я здогадуюсь, чому існує logcat (кому все одно, чи телефон успішно завантажується, не дуже потрібен інструмент).
9exceptionThrower9

adb - одна з перших сервісів, яка починається. якщо ви бачите анімацію завантаження, adb вже працює. adb доступний навіть у режимі відновлення.
Райан Конрад

Ну, я не впевнений, що бачу анімацію завантаження, про яку ти говориш. Після символу "зарядки" акумулятора телефон зависає на екрані бризок, на ньому "Google" білим кольором, перш ніж він вийде з ладу. Ніякого "Android" сплеск-екрану після цього, ні будь-яка завантажувальна анімація. Тому я не думаю, що ADB ще працює ...
9exceptionThrower9

Відповіді:


14

Є кілька способів зробити це:

  • 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іншого, інше, щоб схопити журнал, коли лог-код починає прокручуватися!

Редагувати:

Будьте в курсі, існують відмінності у використанні 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, щоб це зробити і обійти це! )

Будьте обережні і переконайтеся, що розділ правильний, і двічі перевірити та повторно перевірити, якщо потрібно, піти від комп'ютера, зробити перерву, повернутися знову і ще раз перевірити, це може призвести до жахливих помилок, прошийте неправильний файл у неправильний розділ ... добре знизує


3
Це відмінна ідея, але одна проблема .... adb працює, лише якщо демон adb може виявити пристрій. Якщо телефон не завантажився успішно, adb не працює. Отже, "цикл завантаження", коли вам знадобиться logcat, найбільше не вийде, і це наразі не так, як я це намагаюся. Єдине, у чому ви маєте доступ до команд, яким не важливо, чи успішно завантажився телефон, це "швидка завантаження". Яка альтернатива в цьому випадку тоді?
9exceptionThrower9

@ 9exceptionThrower9 відредагував мою відповідь, щоб включити концепцію fastboot і відповісти у вашому коментарі, fastboot не спрацює :)
t0mm13b

Єдиною альтернативою, яку я можу придумати, є швидка завантаження cacheта dataрозділення розділу - я не відповідаю ні за що, якщо ви продовжите! І спробуйте прошивати ROM знову через CWM. Ще краще , забути про FastBoot і використовувати CWM витирати як кеш і дані , це звучить як bootloop пов'язано з BORKED кеша або даних ...
t0mm13b

Що цікавить, що саме ви зробили, щоб перейти до завантажувальної програми - це важливе питання, і ви хочете знати, які кроки ви зробили?
t0mm13b

Я змінив ядро ​​Android (maguro) для Galaxy Nexus, зокрема файл "socket.h", щоб замінити реєстрацію INET з дослідницьким проектом моєї команди FINS (який витягує протоколи Інтернету в простір користувачів для дослідників мережі). Змінивши цей файл (лише декілька рядків), я успішно перекомпілював ядро, вставив це ядро ​​у дерево збірки Android maguro, відновив зображення системи Android і потім промайнув нові файли відновлення, завантаження, системи та userdata.img у файл телефон ...
9exceptionThrower9

0

Ви можете використовувати LiveBoot. Це в магазині Google Play. Це зробить саме те, що ви просите.


Що робити, якщо я отримав завантажувач? Чи можна це зробити за допомогою кабелю USB?
beppe9000
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.