디버깅을위한 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, 다른 하나 는 로그 로그를 스크롤하기 시작합니다.

편집하다:

adb와 fastboot! 를 사용하면 차이점이 있습니다 .

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

내가 생각할 수있는 유일한 대안은 빠른 부팅 cache과 data파티션 삭제를하는 것입니다. 계속 진행해도 아무런 책임이 없습니다! 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.