Wiadomości rozruchowe Androida do debugowania?

23

Próbuję dowiedzieć się, czy system Android (tj. Galaxy Nexus, Nexus S i / lub Motorola Xoom) ma jakąś możliwość wygenerowania dziennika „boot-up”. (coś w rodzaju ekranu rozruchowego systemu Linux) Byłoby niezwykle pomocne w ustaleniu, jak daleko telefon się znajduje na etapach rozruchu, zanim ulegnie awarii (np. bootloader pierwszego etapu, bootloader główny, potem ładowanie jądra itp.). Czy ktoś wie, jak włączyć telefon, aby wypluł ten plik dziennika lub włączyć „pełny” tryb uruchamiania (i drukować aktualne komunikaty na terminalu komputera z systemem Linux, do którego jest podłączony telefon)?

Mój telefon utknął w „pętli rozruchowej” z moją obecną zmodyfikowaną wersją i chciałbym go debugować, jeśli to możliwe.

Alternatywnie, ktoś zna jakieś przydatne zasoby lub samouczki, które wyjaśniają, jak łatwo „zhakować” telefon, aby to zrobić (bez bałaganu ze sprzętem)? Lub na forach, na których moje pytanie mogło zostać zadane, ale w bardziej niejasnej formie?

Był to ostatnio frustrujący problem, więc każda pomoc byłaby bardzo mile widziana!

9exceptionThrower9
źródło
wiem, że zaczyna pisać do logcat bardzo wcześnie, ale jest to usuwane po ponownym uruchomieniu. powinien zacząć pisać, gdy tylko wyświetli się „animacja rozruchu” (a może nawet nieco wcześniej).
Ryan Conrad,
2
jak uzyskasz dostęp do logcat bez „adb”? Adb działa tylko wtedy, gdy telefon jest w stanie stabilnym, co jest sprzeczne z całą kwestią, jak sądzę, dlaczego istnieje logcat (kogo to obchodzi, czy telefon pomyślnie się uruchamia, nie ma potrzeby używania narzędzia).
9exceptionThrower9,
adb to jedna z pierwszych uruchomionych usług. jeśli zobaczysz animację rozruchu, adb już działa. adb jest nawet dostępny, gdy jesteś w trybie odzyskiwania.
Ryan Conrad
Nie jestem pewien, czy widzę animację rozruchową, o której mówisz. Po symbolu „ładowania” baterii telefon zawiesza się na ekranie powitalnym z białym napisem „Google”, zanim się zawiesi. Po tym nie ma ekranu powitalnego „Android” ani żadnej animacji rozruchowej. Więc nie sądzę, aby ADB jeszcze
działało

Odpowiedzi:

14

Można to zrobić na kilka sposobów:

  • cat /proc/last_kmsg > /sdcard/last_kernel_message_log.txt
  • dmesg > /sdcard/kernel_boot_log.txt
  • podłącz kabel USB przy wyłączonym smartfonie. Następnie wydaj polecenie adb logcatz cmd lub terminala systemu Windows, zawiesi się ono, czekając na uruchomienie urządzenia, a teraz uruchom smartfon. Logcat powinien wtedy rozpocząć przewijanie.

Ponieważ wyraziłeś zainteresowanie ustaleniem, jak daleko jest telefon w fazie rozruchu, zanim ulegnie awarii , metody te powinny pomóc. Chodzi o to, że musisz być dość szybki, aby pobrać dziennik jądra (dwie pierwsze metody pokazane powyżej).

Chciałbym to zrobić, na moim Arch Linuxie, dwa okna terminala, jedno dla adb logcatdrugiego, aby pobrać dziennik, gdy tylko logcat zaczyna się przewijać!

Edytować:

Bądź świadomy, istnieją różnice w używaniu adbi fastboot!

fastbootdziała inaczej, służy tylko do flashowania obrazów na określonych partycjach i jest bardziej związany z procesem boot-loader, tzn. może zrozumieć mechanizm boot-loader. Wymaga również, aby:

  • w systemie Windows uprawnienie administratora do jego wykonania
  • pod Linuksem, uprawnienie „root”

Powodem, dla którego tego wymaga, jest to, że omija pewne wejścia / wyjścia sprzętu, a zatem nie „mówi” w adbprotokole, a raczej „mówi” bezpośrednio do modułu ładującego. Coś, czego nie można zrobić jako zwykły użytkownik. Oto pomoc dotycząca korzystania z 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

Znany eksploatacyjnej fastbootjest migać na przykład błysk obraz pomocniczy: sudo fastboot flash recovery recovery.imgkolejna jest bezpośrednio migać surowego obrazu sudo fastboot flash system system.img. Aby uzyskać więcej informacji na temat programowania jądra, użycie tego fastboot boot new_kernelpowoduje tymczasowe pobranie nowego jądra i uruchomienie go bez dotykania własnego rozruchu modułu ładującego.

Istnieje również ograniczenie rozmiaru surowego obrazu, które wymaga flashowania, kiedy mówię surowy obraz, mam na myśli plik, który ma .imgrozszerzenie, obraz nie może przekraczać 128 Mb. ( Dowiedziałem się tego podczas opracowywania ics4blade, po zakończeniu kompilacji system.img miał 162 MB i próbowałem go sflashować, ale Fastboot odmówił! Aby obejść to ograniczenie, musiałem utworzyć plik zip zip CWM, aby to zrobić i obejść to! )

Przećwicz ostrożność i upewnij się, że partycja jest poprawna, i ponownie sprawdź i sprawdź ponownie, jeśli to konieczne, odejdź od komputera, zrób sobie przerwę, wróć ponownie i ponownie sprawdź ponownie, w tym miejscu może się to potwornie popsuć flashuj niewłaściwy plik na niewłaściwą partycję ... dobrze wzrusza ramionami

t0mm13b
źródło
3
To świetny pomysł, ale jeden problem… adb działa tylko wtedy, gdy demon adb może wykryć urządzenie. Jeśli telefon nie uruchomił się pomyślnie, adb nie działa. Tak więc „pętla rozruchowa”, gdy najbardziej potrzebujesz logcata, nie zadziała i nie próbuję tego w tej chwili. Jedyną rzeczą, którą masz dostęp do poleceń, która nie obchodzi, czy telefon pomyślnie się uruchomił, jest „fastboot”. Jaka jest zatem alternatywa w tym przypadku?
9exceptionThrower9,
@ 9exceptionThrower9 zredagowałem moją odpowiedź, aby uwzględnić koncepcję fastboot i aby odpowiedzieć w komentarzu, fastboot nie zadziała :)
t0mm13b
Jedyną alternatywą, jaką mogę wymyślić, jest szybkie usunięcie skasowania partycji cachei data- nie ponoszę odpowiedzialności za nic złego, jeśli będziesz kontynuować! I spróbuj ponownie flashować ROM poprzez CWM. Co więcej , zapomnij o fastboocie i użyj CWM, aby wyczyścić pamięć podręczną i dane , wygląda na to, że bootloop jest spowodowany zepsutym cache lub danymi ...
t0mm13b
Co do interesu, co dokładnie zrobiłeś, aby dostać się do bootloopa - to kluczowe pytanie i chciałbyś wiedzieć, jakie kroki podjąłeś?
t0mm13b
Zmodyfikowałem jądro Androida (maguro) dla Galaxy Nexus, szczególnie plik „socket.h”, aby zastąpić rejestrację INET w projekcie badawczym FINS mojego zespołu (który wyciąga protokoły internetowe w przestrzeń użytkownika dla badaczy sieci). Po zmodyfikowaniu tego pliku (tylko kilka wierszy), zrekompilowałem jądro pomyślnie, wstawiłem to jądro do drzewa budowania maguro systemu Android, przebudowałem obraz systemu Android, a następnie sflashowałem nowe pliki odzyskiwania, rozruchu, systemu i userdata.img do pliku telefon ...
9exceptionThrower9
0

Możesz użyć LiveBoot. Jest w sklepie Google Play. Zrobi to, o co prosisz.

Narcotixs
źródło
Co jeśli dostanę bootloopa? Czy można to zrobić za pomocą kabla USB?
beppe9000