Android Fastboot 알아보기

프로필

2018. 9. 30. 2:33

이웃추가

안드로이드 하드웨어 관련해서 다루어거나 커스텀 펌웨어 관련해서 이것저것 하다보면, ADB 와 같이 자주 사용하게 되는 툴이 있습니다. 바로 부트로더 언락 등의 작업을 할 수 있으며, System, Boot, Recovery 등 다양한 영역에서의 펌웨어를 교체 작업을 할 수 있는 Fastboot 입니다.

이번 시간에는 Fastboot 에 대해서 한 번 세세하게 알아보는 시간을 가져볼까 합니다.


주의.

삼성 단말기는 android fastboot 대신 download mode를 사용하여

구글 레퍼런스 단말기인 갤럭시 넥서스를 제외하고 불가능합니다.



Fastboot 란?

Fastboot 는 안드로이드 기기의 플래시 메모리에 직접 데이터를 쓰거나, 진단 할 수 있는 엔지니어링 프로토콜입니다. PC와 USB 연결하여 Bootloader Unlock, Recovery Mode, System, Kernel 등의 안드로이드 기기의 펌웨어들에 대해서 플래시 하는데 가장 많이 사용하고 있습니다.


Fastboot 로 할 수 있는 것

1. Bootloader Unlock

2. Recovery Mode, System, Kernel 등에 대한 펌웨어 변경

3. 공장초기화

등등..


Fastboot 다운로드

Fastboot 같은 경우 Android ADB 와 같이 배포되고 있으며, Linux 및 Mac OS 같은 경우 명령어로도 설치가 가능합니다.

설치파일 이용

명령어 이용

- Linux

$ sudo apt-get install android-tools-fastboot

- Mac OS (Homebrew)

$ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" $ brew cask install android-platform-tools

- Mac OS (MacPorts)

$ sudo port install android $ sh /opt/local/share/java/android-sdk-macosx/tools/android // 이후 platform-tools 선택 후 설치 $ echo 'export PATH=$PATH:/opt/local/share/java/android-sdk-macosx/platform-tools' >> ~/.bash_profile $ source ~/.bash_profile

Fastboot Mode 진입하기

보통 Fastboot 모드는 Bootloader 와 동일하며, 간혹 제조사에서 별도적으로 Fastboot Mode 를 따로 만들어 놓는 경우도 있습니다. (ex. Sony) ADB 명령어를 통해서 진입을 하던가 아니면 제조사에서 공식적으로 제공해주고 있는 커맨드 키를 이용하여 진입이 가능합니다.

ADB 이용 진입방법

$ adb reboot bootloader

!참고. 삼성 같은 경우

- Galaxy 제품 군 같은 경우 Fastboot 명령어를 사용 할 수 없으며 Download Mode 와 Odin 을 이용합니다.


Fastboot 명령어

fastboot 명령어는 아래와 같은 형태를 가지고 있습니다.

$ fastboot [<option>] <command>

command 목록

update <filename> // update.zip 파일로 펌웨어를 변경합니다. flashall // boot, recovery, system 등 패키지 안의 모든 파일을 설치합니다. flash <partition> [ <filename> ] // 해당 파티션에 패키지 파일을 설치합니다. erase <partition> // 해당 파티션의 데이터를 삭제합니다. format <partition> // 해당 파티션을 포멧합니다. getvar <variable> // 해당 부트로더의 변수를 출력합니다. boot <kernel> [ <ramdisk> ] // 해당 커널 이미지로 부팅합니다. devices // 연결된 기기 목록을 가져옵니다. continue // 자동으로 부팅합니다. reboot // 재부팅 reboot-bootloader // 부트로더로 재부팅합니다. help // 도움말

option 목록

-w // 사용자 데이터 및 캐시 삭제 (파티션 유형에 맞추어 포맷) -u // 포맷 전 파티션 삭제 방지 -s <specific device> // 특정 장치 지정 -l // 연결된 장치 목록 -p <product> // 주요 장치 명 지정 -c <cmdline> // 커맨드 라인 입력 -i <vendor id> // 제조사 USB ID 지정 -b <base_addr> // 커스텀 커널 베이스 주소 재지정 -n <page size> // 낸드 페이지 크기 재지정 -S <size>[K|M|G] // 크기 지정

기기 연결 유무 확인

Bootloader 또는 Fastboot Mode 에서 기기와 PC의 연결 상태를 확인하려면 아래의 명령어를 이용하면 됩니다.

커맨드 이용

$ fastboot devices

옵션 이용

$ fastboot -l

재부팅

fastboot 역시 reboot 명령어를 통해서 adb 와 동일하게 재부팅이 가능합니다.

시스템(ROM)으로 부팅

$ fastboot reboot

부트로더로 재부팅

$ fastboot reboot-bootloader

리커버리로 재부팅

$ fastboot reboot recovery

- 특정 기기 같은 경우 해당 명령어가 작동되지 않습니다.


부트로더 정보 보기

fastboot 를 이용해서 bootloader 등 다양한 기기 정보를 파악 할 수 있습니다.

$ fastboot oem device-info

부트로더 언락/리락 하기

fastboot 를 이용해서 가장 많은 작업을 하는 것은 Bootloader Unlock 및 Relock 작업입니다. 간단하게 oem unlock 커맨드를 이용하여 가능합니다.

부트로더 언락

$ fastboot oem unlock // 구글 기준 2015년 이후 기기 $ fastboot flashing unlock // 또는 $ fastboot flashing unlock_critical

부트로더 리락

$ fastboot oem lock // 구글 기준 2015년 이후 기기 $ fastboot flashing lock

특정 이미지 로 부팅하기

테스트를 진행할때 가장 많이 사용하는 기능이 아닌가 싶습니다. boot 명령어를 이용해서 특정 이미지 파일로 부팅이 가능합니다.

$ fastboot boot "이미지 파일" // 예시 $ fastboot boot recovery.img

특정 이미지 덮어씌우기

순정 복구 용으로 주로 사용하기도 하지만, 근래에는 커스텀 목적으로도 많이 사용하는 기능이 아닌가 싶습니다. fastboot flash 명령어로 특정 파티션에 원하는 이미지 파일을 덮어 씌울 수 있습니다.

$ fastboot flash "파티션" "이미지 파일" // 예시 $ fastboot flash recovery recovery.img

특정 ROM 파일 설치하기

만약 리커버리로 부팅이 힘든 경우 update 명령어를 통해서 특정 ROM 파일을 설치가 가능합니다.

$ fastboot -w // 초기화 $ fastboot update "ROM.zip" // 설치

파티션 포멧 변경하기

특정 파티션에 대해서 포멧 형식을 변경하려면 format 명령어를 통해서 가능합니다.

$ fastboot format:"포멧 형식" "파티션" // 예시 $ fastboot format:ext4 userdata

OEM 커맨드 목록

fastboot 커맨드 중 우리가 쉽게 잘 알지못하는 명령어들로 oem 명령어가 있습니다. 해당 명령어는 제조사마다 다르며, 지원하는 것 역시 차이가 있습니다. 아래에는 대략적으로 공통적으로 있는 것들에 대해서 적어놓았습니다.

$ fastboot oem unlock-go $ fastboot oem frp-unlock $ fastboot oem frp-erase $ fastboot oem enable reduced-version $ fastboot oem device-info $ fastboot oem enable-charger-screen // 충전 화면 활성화 $ fastboot oem disable-charger-screen // 충전 화면 비활성화 $ fastboot oem enable-bp-tools $ fastboot oem disable-bp-tools $ fastboot oem enable-hw-factory $ fastboot oem disable-hw-factory $ fastboot oem select-display-panel $ fastboot oem off-mode-charge enable // 전원 연결시 자동 부팅 해제 $ fastboot oem off-mode-charge disable // 전원 연결시 자동 부팅 설정 $ fastboot oem ramdump enable $ fastboot oem ramdump disable $ fastboot oem uart enable // UART 활성화 $ fastboot oem uart disable // UART 비활성화 $ fastboot oem hwdog certify begin $ fastboot oem hwdog certify close $ fastboot oem get-imei1 // IMEI 정보 $ fastboot oem get-meid $ fastboot oem get-sn // 시리얼 넘버 $ fastboot oem get-bsn $ fastboot oem get_verify_boot_status

해당 커맨드들은 제조사 마다 다르기 때문에 참고 하시고, 추가적으로 파악해보시려면 아래의 링크를 통해 XDA 게시글을 확인해주시길 바랍니다.

https://www.xda-developers.com/how-to-discover-hidden-fastboot-commands/


전원 연결시 부팅

oem 명령어를 통해서 전원이 연결 될 경우 자동으로 부팅이 되게 만들 수 있습니다.

자동 부팅되게 만들기

$ fastboot oem off-mode-charge 0 // 또는 $ fastboot oem off-mode-charge disable

원상복구

$ fastboot oem off-mode-charge 1 // 또는 $ fastboot oem off-mode-charge enable

전원 연결시 충전 화면

우리가 전원이 꺼진 상태에서 충전 여부를 확인 할 수 있는 방법으로 전원 연결시 들어오는 충전 화면이 있습니다. 해당 화면 역시 전원을 연결하면 자동으로 부팅되게 만들수 있듯이 oem 명령어로 on/off 가 가능합니다.

충전 화면 활성화

$ fastboot oem enable-charger-screen

충전 화면 비활성화

$ fastboot oem disable-charger-screen

마무리

간단하게 fastboot 명령어들에 대해서 한 번 알아보았습니다. 개인적으로 쓰는 기능이 한정적이다보니 잘 모르고 있던 기능들도 얼추 어느정도는 알게 된 것 같습니다. 조금 조금씩 틀린 것도 있을 수 있으니까, 해당 내용에 대해서는 댓글로 적어주시면 감사하겠습니다.


참조

시류아
시류아 IT·컴퓨터

솔루션 개발하는 잉여공학도입니다. 취미로 IT·테크 관련 리뷰·칼럼 적고 있습니다. / 네이버 인플루언서 / 이웃·서로이웃 감사합니다! / <제안·문의> 쪽지 또는 siryua@kakao.com