디버깅을위한 Android 부팅 메시지?


23

Android (예 : Galaxy Nexus, Nexus S 및 / 또는 Motorola Xoom)에 "부팅"로그를 생성하는 기능이 있는지 확인하려고합니다. (리눅스 부팅 화면과 비슷 함) 폰이 충돌하기 전에 부팅 단계에서 휴대 전화가 얼마나 멀리 떨어져 있는지 파악하는 데 큰 도움이 될 것입니다 (예 : 1 단계 부트 로더, 메인 부트 로더, 커널로드 등). 누구든지 전화를 사용하여이 로그 파일을 추출하거나 "자세한"부팅 모드를 활성화하는 방법을 알고 있습니까 (전화가 연결된 Linux 컴퓨터의 터미널에 실제 메시지를 인쇄)?

내 전화가 현재 수정 된 빌드와 함께 "부팅 루프"에 갇히고 가능한 경우 디버깅하고 싶습니다.

또는 누구나 쉽게 전화를 해킹하여이를 수행하는 방법을 설명하는 유용한 리소스 나 자습서를 알고 있습니까? 또는 내 질문이 있지만 더 모호한 형식의 포럼이 있습니까?

이것은 최근의 실망스러운 문제 였으므로 어떤 도움이라도 대단히 감사하겠습니다!


나는 그것이 매우 일찍 logcat에 쓰기 시작한다는 것을 알고 있지만 재부팅되면 지워집니다. "부트 애니메이션"이 표시 되 자마자 쓰기를 시작해야합니다.
라이언 콘래드

2
"adb"없이 어떻게 logcat에 액세스하겠습니까? Adb는 전화가 안정적인 상태에있을 때만 작동하므로 logcat이 존재하는 이유 (전화기가 성공적으로 부팅되는지 여부를 신경 쓰지 않는 도구)가 무엇인지에 대한 모든 요점과 모순됩니다.
9exceptionThrower9

adb는 처음 시작되는 서비스 중 하나입니다. 부팅 애니메이션이 표시되면 adb가 이미 실행 중입니다. 복구 모드에있을 때도 adb를 사용할 수 있습니다.
Ryan Conrad

글쎄, 나는 당신이 말하는 부팅 애니메이션을보고 있는지 확실하지 않습니다. 배터리 "충전"기호 뒤에 전화기가 충돌하기 전에 스플래시 화면에서 "Google"이 흰색으로 표시됩니다. 그 후 "Android"스플래시 화면 또는 부팅 애니메이션이 없습니다. 그래서 나는 ADB가 아직 작동하지 않는다고 생각합니다 ...
9exceptionThrower9

답변:


14

이를 수행하는 몇 가지 방법이 있습니다.

  • cat /proc/last_kmsg > /sdcard/last_kernel_message_log.txt
  • dmesg > /sdcard/kernel_boot_log.txt
  • 스마트 폰을 끈 상태에서 USB 케이블을 꽂습니다. 그런 다음 adb logcatWindows cmd 또는 Linux 터미널에서 명령 을 실행 하면 장치가 온라인 상태가 될 때까지 기다리면 스마트 폰의 전원이 켜집니다. logcat은 스크롤을 시작해야합니다.

휴대 전화가 부팅되기 전에 휴대 전화가 부팅 단계에서 얼마나 멀리 떨어져 있는지 파악하는 데 관심이 있으므로 이러한 방법이 도움이 될 것입니다. 문제는 커널 로그 (위의 첫 두 가지 방법)를 빠르게 가져와야한다는 것입니다.

내가 할 일은 내 아치 리눅스 상자에서 두 개의 터미널 창, 하나는 adb logcat, 다른 하나 는 로그 로그를 스크롤하기 시작합니다.

편집하다:

adbfastboot! 를 사용하면 차이점이 있습니다 .

fastboot다르게 작동하면 이미지를 지정된 파티션으로 플래시하는 데만 사용되며 부트 로더 프로세스와 더 밀접하게 연결됩니다. 즉, 부트 로더 메커니즘을 이해할 수 있습니다. 또한 다음이 필요합니다.

  • Windows에서 '관리자'권한으로 실행
  • 리눅스에서 '루트'권한

이것이 필요한 이유는 하드웨어의 특정 입출력을 우회하기 때문에 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_kernelthis를 사용하면 부트 로더 자체 부팅을 건드리지 않고 임시로 새 커널을 다운로드하여 부팅합니다.

플래시 해야하는 원시 이미지의 크기에는 제한이 있습니다. 원시 이미지를 말할 때 .img확장명 이있는 파일을 참조하고 있으며 이미지는 128Mb를 초과해서는 안됩니다. ( ics4blade를 개발할 때이 사실을 알았습니다. 빌드가 완료 된 후 system.img는 162Mb 였고 플래시를 시도했지만 빠른 부팅이 거부되었습니다! 그것! )

주의를 기울이고 파티션이 올바른지 확인하고 필요한 경우 다시 확인하고 다시 확인하십시오. 필요한 경우 컴퓨터에서 멀어지고 휴식을 취한 후 다시 방문하여 다시 확인하십시오. 잘못된 파일을 잘못된 파티션에 플래시 ... 잘 으 rug


3
이것은 좋은 생각이지만 한 가지 문제입니다 ... adb는 adb 데몬이 장치를 감지 할 수있는 경우에만 작동합니다. 전화가 성공적으로 부팅되지 않으면 adb가 작동하지 않습니다. 따라서 "부트 루프"는 logcat이 가장 필요할 때 작동하지 않으며 시도하는 순간에는 작동하지 않습니다. 전화가 성공적으로 부팅되었는지 신경 쓰지 않는 명령 방식으로 액세스 할 수있는 유일한 것은 "fastboot"입니다. 이 경우 대안은 무엇입니까?
9exceptionThrower9

@ 9exceptionThrower9는 fastboot의 개념을 포함하고 귀하의 의견에 답변하기 위해 내 대답을 편집했습니다. fastboot는 작동하지 않습니다 :)
t0mm13b

내가 생각할 수있는 유일한 대안은 빠른 부팅 cachedata파티션 삭제를하는 것입니다. 계속 진행해도 아무런 책임이 없습니다! CWM을 통해 ROM을 다시 플래시하십시오. 더 나은 방법fastboot를 잊고 CWM을 사용하여 캐시데이터를 모두 지우는 것입니다. 이것은 bootloop가 캐시 또는 데이터로 인해 발생한 것처럼 들립니다.
t0mm13b

관심사로, 부트 루프를 만들기 위해 정확히 무엇을 했습니까? 그것은 중요한 질문이며 어떤 단계를 밟고 싶습니까?
t0mm13b

Galaxy Nexus 용 Android 커널 (maguro), 특히 "socket.h"파일을 수정하여 팀의 연구 프로젝트 인 FINS (네트워크 연구원을 위해 사용자 공간으로 인터넷 프로토콜을 끌어 옴)로 INET 등록을 재정의했습니다. 이 파일을 수정 한 후 (몇 줄만) 커널을 성공적으로 다시 컴파일하고이 커널을 Android maguro 빌드 트리에 삽입 한 후 Android 시스템 이미지를 다시 빌드 한 다음 새 복구, 부팅, 시스템 및 userdata.img 파일을 전화 ...
9exceptionThrower9

0

LiveBoot를 사용할 수 있습니다. Google Play 스토어에 있습니다. 그것은 당신이 요구하는 것을 할 것입니다.


부트 루프가 발생하면 어떻게합니까? USB 케이블로 그렇게 할 수 있습니까?
beppe9000
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.