Pesan boot-up Android untuk debugging?

23

Saya mencoba mencari tahu apakah Android (yaitu Galaxy Nexus, Nexus S, dan / atau Motorola Xoom) hadir dengan semacam kemampuan untuk menghasilkan log "boot-up". (seperti layar boot-up Linux) Akan sangat membantu dalam mencari tahu seberapa jauh ponsel seseorang dalam tahap boot sebelum crash (seperti bootloader tahap pertama, bootloader utama, kemudian pemuatan kernel, dll.). Adakah yang tahu cara mengaktifkan ponsel untuk memuntahkan file log ini atau mengaktifkan mode boot-up "verbose" (dan mencetak pesan aktual ke terminal komputer Linux di mana ponsel Anda terhubung)?

Ponsel saya macet di "boot-loop" dengan build saya yang dimodifikasi saat ini dan saya ingin melakukan debug jika memungkinkan.

Atau, ada yang tahu sumber daya yang berguna atau tutorial yang menjelaskan cara mudah "meretas" telepon untuk melakukan ini (tidak main-main dengan perangkat keras)? Atau di forum mana pun pertanyaan saya mungkin diajukan tetapi dalam bentuk yang lebih tidak jelas?

Ini merupakan masalah yang membuat frustrasi baru-baru ini, jadi bantuan apa pun akan sangat dihargai!

9exceptionThrower9
sumber
saya tahu itu mulai menulis ke logcat sejak awal, tetapi itu dihapus setelah reboot. itu harus mulai menulis segera setelah itu menunjukkan "animasi boot" (atau bahkan mungkin sedikit lebih cepat).
Ryan Conrad
2
bagaimana Anda mengakses logcat tanpa "adb"? Adb hanya berfungsi ketika ponsel dalam keadaan stabil, yang bertentangan dengan seluruh poin saya kira mengapa ada logcat (siapa yang peduli jika ponsel berhasil melakukan booting, tidak banyak membutuhkan alat).
9exceptionThrower9
adb adalah salah satu layanan pertama yang dimulai. jika Anda melihat animasi boot, adb sudah berjalan. adb bahkan tersedia saat Anda berada dalam mode pemulihan.
Ryan Conrad
Yah, saya tidak yakin saya melihat animasi boot yang sedang Anda bicarakan. Setelah simbol "pengisian" baterai, telepon menggantung di splashscreen dengan "Google" putih di atasnya sebelum crash. Tidak ada splashscreen "Android" setelah itu, atau animasi boot apa pun. Jadi saya kira ADB belum berfungsi ...
9exceptionThrower9

Jawaban:

14

Ada beberapa cara untuk melakukan ini:

  • cat /proc/last_kmsg > /sdcard/last_kernel_message_log.txt
  • dmesg > /sdcard/kernel_boot_log.txt
  • tancapkan kabel usb dengan ponsel pintar dimatikan. Kemudian keluarkan perintah adb logcatdari Windows cmd atau terminal Linux Anda, ia akan menunggu perangkat untuk on-line, sekarang nyalakan ponsel pintar. Logcat akan mulai bergulir kemudian.

Karena Anda menyatakan minat untuk mencari tahu seberapa jauh ponsel Anda dalam tahap booting sebelum crash , metode-metode itu akan membantu. Masalahnya adalah Anda harus cukup cepat untuk mengambil log kernel (dua metode pertama yang ditunjukkan di atas).

Apa yang akan saya lakukan adalah ini, pada kotak Linux Arch saya, dua jendela terminal, satu untuk adb logcat, yang lain, untuk mengambil log saat logcat mulai bergulir!

Edit:

Sadarilah, ada perbedaan dengan menggunakan adbdan fastboot!

fastbootbekerja secara berbeda, ini hanya digunakan untuk mem-flash gambar ke partisi yang ditentukan, dan lebih terikat dengan proses boot-loader, yaitu, ia dapat memahami mekanisme boot-loader. Ini juga mensyaratkan bahwa:

  • di bawah Windows, hak istimewa 'Administrator' untuk menjalankannya
  • di Linux, hak istimewa 'root'

Alasan yang dibutuhkannya adalah karena mem-bypass input / output perangkat keras tertentu, dan dengan demikian, tidak "berbicara" dalam adbprotokol, melainkan untuk "berbicara" langsung ke boot-loader. Sesuatu yang tidak bisa dilakukan sebagai pengguna biasa. Berikut ini adalah bantuan untuk penggunaan 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

Penggunaan yang terkenal fastbootadalah untuk flashing misalnya, untuk mem-flash gambar pemulihan:, yang sudo fastboot flash recovery recovery.imglain adalah untuk langsung mem-flash gambar mentah sudo fastboot flash system system.img,. Untuk lebih lanjut tentang kasus pengembangan kernel, menggunakan ini fastboot boot new_kernel, ini untuk sementara mengunduh kernel baru dan boot menggunakannya tanpa menyentuh boot sendiri boot-loader.

Ada juga batasan pada ukuran gambar mentah yang perlu di-flash, ketika saya mengatakan gambar mentah, saya merujuk ke file yang memiliki .imgekstensi, gambar tidak boleh melebihi 128Mb. ( Saya menemukan ini ketika mengembangkan ics4blade, setelah pembangunan selesai, system.img adalah 162Mb, dan saya mencoba untuk mem-flashnya tetapi fastboot menolak! Untuk menghindari batasan, harus membuat file zip CWM yang dapat di-flash untuk melakukan itu dan berkeliling itu! )

Berlatih dengan hati-hati dan pastikan partisi sudah benar dan periksa kembali dan periksa lagi, jika perlu, menjauhlah dari komputer, istirahat, kembali lagi, dan periksa lagi, ini adalah tempat yang salah, flash file yang salah ke partisi yang salah ... well shrugs

t0mm13b
sumber
3
Ini adalah ide bagus, tetapi satu masalah .... adb hanya berfungsi jika daemon adb dapat mendeteksi perangkat. Jika ponsel belum berhasil boot, adb tidak berfungsi. Jadi "boot-loop", ketika Anda membutuhkan logcat, sebagian besar tidak akan berfungsi, dan saat ini saya belum mencobanya. Satu-satunya hal yang Anda miliki untuk mengakses perintah-bijaksana yang tidak peduli jika telepon berhasil di-boot adalah "fastboot". Apa alternatif dalam hal ini?
9exceptionThrower9
@ 9exceptionThrower9 telah mengedit jawaban saya untuk memasukkan konsep fastboot dan menjawab dalam komentar Anda, fastboot tidak akan bekerja :)
t0mm13b
Satu-satunya alternatif yang dapat saya pikirkan adalah, untuk menghapus fastboot cachedan datapartisi - saya tidak bertanggung jawab atas hal yang tidak diinginkan jika Anda melanjutkan! Dan coba flashing ROM lagi melalui CWM. Lebih baik lagi , lupakan fastboot dan gunakan CWM untuk menghapus cache dan data , sepertinya bootloop disebabkan oleh cache atau data yang
dibakar
Yang menarik, apa yang sebenarnya Anda lakukan untuk membuatnya bootloop - itu adalah pertanyaan penting dan ingin tahu langkah apa yang Anda ambil?
t0mm13b
Saya memodifikasi kernel Android (maguro) untuk Galaxy Nexus, khususnya file "socket.h" untuk mengesampingkan pendaftaran INET dengan proyek penelitian tim saya FINS (yang menarik protokol internet ke ruang pengguna untuk peneliti jaringan). Setelah memodifikasi file ini (hanya beberapa baris), saya berhasil mengkompilasi ulang kernel, memasukkan kernel ini ke dalam Android maguro build tree, membangun kembali gambar sistem Android, dan kemudian mem-flash file pemulihan, boot, sistem, dan file userdata.img yang baru ke dalam telepon ...
9exceptionThrower9
0

Anda dapat menggunakan LiveBoot. Itu ada di Google Play Store. Itu akan melakukan apa yang Anda minta.

Narkotiks
sumber
Bagaimana jika saya mendapat bootloop? Apakah ada cara untuk melakukannya dengan kabel USB?
beppe9000