30

안드로이드 루팅, 정석대로 배워보자

안드로이드 사용자라면 누구나 루팅 생각을 한 번쯤은 해봤을 겁니다. 꽤 어렵게 보이기 때문에 국내외의 개발자들이 만든 매크로 툴들을 많이 사용하죠. 사실 저도 예전 갤럭시 넥서스 쓰던 시절까지는 그렇게 했었습니다. 이번에 원플러스 원을 쓰면서는 직접 해보았는데 의외로 쉬운 데다가 여러 가지 장점을 알게 되었습니다.

왜 편한 툴 놓고 정석대로 하느냐고요? 몇가지 장점이 있습니다:

  •  어떠한 기기에서도 1)기기에 맞는 커스텀 리커버리가 있어야 한다는 제약은 있습니다만  대부분의 기기에 맞는 커스텀 리커버리가 존재합니다. 동일한 방법으로 루팅 가능: 자기가 원하는 기기에 대한 툴이 따로 나올 때까지 마냥 기다릴 순 없겠죠?
  • 새로운 버전의 커스텀 리커버리나 커스텀 롬들을 자유롭게 적용 가능: 이런 걸 지원하는 툴도 있지만 안그런 것들도 있습니다
  • 오류가 발생할 가능성이 줄어든다: 단계마다 직접 하나씩 확인하면서 하기 때문에 일괄적으로 처리하는 매크로 툴에 비해 오류 발생 가능성이 낮습니다
  • 오류가 발생하더라도 적절한 대응 가능
  • 루팅이 어떠한 과정으로 이루어지는지 제대로 이해할 수 있다: 루팅과 커스텀 롬이 올라가는 과정을 이해하면 보다 심도 있는 적용이나 실험이 가능합니다

먼저 루팅이 전반적으로 어떠한 과정을 거쳐 이루어지는지를 설명하고 그 다음에 실제로 넘어가겠습니다. 원플러스 포럼의 한 사용자가 작성한 가이드를 참고하였습니다.

루팅 과정 개괄

루팅(rooting)이란 기기에 대한 최고 권한(root)을 갖게 만드는 걸 뜻합니다. 원래는 기기의 보호 등의 목적으로 잠겨있습니다. 이를 열고 루트 권한을 얻게 되면 아시다시피 다양한 설정 변경이 가능합니다. 루팅은 크게 다음의 세 단계로 진행됩니다:

  1. 부트로더 언락하기: 기기의 내부 메모리에 기록이 가능하도록 (원래는 닫혀있는) 빗장을 여는 단계입니다.
  2. 커스텀 리커버리 설치: 원래 안드로이드 시스템 자체에 있는 복구(리커버리) 프로그램을 다른 개발자들이 만든 것으로 교체합니다. 이렇게 해서 커스텀 롬을 내부에 설치하거나 내장 메모리나 캐시 등을 삭제(wipe)하는 등의 행위가 가능하게 됩니다.
  3. 루팅 (혹은 커스텀 롬 설치): 이제 커스텀 리커버리를 사용하여 본래는 기록을 못하게 잠겨있는 부분에 특정한 코드를 삽입하여 루트 권한을 얻습니다. 기본 롬 대신 커스텀 롬(CyanogenMod와 같은)의 설치를 원할 경우 이 단계에서 해도 됩니다. 루팅이 이미 된 커스텀 롬을 설치해야 (대부분의 커스텀 롬이 루팅이 이미 되어 있습니다) 커스텀 롬과 루팅의 효능을 동시에 누릴 수 있습니다.

준비물

명령창(command window)

도스 시절부터 컴퓨터를 쓰신 분들에겐 익숙한 창입니다. 대부분의 작업이 이 창에서 진행되기 때문에 필수적입니다. 보통 윈도우키+R을 눌러서 cmd라고 입력하는 것으로 실행시킵니다만 여기에는 한 가지 골치 아픈 점이 있습니다. 바로 원하는 폴더까지 가려면 cd 명령어로 폴더 패스(주소)를 지리하게 입력해야 한다는 것이죠.

보통의 경우, 아래에서 설명할 작업들은 다음과 같은 주소에서 이루어지게 됩니다:

C:\Users\사용자 이름\Downloads\android-sdk-windows\platform-tools

매번 이러한 주소를 입력해서 들어가는 건 골치 아픈 일이죠. 훨씬 간단한 방법이 있습니다. 탐색기 창에서 작업할 폴더에 마우스를 올려놓고 Shift 키를 누르고 오른쪽 클릭을 하면 ‘여기에 명령창 열기’라는 메뉴 항목이 보입니다. 이것을 선택하면 됩니다.

제가 윈도우 한글판을 안 써서 정확한 메뉴 항목의 우리말 이름은 잘 몰라요

제가 윈도우 한글판을 안 써서 정확한 메뉴 항목의 우리말 이름은 잘 몰라요

안드로이드 디버그 브릿지(ADB)

구글 공식 페이지에서 안드로이드 소프트웨어 개발자 키트(SDK)를 받거나 필요한 요소들만 모아놓은 슬림버전을 받을 수 있습니다. 공식 SDK의 용량이 상당히 크기는 한데 저는 공식 키트를 선호합니다.

공식 SDK를 받았을 경우, 압축을 풀고 해당 폴더에서 Manager.exe를 실행시킵니다. 설치할 프로그램을의 목록이 나옵니다. 매우 방대한 목록인데 우리에게 필요한 것은 단 네 가지 뿐입니다. Tools에서는 Android SDK Tools, Android SDK Platform-tools와 Extras에서 Android Support Library, Google USB Driver를 선택하여 설치합니다.

설치가 잘 되었는지를 확인하기 위해 platform-tools 폴더에서 명령창을 열고 다음과 같이 입력합니다:

adb version

만일 “Android Debug Bridge version ㅇㅇㅇㅇ”과 같은 메시지가 뜬다면 성공입니다. 안 뜨면 다시 설치를 해보세요.

 

커스텀 리커버리

커스텀 리커버리는 TWRP가 가장 유명합니다. 기기마다 맞는 버전의 TWRP가 있기 때문에 구글 검색을 통해 다운받아야 합니다.

구글에서 이렇게 검색하세요

구글에서 이렇게 검색하세요

SuperSU

SuperSU는 루팅용 바이너리 코드의 대표주자입니다. 여기서 다운받을 수 있습니다. 이건 기기를 타지 않아요.

 

기기 배터리 충전

최소한 절반 이상은 충전이 되어 있어야 작업 도중에 전원이 나가 소위 말하는 ‘벽돌’이 되는 불상사를 방지할 수 있습니다.

 

자료 백업

첫 번째 단계인 부트로드 언락에서 기기에 있던 자료는 모두 삭제됩니다. 앱, 설정, 심지어 내부 SD카드의 사진, 음악 등 모든 것이 삭제되기 때문에 그전에 중요한 자료는 미리 백업을 해두어야 합니다.

 

드라이버 설치

ADB용 범용 드라이버를 설치합니다. 이후 작업에서 컴퓨터는 기기를 안드로이드 폰이 아닌 ADB 기기로 인식하게 됩니다. 따라서 기존 폰 드라이버가 아닌 ADB 드라이버가 필요합니다.

 

커스텀 롬 (선택사항)

단순한 루팅이 아닌 CyanogenMod와 같은 커스텀 롬을 설치하려면 당연히 커스텀 롬이 있어야겠죠? 보통 .zip 파일로 되어 있습니다. 커스텀 롬을 설치할 경우 보통 롬에 더해서 구글 앱들을 모아놓은 GApps를 따로 받아야 합니다.

 

부트로더 언락하기

• 기기를 끕니다. 패스트부트(fastboot) 모드로 켭니다. 보통은 꺼진 상태에서 전원 버튼 + 볼륨 다운 (또는 업)을 길게 누르면 됩니다. 생소한 부팅 화면이 뜨면서 안드로이드 깡통 로봇이 누워있는 모습이 보일 겁니다.

• 기기를 USB로 컴퓨터에 연결합니다. 연결이 잘 되었는지 확인하기 위해 platform-tools 폴더에서 (당연한 것이므로 앞으로의 설명에서는 생략합니다) 명령창을 열고 다음의 명령어를 입력합니다:

fastboot devices

• 제대로 연결이 된 경우 위 명령어를 입력하면 기기의 시리얼 넘버가 뜹니다. 아무런 전시 결과가 없다면 연결이 제대로 되지 않은 것입니다. 기기 드라이버를 다시 확인해 보아야 합니다.

• 이제 부트로더를 언락하는 명령어를 입력합니다. 이 명령어를 입력하면 기기의 모든 정보가 사라집니다:

fastboot oem unlock

• 그 다음 재부팅을 시키기 위해 다음의 명령어를 입력합니다:

fastboot reboot

• 재부팅이 되고 나면 기기의 설정 메뉴로 들어가서 USB 디버그 모드를 활성화시켜야 합니다. 설정 > 기기 정보 > 빌드 넘버 부분을 7회 탭하면 개발자 옵션이 새로 설정 메뉴에 뜹니다. 다시 설정 > 개발자 옵션 > USB 디버깅을 체크합니다.

 

커스텀 리커버리 설치

• 다시 기기를 끄고 패스트부트 모드로 들어갑니다.

• 위에서 받은 커스텀 리커버리(TWRP) 파일(파일명 예: openrecovery-twrp-2.7.1.1-flo.img)을 platform-tools 폴더에 복사합니다.

• 명령창을 열고 다음의 명령어를 입력하여 커스텀 리커버리를 설치합니다:

fastboot flash recovery 파일명
(예: fastboot flash recovery openrecovery-twrp-2.7.1.1-flo.img)

여기서 만일 “Size too large” 같은 메시지가 뜨면서 제대로 설치가 되지 않는다면 엉뚱한 기기용의 커스텀 리커버리의 설치를 시도하고 있는 것일 수 있습니다. 저의 경우, 넥서스 7에 원플러스 원의 커스텀 리커버리를 깔려고 했더니 이런 메시지가 나오더군요.

• 설치가 끝나면 다시 재부팅을 합니다:

fastboot reboot
(UPDATE: 몇몇 기기의 경우, 커스텀 리커버리를 플래쉬하고 나서 이 명령어로 리부팅을 하면 커스텀 리커버리가 제대로 설치가 안 되는 경우가 있습니다. 직접 버튼을 눌러서 리부팅하면 해결됩니다)

• 이제 리커버리 모드로 들어가 커스텀 리커버리를 실행시켜야 합니다. 넥서스와 같은 기기에서는 패스트부트 모드에서 볼륨 버튼 키를 사용하여 recovery를 선택하여 실행시킬 수 있습니다. 각각의 기기마다 이 방법은 다르기 때문에 직접 검색을 해보셔야 합니다. 예를 들어 원플러스 원의 경우에는 전원 버튼 + 볼륨 다운을 누르면 리커버리로 들어갑니다.

 

루팅 (혹은 커스텀 롬 설치)

크게 두 가지 경우로 나눌 수 있습니다. 기본 롬에 루팅만 하기, 또는 루팅이 된 커스텀 롬 얹기입니다. 아래의 과정에서 둘 중의 하나만 하시면 됩니다.

 

기본 롬에 루팅만 하기

• 위에서 받은 SuperSU를 platform-tools 폴더에 복사

• 리커버리 모드 진입

• 이 파일을 기기로 복사해야 합니다. 컴퓨터에서 명령창을 열어 다음의 명령어 입력:

adb push 파일이름 /sdcard/
(예: adb push UPDATE-SuperSU-v2.02.zip /sdcard/)

이 “adb push” 명령어는 기기의 내부 SD카드에 파일을 복사할 수 있습니다. 일반적으로 안드로이드 기기에 컴퓨터의 파일을 복사하는 방식으로도 얼마든지 복사할 수 있지만 앞서의 과정에서 내부 SD카드의 내용물이 삭제되기 때문에 이 방법을 씁니다. 명령어만 이해하면 기존 방식보다 더 빨리 처리가 가능합니다.

• 리커버리 모드에서 실행되고 있는 TWRP에서 Install을 선택, SuperSU-v2.02.zip 파일을 선택합니다.

• 아래에 확인을 위한 슬라이더가 뜹니다. 아이폰 잠금해제 하듯 스와이프하면 이제 설치를 시작하고 재부팅합니다.

• 끝!

 

루팅이 된 커스텀 롬 설치하기

• 이미 루팅이 된 커스텀 롬을 설치할 경우 SuperSU를 굳이 복사할 필요가 없습니다.

• 대신 기기에 해당 커스텀 롬을 복사해야겠죠? 해당 롬 .zip 파일을 platform-tools 폴더에 복사해 놓고 다음의 명령어를 입력합니다:

adb push 파일이름 /sdcard/ (예: adb push cm-11-20140825-NIGHTLY-flo.zip /sdcard/)

• 같은 방법으로 GApps도 복사합니다.

• 리커버리 모드로 들어가서 TWRP를 띄웁니다. Wipe > Factory Reset으로 스와이프합니다.

• Install을 선택하고 커스텀 롬 .zip 파일을 선택합니다. TWRP는 파일들을 최대 10개까지 연속으로 설치할 수 있습니다. GApps도 추가하고 설치를 진행하면 더 편합니다.

• 끝!

 

위의 방법을 사용하시면 웬만한 안드로이드 기기들은 모두 루팅 및 커스텀 롬 설치가 가능합니다. 저도 원플러스 원을 루팅하면서 자신이 생겨서 넥서스 7도 뚝딱 해치웠어요. 문의사항들은 댓글로 달아주세요. 제가 아는 범위 내에서 열심히 알려드리겠습니다.

삼성 갤럭시 시리즈는 부트로더 등의 구조가 일반적인 안드로이드 기기와 달라 위의 방식을 그대로 적용하기가 어렵습니다. 다른 갤럭시 유저인 Paul You님께서 갤럭시 S4의 루팅 튜토리얼 두 가지(링크1, 링크2)를 알려주셨습니다.

   [ + ]

1. 기기에 맞는 커스텀 리커버리가 있어야 한다는 제약은 있습니다만  대부분의 기기에 맞는 커스텀 리커버리가 존재합니다.

Comments 30

    1. Post
      Author
  1. 삼성 갤럭시 시리즈들은 부트로더가 언락되있고
    fastboot 모드 진입이 따로 없는거 같던데
    그럼 이 방법으론 루팅이 불가능한건가요?

    1. Post
      Author
  2. 삼성 Galaxy S4 I545사용자 입니다.
    ADB 는 잘 설치 됬고, 볼룸 업이랑 파워버튼 누르니까 바로 리커버리 나오네요. 명령창에서 fastboot devices 눌러도 안나오고요.
    어떡하죠?

  3. 저도 삼성 갤럭시 탭 2 10.1 사용자 입니다. 리커버리 모드에 진입은 하는데, fastboot device 에서 인식을 못하네요. 더이상 다음 단계로 넘어가지 못하는데 어떻게 하면 좋을까요?

  4. 레노버팹플러스라고 안드로이드인대 나온지1달밖에안됫는대 루팅될까요?

    1. Post
      Author
  5. 아래에서 두번째 댓글이 무슨의미인지 잘 모르겠지만, 갤럭시 A8도 가능한 방법인가요? 정말 다 호환이 가능한지?

    1. Post
      Author
  6. 좋은 글 잘 읽었습니다, 혹시 루팅의 원리에 대해 좀더 전체적인 관점에서 글을 포스팅해주실 수 있나요
    다음과 같이 궁금한 점이 있습니다.

    (1) 커스텀 리커버리 이미지를 플래싱할 때 부트 파티션과 리커버리 파티션에 하는 2가지 방법이 있다고 들었는데 차이가 어떻게 되는 것인지 궁금합니다.

    (2) 그리고 커스텀 리커버리 적용 후 단순히 supersu 앱만 설치하거나 아니면 아예 supersu가 적용된 커스텀 롬으로 갈아끼우는 2가지 방법이 있는 것으로 알 고 있는데 이때
    전자의 경우 supersu 앱이 어떤 파티션의 어떤 경로에 설치되는 것인지
    후자의 경우 커스톰 롬을 갈아끼운다는 것이 정확히 어떤 의미인지(특정 파티션을 바꾼다는 것인지, 그렇다면 어느 파티션을 말하는 것인지)

    가 궁금합니다. 안드로이드의 기본 구조에 대한 이해가 얕아 궁금한 점이 생기네요
    그리고 기기별 루팅을 위한 파편화된 포스트말고 혹시 루팅 전반에 관해 기술적으로 정리된 문서나 사이트 있으면 추천해주시면 정말 감사하겠습니다.

    1. Post
      Author
    2. 모든 롬은 /system 파티션에 설치가 되구요,
      supersu 앱만 설치하시면 아무런 기능도 하지 못합니다. 그러므로 권한 부여(chmod 775)가 필요한데,이걸 미리 해놓은게 루팅된 커스텀롬 입니다.
      루팅된 커스텀롬은 앞서 말씀드렸듯이 /system 파티션을 갈아 끼워서 설치되는 것이구요,/system/app/supersu 관련 디렉터리에 권한 부여(chmod 775)가 되어 있습니다.

  7. 글 잘 읽었습니다. 루팅을 공부 차원에서 해보려고 하는데요. 삼성 폰이 예외적인 부분이 많은 것 같은데, 커스텀 리커버리가 지원되는 디바이스 중에 Nexus 시리즈도 있는지요?

    1. Post
      Author
  8. 덕분에 궁굼하던 몇가지가 풀렸습니다..
    하지만 아직 의문인점이 기기마다 모델 번호가 있는데 (예를들어 노트3 를 외국에선 N900과 N905로 나뉘는데)
    그리고 공식펌웨어 경우 나라마다 펌웨어 넘버가 다르더군요..
    N900 을 가지고 있다면 커스텀롬 N905를 설치 못하는건가요?
    최근엔 어찌저찌 중국산 탭s 를 루팅하고 엡스토어를 설치하는 방법은 성공했습니다
    이 기기가 T705C 인데 중국판만 뒤에 C가 붙고 유럽은 C가 안붙고 그냥 T705더군요 중국판기기에 유럽 커스텀롬을 올리는게 가능할련지요?
    그리고 현제 기기에서 쓰는 안드로이드 버전과 상관없이 커스텀롬 버전이 달라도 설치가 될까요?

  9. studypro 10 루팅하려는데 fastboot devices 에서 아무것도 안뜹니다. 도와주십쇼.ㅠㅠ

  10. Partition flashing is not allowed 에러가 납니다. 부트로더 언락했고 설명대로 따랐는데 안되는군요..

  11. 루팅시 제한되는 어플들 (뱅킹앱,결제앱 etc…) 사용을 위해 언루팅이 필요한데 커스텀 리커버리가 씌워진 상태 입니다.
    그냥 supersu 메뉴에 ‘완전한 루팅 권한 해제’ 라는 메뉴가 있던데 해결 될까요?…

    1. Post
      Author

      네, 제가 은행앱 등을 사용할 때 그렇게 해서 썼습니다. 사용한 다음에는 다시 커스텀 리커버리를 불러서 supersu 설치를 하고요. 조금 귀찮긴 해도 둘 다를 누릴 수 있습니다.

  12. sm-p555l 사용하고 있는데요 twrp부터가 안 찾아지네요 없는 경우도 있는건가요?

  13. 감사합니다.
    기기를 USB로 컴퓨터에 연결시 연결 인식을 못하네요…ㅠㅠ
    유니버셜 ADB 드라이버를 재 설치 해봐도…
    여기서 스톱입니다. ㅠㅠ

Leave a Reply