Thông báo khởi động Android để gỡ lỗi?


23

Tôi đang cố gắng tìm hiểu xem liệu Android (ví dụ Galaxy Nexus, Nexus S và / hoặc Motorola Xoom) có đi kèm với một số khả năng để tạo nhật ký "khởi động" hay không. . Có ai biết cách kích hoạt điện thoại để nhổ tệp nhật ký này hoặc bật chế độ khởi động "dài dòng" (và in các tin nhắn thực tế đến thiết bị đầu cuối của máy tính Linux mà bạn đã kết nối với điện thoại) không?

Điện thoại của tôi bị kẹt trong "vòng lặp khởi động" với bản dựng được sửa đổi hiện tại của tôi và tôi muốn gỡ lỗi nếu có thể.

Ngoài ra, có ai biết bất kỳ tài nguyên hoặc hướng dẫn hữu ích nào giải thích cách dễ dàng "hack" điện thoại để thực hiện việc này (không gây rối với phần cứng) không? Hoặc của bất kỳ diễn đàn nào mà câu hỏi của tôi có thể đã được hỏi nhưng ở dạng tối nghĩa hơn?

Đây là một vấn đề khó chịu gần đây, vì vậy bất kỳ trợ giúp sẽ được đánh giá rất cao!


tôi biết nó bắt đầu ghi vào logcat từ rất sớm, nhưng nó sẽ bị xóa sau khi nó khởi động lại. nó sẽ bắt đầu viết ngay khi nó hiển thị "boot animation" (hoặc thậm chí sớm hơn một chút).
Ryan Conrad

2
Làm thế nào bạn có thể truy cập logcat mà không có "adb"? Adb chỉ hoạt động khi điện thoại ở trạng thái ổn định, điều này mâu thuẫn với toàn bộ điểm tôi đoán là tại sao logcat tồn tại (ai quan tâm nếu điện thoại khởi động thành công, không cần nhiều công cụ).
9exceptionThrower9

adb là một trong những dịch vụ đầu tiên bắt đầu. nếu bạn thấy hoạt hình khởi động, adb đã chạy. adb thậm chí có sẵn khi bạn ở chế độ phục hồi.
Ryan Conrad

Chà, tôi không chắc là tôi đang xem hoạt hình khởi động mà bạn đang nói đến. Sau biểu tượng "sạc pin", điện thoại bị treo ở màn hình giật gân có chữ "Google" màu trắng trước khi gặp sự cố. Sau đó, không có màn hình giật gân "Android" hoặc bất kỳ hoạt hình khởi động nào. Vì vậy, tôi không nghĩ ADB vẫn hoạt động ...
9exceptionThrower9

Câu trả lời:


14

Có một vài cách để làm điều này:

  • cat /proc/last_kmsg > /sdcard/last_kernel_message_log.txt
  • dmesg > /sdcard/kernel_boot_log.txt
  • cắm cáp usb với điện thoại thông minh đã tắt. Sau đó đưa ra lệnh adb logcattừ thiết bị đầu cuối cmd hoặc Linux của Windows, nó sẽ chờ đợi thiết bị được phát trực tuyến, bây giờ cấp nguồn cho điện thoại thông minh. Logcat sẽ bắt đầu cuộn xuống sau đó.

Vì bạn bày tỏ sự quan tâm trong việc tìm ra điện thoại của một người trong giai đoạn khởi động bao xa trước khi nó gặp sự cố , những phương pháp đó sẽ giúp ích. Vấn đề là bạn cần phải khá nhanh để lấy nhật ký của kernel (hai phương thức đầu tiên được hiển thị ở trên).

Những gì tôi sẽ làm là cái này, trên hộp Arch Linux của tôi, hai cửa sổ đầu cuối, một cái cho adb logcatcái kia, để lấy nhật ký, phút logcat bắt đầu cuộn xuống!

Chỉnh sửa:

Hãy nhận biết, có sự khác biệt với việc sử dụng adbfastboot!

fastboothoạt động khác nhau, nó chỉ được sử dụng để flash hình ảnh vào các phân vùng được chỉ định và gắn chặt hơn với quy trình bộ tải khởi động, nghĩa là nó có thể hiểu cơ chế bộ tải khởi động. Nó cũng yêu cầu:

  • trong Windows, đặc quyền 'Quản trị viên' để thực thi nó
  • trong Linux, đặc quyền 'root'

Lý do nó yêu cầu là vì nó bỏ qua một số đầu vào / đầu ra của phần cứng, và do đó, không "nói" trong adbgiao thức, thay vào đó, nó là để "nói chuyện" trực tiếp với bộ tải khởi động. Một cái gì đó không thể được thực hiện như một người dùng bình thường. Đây là sự giúp đỡ cho việc sử dụng 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

Một cách sử dụng nổi tiếng fastbootlà để flash chẳng hạn, để flash một hình ảnh phục hồi : sudo fastboot flash recovery recovery.img, một cách khác là trực tiếp flash một hình ảnh thô , sudo fastboot flash system system.img. Để biết thêm về trường hợp phát triển kernel, sử dụng cái này fastboot boot new_kernel, cái này tạm thời tải xuống kernel mới và khởi động bằng cách sử dụng mà không cần chạm vào boot của boot-loader.

Ngoài ra còn có một giới hạn về kích thước của một hình ảnh thô cần phải được flash, khi tôi nói hình ảnh thô, tôi đang đề cập đến một tập tin có .imgphần mở rộng, hình ảnh không được vượt quá 128Mb. ( Tôi đã phát hiện ra điều này khi phát triển ics4blade, sau khi quá trình xây dựng hoàn thành, system.img là 162Mb và tôi đã cố gắng flash nó nhưng fastboot đã từ chối! nó! )

Hãy thận trọng và đảm bảo phân vùng là chính xác, kiểm tra lại và kiểm tra lại một lần nữa, nếu cần, rời khỏi máy tính, nghỉ ngơi, quay lại lần nữa và kiểm tra lại, đây là nơi nó có thể trở nên sai lầm khủng khiếp, flash tập tin sai vào phân vùng sai ... cũng nhún vai


3
Đây là một ý tưởng tuyệt vời, nhưng một vấn đề .... adb chỉ hoạt động nếu trình nền adb có thể phát hiện thiết bị. Nếu điện thoại chưa khởi động thành công, adb không hoạt động. Vì vậy, một "vòng lặp khởi động", khi bạn cần logcat nhất sẽ không hoạt động, và nó không phải lúc này khi tôi thử nó. Điều duy nhất bạn có quyền truy cập vào lệnh khôn ngoan mà không quan tâm nếu điện thoại đã khởi động thành công là "fastboot". Thế nào là một sự thay thế trong trường hợp này?
9exceptionThrower9

@ 9exceptionThrower9 đã chỉnh sửa câu trả lời của tôi để bao gồm khái niệm về fastboot và để trả lời trong nhận xét của bạn, fastboot sẽ không hoạt động :)
t0mm13b

Sự thay thế duy nhất mà tôi có thể nghĩ đến là, để fastboot xóa cachedataphân vùng - tôi không chịu trách nhiệm cho bất cứ điều gì không mong muốn nếu bạn tiến hành! Và thử flash ROM lại thông qua CWM. Thậm chí tốt hơn , hãy quên fastboot và sử dụng CWM để xóa cả bộ nhớ cachedữ liệu , có vẻ như bootloop là do bộ đệm hoặc dữ liệu bị borked ...
t0mm13b

Về vấn đề quan tâm, chính xác bạn đã làm gì để đưa nó vào bootloop - đó là một câu hỏi quan trọng và muốn biết bạn đã thực hiện những bước nào?
t0mm13b

Tôi đã sửa đổi nhân Android (maguro) cho Galaxy Nexus, đặc biệt là tệp "socket.h" để ghi đè đăng ký INET với dự án nghiên cứu FINS của nhóm tôi (giúp đưa các giao thức internet vào không gian người dùng cho các nhà nghiên cứu mạng). Sau khi sửa đổi tệp này (chỉ vài dòng), tôi đã biên dịch lại kernel thành công, chèn kernel này vào cây xây dựng maguro Android, xây dựng lại hình ảnh hệ thống Android và sau đó flash các tệp recovery, boot, system và userdata.img mới vào điện thoại ...
9exceptionThrower9

0

Bạn có thể sử dụng LiveBoot. Nó có trong Cửa hàng Google Play. Nó sẽ làm những gì bạn đang yêu cầu.


Nếu tôi có bootloop thì sao? Có cách nào để làm điều đó với cáp USB không?
beppe9000
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.