작년에 발매된 구글 픽셀3에는 안드로이드 9.0이 기본으로 설치되어 있다. 개발을 위해서 루트 권한 등이 필요할 경우가 있는데, 루팅하는 방법에 대해서 간단히 적어 둔다.

준비물

  • Google Pixel 3
    • 스토어 버전도 있고 통신사별 버전도 있는데, 통신사 버전의 경우 부트로더에 락이 걸려 있는 경우가 있으므로 권장하지 않는다. 되도록이면 구글 스토어 버전을 구하도록 하자.
    • 기본적으로 안드로이드 Pie (9)가 설치되어서 오는 관계로 아래의 메뉴 등은 모두 안드로이드 9 기준이다. 메뉴는 영문 기준으로 한다.
  • PC (여기서는 MacOS Mojave로 진행)
  • PC와 폰을 연결할 수 있는 USB-C 케이블
  • 폰 내용 백업

MacOS에서 adb 간단하게 설치하기

구글 사이트를 따라서 해도 되는데 brew를 쓰고 있는 경우라면 다음과 같이 설치 가능하다.

% brew update
% brew tap homebrew/cask
% brew cask install android-sdk

설치후에 터미널에서 adbfastboot 명령이 실행 가능한지 확인해 두자.

1. 부트로더 언락 준비

제일 먼저 해야 할 일은 폰의 부트 로더의 락을 푸는 일이다. 이걸 해야 기존 OS를 수정하거나 덮어 쓰는 일이 가능하다. 스톡 안드로이드 OS를 루팅하는 것도 가능하고, 커스텀 OS를 설치하는 일도 가능한데, 일단 가장 기본적으로 해야 할 일은 부트로더를 언락하는 일이다.

부트로더를 언락하면 재부팅 후에 OS가 초기화되므로 백업을 하지 않았다면 반드시 하고 시작한다.

  1. Settings 앱 실행
  2. System -> About phone -> Build number (가장 아래)를 7회 탭한다. (암호가 걸려 있다면 여기서 입력한다) 개발자 모드가 열린다.
  3. About phone -> Advanced -> Developer options
  4. 첫 화면에서 “OEM unlocking”을 탭해서 켠다. 경우에 따라서 이 단추 자체가 탭이 안되도록 비활성화되어 있는 경우가 있는데 이 경우에는 부트로더 언락 자체가 불가능하다. 주로 통신사에서 구매하는 경우 (미국의 경우 Verizon) 락이 걸려 있는데 풀 방법도 없다고 하므로 루팅용인 경우에는 스토어 버전을 구하는 것이 안전하다.
  5. 한화면 반 정도 아래로 스크롤해서 Debugging 섹션으로 가면 “USB debugging”메뉴가 있는데 활성화시켜 준다.
  6. PC와 USB케이블로 연결한다. 처음 연결하는 경우 해당 PC의 RSA키를 추가할 것을 묻는데 여기서 Allow를 선택한다. 이걸 허용하지 않으면 PC와 통신할 수 없다.
  7. 이제 터미널을 띄워서 다음 명령으로 폰과 연결되어 있는지 확인한다. 다음과 같이 연결된 폰의 목록이 나와야 한다.
    % adb devices
    List of devices attached
    012345678 device
    

2. 부트로더 언락

이제 폰을 bootloader 모드로 부팅하자. 다음 명령을 실행한다.

% adb reboot bootloader

재부팅해서 까만 화면에 빨간색으로 “Fastboot mode”라고 나오면 된다. 부트로더 언락을 위해 다음 명령을 실행한다.

% fastboot flashing unlock

이후 정말 언락할지 물어보게 되는데 폰에서 볼륨키를 이용해서 “Unlock the bootloader”를 선택하고 전원 버튼을 눌러주면 된다. 언락이 안되는 폰의 경우 여기서 진행이 되지 않는다.

이후에 다음 명령으로 폰을 다시 부팅한다.

% fastboot reboot

폰이 재부팅하면 초기화되어 계정 로그인부터 해야 한다. Developer Options에서 USB debugging을 다시 켜도록 하자.

3. TWRP 실행

TWRP는 안드로이드용 복구 프로그램이다. 커스텀 펌웨어나 루팅을 위해서는 시스템 이미지를 수정해야 하는데 이를 도와주는 프로그램이다. OS와는 별도의 복구 파티션에 설치 되므로 본체 OS가 망가졌을 때에도 유용하게 사용할 수 있다.

  • Pixel3 다운로드에서 twrp-3.2.3-0-blueline.img 또는 상위 버전을 다운받으면 된다. (Pixel3 의 코드네임이 blueline이다)

주의할 것은, 필자의 경우 위 파일만 필요했다. 검색해 보면 같은 사이트에서 .zip 파일도 받아 설치하라고 되어 있었는데 이 경우 루팅이 안되고 무한부팅하는 현상이 발생하므로, .img 파일만 받으면 된다.

이제 다시 fastboot 모드로 들어간다.

% adb reboot bootloader

이제 TWRP로 부트하자.

% fastboot boot twrp-3.2.3-0-blueline.img
Downloading 'boot.img'                             OKAY [  1.858s]
booting                                            OKAY [  4.542s]
Finished. Total time: 6.450s

폰이 자동적으로 다시 부팅해서 복구 모드로 진입하고 TWRP메뉴가 나올 것이다.

  1. “Enter Password”라고 나오면 Cancel을 탭한다.
  2. 하단의 “Swipe to Allow Modifications”를 우측으로 밀어내자.
  3. TWRP 메인 메뉴가 표시된다. 대략 다음과 같이 생겼다.

twrp

주의할 것은 위 명령은 TWRP를 실행하는 것이지 설치하는 것은 아니다. 따라서 다시 TWRP로 가야 할 경우에는 bootloader 모드에서 위 명령을 다시 실행하도록 하자.

아무것도 안하고 잠시 있으면 화면 락이 걸리는데 너무 자주 걸린다면 Settings -> Screen (상단 메뉴의 다섯개 아이콘 중 가운데 것) -> Enable screen timeout 을 언체크한다. 메인 메뉴로 돌아 가려면 좌측 하단의 좌측 화살표를 탭하면 된다.

3. 루팅 - Magisk 설치

안드로이드 루팅에는 여러가지 옵션이 있는데, 스톡 OS에 루팅만 하기 위해서는 요즘에는 Magisk가 대세인 것으로 보인다. Magisk를 설치하도록 하자.

  1. Magisk 릴리즈 페이지 에 가서 최신 릴리즈를 다운 받는다. 현재 시점에서는 다음 파일을 받는다.
    • Magisk-v18.0.zip
    • [MagiskManager-v6.1.0.apk)(https://github.com/topjohnwu/Magisk/releases/download/manager-v6.1.0/MagiskManager-v6.1.0.apk)
  2. adb로 Magisk 설치 이미지를 올린다. 반드시 TWRP 모드 상태에서 하도록 하자.
    % adb push Magisk-v18.0.zip /sdcard/
    Magisk-v18.0.zip: 1 file pushed. 32.8 MB/s (4188255 bytes in 0.122s)
    
  3. TWRP 메인 메뉴에서 Install -> Magisk-v18.0.zip 선택 -> “Swipe to confirm Flash”를 밀어 Magisk를 설치한다. 설치 후에는 “Reboot System”을 선택해서 리부팅하면 된다. 이후 “Install TWRP App?”을 물어 보는데 “Do Not Install”을 선택해서 바로 부팅하도록 하자.
  4. OS로 부팅하게 된다. 이제 Magisk 앱을 설치한다.
    % adb install MagiskManager-v6.1.0.apk
    Success
    
  5. 메뉴에서 Magisk 앱을 찾아서 실행해 본다. “Latest Version”과 “Installed Version”이 모두 녹색으로 체크되어 있다면 루팅이 제대로 된 것이다!

magisk_app

루팅이 되어 있지 않다면 Installed Version 쪽에 빨간색 아이콘이 나오게 되므로, 이 경우 Magisk 설치를 다시 해 보도록 하자.

root 로 쉘을 띄우고 싶다면 adb shell 을 실행해서 su -를 해 보면 된다.

% adb shell
blueline:/ $ su -
blueline:/ # id
uid=0(root) gid=0(root) groups=0(root) context=u:r:magisk:s0

#프롬프트가 나오면 성공이다!

이제 루팅이 되었으므로 관련된 프로그램을 설치할 수 있다. 명령행을 주로 쓴다면 여러가지 기본 명령을 한번에 설치하기 위해 BusyBox를 권장한다.

네트워크 패킷 덤프가 필요하다면 구글 플레이에서 패킷 캡처 앱도 검색이 가능 하지만 명령행이 필요 하면 Android Tcpdump를 설치하도록 하자.

기타

Magisk 삭제

루팅을 해제하고 싶다면 Magisk를 삭제하도록 하자.

OS가 부팅하면 Magisk 앱도 삭제하도록 하자.

기본 OS 재설치하기 (공장 초기화)

루팅을 시도하다가 잘못되는 일이 있으면 설치된 OS가 깨져서 무한 부팅되거나 하는 일이 있다. 이 경우라면 기본 OS 이미지로 재설치하는게 제일 빠른 방법이다.

  1. Pixel 3 (blueline) OS 기본 이미지 다운로드 여기서 최신 버전의 Link 를 눌러서 .zip 파일을 받는다. 특정 버전을 사용하는 경우 해당 통신사용 버전 등을 받아야 하니까 주의하자.
    • zip 파일을 풀어 놓는다. 현재 일자 최신 버전은 blueline-pq1a.190105.004-factory-49adfd52.zip인데 다음과 같이 풀어 놓는다.
      % unzip blueline-pq1a.190105.004-factory-49adfd52.zip
      
  2. fastboot 모드로 부팅한다. adb를 사용할 수 있다면 adb reboot bootloader로 진입이 가능하지만 adb연결이 안되는 경우라면, 전원을 끄고 (전원 버튼을 화면이 꺼질 때 까지 누르고 있는다) 나서 전원 버튼 + 볼륨 하단 버튼을 동시에 누르면 부트로더 화면으로 진입한다. 두 버전을 계속 누르고 있으면 바로 부팅해 버리므로 전원을 켜지면 바로 손을 떼고 아무것도 손대지 않으면 된다.
  3. 다음 명령으로 OS를 재설치한다. 시간이 좀 걸릴 수 있다.
    % cd blueline-pq1a.190105.004
    % ./flash-all.sh
    
  4. 재부팅하면 OS가 자동으로 부팅되며 기존 내용은 삭제되므로 처음부터 다시 설정해야 한다.

참고 사이트