Hata ayıklama için Android açılış mesajları?


23

Android (yani Galaxy Nexus, Nexus S ve / veya Motorola Xoom) bir "önyükleme" günlüğü oluşturmak için bir çeşit yetenek ile gelip gelmediğini anlamaya çalışıyorum. (bir tür Linux açılış ekranı gibi) Telefonun, çarpmadan önce önyükleme aşamalarında ne kadar uzağa gideceğini belirlemede son derece yardımcı olacaktır (örneğin, ilk aşamadaki bootloader, ana bootloader, daha sonra çekirdek yüklemeleri, vb.). Telefonun bu günlük dosyasını açmasını veya "ayrıntılı" bir açılış modunu etkinleştirmesini (ve telefonun bağlı olduğu Linux bilgisayarın terminaline gerçek mesajları yazdırmasını) nasıl bilen var mı?

Telefonum mevcut değiştirilmiş yapıma sahip bir "önyükleme döngüsüne" takılıyor ve mümkünse hata ayıklamak istiyorum.

Alternatif olarak, telefonun bunu kolayca nasıl "kesebileceğini" açıklayan yararlı herhangi bir kaynak veya öğretici de var mı? Veya sorumun sorulduğu ama daha karanlık bir formda herhangi bir forumda mı?

Bu son zamanlarda sinir bozucu bir sorun oldu, bu yüzden herhangi bir yardım çok takdir edilecektir!


Çok erken logcat yazmaya başladığını biliyorum, ancak yeniden başlatıldığında temizlenir. "boot animasyon" u gösterdiği anda yazmaya başlamalıdır (veya belki biraz daha erken).
Ryan Conrad

2
"adb" olmadan logcat'e nasıl erişirsiniz? Adb yalnızca telefonun kararlı bir durumda olması durumunda çalışır, bu, logcat'ın neden var olduğuna dair tahmin ettiğim tüm noktaya aykırıdır (telefonun başarılı bir şekilde önyükleme yapması kimin umrunda, araca gerek yok).
9exceptionThrower9

adb, ilk başlayan hizmetlerden biridir. Önyükleme animasyonu görüyorsanız, adb zaten çalışıyor. adb, kurtarma modundayken bile kullanılabilir.
Ryan Conrad

Bahsettiğin önyükleme animasyonunu gördüğümden emin değilim. Batarya "şarj" sembolünden sonra, telefon kilitlenmeden önce üzerinde beyaz "Google" bulunan açılış ekranına takılır. Bundan sonra "Android" açılış ekranı veya önyükleme animasyonu yok. Bu yüzden ADB'nin henüz çalıştığını sanmıyorum ...
9exceptionThrower9

Yanıtlar:


14

Bunu yapmanın birkaç yolu var:

  • cat /proc/last_kmsg > /sdcard/last_kernel_message_log.txt
  • dmesg > /sdcard/kernel_boot_log.txt
  • akıllı telefon kapalıyken usb kablosunu takın. Ardından komutu adb logcatWindows cmd veya Linux terminalinizden verin, aygıtın çevrimiçi olmasını bekleyecek, şimdi akıllı telefonu açacaktır. O zaman logcat kaymaya başlamalıdır.

Telefonunun, çarpmadan önce önyükleme aşamalarında ne kadar uzağa gideceğini bulmakla ilgilendiğinizi belirttiğinden , bu yöntemlerin yardımcı olması gerekir. Mesele şu ki çekirdeğin kütüğünü kapmak için oldukça hızlı olmanız gerekiyor (yukarıda gösterilen ilk iki yöntem).

Yapacağım şey şu, Arch Linux kutumda, iki terminal penceresi, biri için diğeri için, adb logcatlogcat'ın kaymaya başladığı dakikayı kapmak için!

Düzenle:

Farkında BE, kullanarak farklılıklar vardır adbve fastboot!

fastbootfarklı çalışır, yalnızca görüntüleri belirtilen bölümlere yanıp sönmek için kullanılır ve önyükleyici yükleme işlemine daha fazla bağlanır, yani önyükleyici yükleme mekanizmasını anlayabilir. Ayrıca şunu gerektirir:

  • Windows altında, 'Yönetici' yürütme ayrıcalığı
  • Linux altında 'root' ayrıcalığı

Bunun gerektirmesinin nedeni, donanımın belirli bir giriş / çıkışını atlaması ve dolayısıyla adbprotokolde "konuşmaması" , bunun yerine doğrudan önyükleyici ile "konuşması" olmasıdır. Normal bir kullanıcı olarak yapılamayan bir şey. İşte kullanımı için yardım 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

İyi bilinen bir kullanım, fastbootörneğin bir kurtarma görüntüsünün yanıp sönmesi için yanıp sönmek içindir: bir sudo fastboot flash recovery recovery.imgdiğeri doğrudan ham görüntüyü flaşlamak içindir sudo fastboot flash system system.img. Çekirdek geliştirme durumu için daha fazlası için, bunun kullanılması fastboot boot new_kernel, bu geçici olarak yeni bir çekirdeği indirir ve bunu önyükleyicinin kendi önyüklemesine dokunmadan kullanarak bunu başlatır.

Ayrıca, ham görüntülerin parlaması gereken ham resmin boyutunda bir sınırlama vardır, ham görüntü dediğimde, .imguzantısı olan bir dosyaya atıfta bulunurum, görüntünün 128Mb'yi geçmemesi gerekir. ( İcs4blade'i geliştirirken bunu yapıma tamamladıktan sonra, system.img 162Mb olduğunu öğrendim ve flaş etmeye çalıştım ama fastboot reddetti! o! )

Dikkatli çalışın ve bölümün doğru olduğundan emin olun ve tekrar kontrol edin ve gerekirse tekrar kontrol edin, gerekirse bilgisayardan uzaklaşın, ara verin, tekrar geri dönün ve tekrar kontrol edin; yanlış dosya yanlış bölüme flash ... iyi silkiyor


3
Bu harika bir fikir, ancak bir sorun .... adb yalnızca adb arka plan programı aygıtı algıladığında çalışır. Telefon başarıyla açılmadıysa, adb çalışmıyor. Yani bir "boot-loop", logcat'a ihtiyacınız olduğunda çoğu işe yaramaz ve denemem şu an değildir. Telefonun başarılı bir şekilde önyüklenip yüklenmediğini önemsemeyen komut bilgisine erişebildiğiniz tek şey "fastboot". Öyleyse bu durumda alternatif nedir?
9exceptionThrower9

@ 9exceptionThrower9, fastboot kavramını içerecek ve yorumunuza cevap verecek şekilde cevabımı düzenledi,
fastboot

Aklıma gelen tek alternatif, hızlıca silmek cacheve databölmeyi silmek. - Devam ederseniz istenmeyen bir şeyden sorumlu değilim! Ve ROM'u tekrar CWM ile yanıp sönmeyi deneyin. Daha da iyisi , unutun fastboot ve her iki silmek için CWM kullanmak önbelleği ve verileri bootloop olduğu gibi ... nedeniyle borked önbellek veya verilere sesler
t0mm13b

İlgi alanı olarak, onu bootloop'a getirmek için tam olarak ne yaptınız - bu çok önemli bir soru ve hangi adımları attığınızı bilmek ister misiniz?
t0mm13b

Galaxy Nexus için Android çekirdeğini (maguro), özellikle de INET kaydını ekibimin araştırma projesi FINS'a (internet protokollerini ağ araştırmacıları için kullanıcı alanına çeken) çeken geçersiz kılmak için "socket.h" dosyasını değiştirdim. Bu dosyayı değiştirdikten sonra (sadece birkaç satır), çekirdeği başarıyla yeniden derledim, bu çekirdeği Android maguro yapı ağacına yerleştirdim, Android sistem görüntüsünü yeniden oluşturdum ve sonra yeni kurtarma, önyükleme, sistem ve userdata.img dosyalarını parlattım. telefon ...
9exceptionThrower9

0

LiveBoot'u kullanabilirsiniz. Google Play Mağazasında. Ne istiyorsan onu yapacak.


Ya bootloop varsa? Bunu bir USB kablosuyla yapmanın bir yolu var mı?
beppe9000
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.