안녕하세요!

Icaros 이자, Se7eN 인 Winpower7 입니다! (으잉?)

 

오늘은 그 유명하고 빠릿하고 간지 좔좔 줄줄 흐른다고 알려져있는, TWRP 리커버리를 한번 포팅 시도를 해보겠습니다!

 

Twrp 리커버리란?

TeamWin 팀에서 만든 리커버리로써, 현제 많은 기기가 이용중인 CWM리커버리보다 강력하며 빠른 리커버리 입니다.

 

TeamWinRecoveryProject 의 약자로써, 국내에도 몇몇 기기에 포팅이 되어 많은 사랑을 받고 있습니다.

 

※참고로 본 블로그는 드레그 기능을 지원하지 않음으로, 맨 아래 보시면 TXT파일로 따로 저장한 파일잉 있습니다.

 

왼쪽 옵티머스 3D와 오른쪽 갤럭시 넥서스에 실행되고 있는, Twrp 리커버리 / http://cafe.naver.com/nexusdevelops/8514 / http://cafe.naver.com/nxss/230342)

 

위 사진 처럼, 터치, 배터리 퍼센트 표시기, 소프트키, 암호화 등의 CWM과 다른 기능들로 많은 신비함을 뿜어 내고 있답니다 ㅎㅎ

 

하지만 이런 리커버리....지금까지 포팅이 된 리커버리는 주로 ClcokworkMod 리커버리 입니다.

그럼 이제, Twrp 리커버리도 각 기기에 알맞게 포팅시도를 해볼까요?

 

안탑갑게도, 전 국내 LG 옵티머스Q2에 포팅시도를 하고 있지만, 아직까지 LG벽돌이 기다리고 있을뿐 ~_~;;

 

먼저 이 포팅법은 Rootzwiki 에 TeamWin 에서 직접 작성해준 글을, 제 흐접 영어 실력으로 번역한 글 입니다.

원문 : http://rootzwiki.com/topic/23903-how-to-compile-twrp-from-source/

 

일딴 제가 한국어로 조금 원문과 다르게 쉽게 번역을 하였습니다.

직역을 한곳엔 표시를 하였습니다.

 

1. 리커버리 소스 파일 교체

먼저 자신이 어떤 소스를 받았는지 알아야 합니다.

예전 제 글을 따라 오셨다면, http://minnote.net/117 이글에서 안드로이드 버전 마다~ 이 부분을 보시면

각각 받은 소스가 다릅니다.

 

일딴 현제 이 글에 나와있는 말은 진저브레드 소스 (CM7)과 아이스크림 샌드위치 소스 (CM9) 만 언급되었습니다.

CM10 소스 및 CM6 소스는 어떻게 되는지 잘 모르겠습니다.

※안드로이더스 카페 내 콜홍님이 CM10 역시 CM9 처럼 하면 된다고 알려주셨습니다.

 

* CM9/CM10 소스를 받으신 분

Cyanogen Mod 9 ICS 소스를 받으신 분은

https://github.com/TeamWin/Team-Win-Recovery-Project/

위 링크에 들어 가셔서, 파일을 받으신후

CM소스 폴더/bootable/recovery 폴더를 교체해 주세요.

※ 예) /home/icaros/android/system/bootable/recovery

 

CM7/CM9 공통 팁

 

* CM7 소스를 받으신 분

Cyanogen Mod 7 GB 소스를 받으신 분들은 빌드 폴더도 같이 교체를 해주셔야 작업이 가능 합니다.

 

CM9 설명과 동일하게

https://github.com/TeamWin/Team-Win-Recovery-Project/

위 링크로 들어 가셔서, 파일을 받으신후

CM소스 폴더/bootable/recovery 폴더를 교체해 주세요.

※ 예) /home/icaros/android/system/bootable/recovery

 

CM7 소스를 받으신 분들은 빌드 폴더 또한 교체를 해주셔야 합니다.

 

https://github.com/Dees-Troy/TWRP2-CM7_build

위 링크로 들어 가셔서, 파일을 받으신후

CM소스 폴더/build 폴더를 교체해 주세요.

※ 예) /home/icaros/android/system/build

 

2. 컴파일을 하기 전 기본 정보 수정

먼저 컴파일을 하기전에, 디바이스 정보를 TWRP 리커버리에 알맞게 수정을 하셔야 정상 사용이 가능 합니다.

 

예전에 제 글을 따라 오셨다면, 아마

/home/(사용자 계정명)/android/system/device/(제조사)/(기기명) 폴더가 있습니다.

그쪽으로 터미널이 아닌 마우스를 통해 들어가주세요 ㅎㅎ

 

※ 예) /home/icaros/android/system/device/lge/lu6500

 

그러신뒤, 그 폴더를 가보시면 BoardConfig.mk 파일이있습니다.

 

※현제 윈도우에서 글을 작성하여, 우분투 환경으로 스크린샷을 찍지 못하였습니다...ㅠㅠ 추후 수정하겠습니다.

※다른 CM포팅 작업을 하던 디바이스 셋팅 파일로는 컴파일 하는데 지장이 있을수 있으니, 새로운 부트이미지를 해체 하셔서 작업하시는것을 추천 드립니다.

 

그런뒤, BoardConfig.mk 파일 내에

 

TARGET_RECOVERY_INITRC :=

 

란 문장이 있는지 확인 합니다. 없을 경우 추가해 주시고, 있는 경우

기존에 만들고 있던 리커버리나, 이 방법을 통해 만든 리커버리의 램디스크내에 있는 init.rc 파일 내에

 

on init
        export PATH /sbin

       
export LD_LIBRARY_PATH .:/sbin


라는 문장이 있는지 확인해 줍시다. Q2 이미지 같은 경우엔, 5번째 줄에 있었습니다.

 

모두 성공적으로 확인이 되었다면, 이제 다시 BoardConfig.mk 파일로 돌아와

 

맨 아래쪽에

 

DEVICE_RESOLUTION := 해상도 가로 값x해상도 세로 값

 

을 추가 합니다.

 

예) DEVICE_RESOLUTION := 540x960

예) DEVICE_RESOLUTION := 480x800

 

※참고

아오 제 대가리로 해석을 못하겠어요. 혹시나 해서 언제나 믿지 않았던 발번역을 돌렸지만, 역시 믿을께 못되는듯

원문

Note that themes do not rotate, so the 1280x800 theme is intended for tablets and would not work on the Samsung Galaxy Note that expects a 800x1280 type of theme (which doesn't exist yet).

 

직역본?...

테마들은 회전을 하면 안됩니다. 그래서 1280x800 테마는 타블렛 PC들 그리고, 삼성 갤럭시 노트 같은 800x1280 타입의 테마에선 아직 동작하지 않습니다.

 

아마 타블렛 PC등에서 기본적으로 가로모드가 기본 상태인 몇몇 디바이스들이 해상도를 입력할때 갤럭시 노트를 예로 들자면

800x1280 으로 입력을 하라는 소리 같습니다. 즉 가로모드는 지원이 안되어, 1280x800 으로 입력을 하면 화면이 짤리는듯 합니다.

※100% 정확하지 않습니다.

 

 

그리고 만약 부팅을 했을때, 그래픽이 깨지는 현상이 일어 난다면 아래 문구를 BoardConfig.mk 파일에 추가 합니다.

 

RECOVERY_GRAPHICS_USE_LINELENGTH := true

 

여기 까지를 하면 기본적인 셋팅은 끝나는듯 합니다.

이제 여기서 부턴 부가적인 셋팅 입니다. 하지만 필요한 경우가 많습니다. 잘 읽어봐주세요.

BoardConfig.mk 파일에 적용되는것들 입니다.

 

이 아래 부분은 가장 첫 부분이지만, 해석을 해봐도, 발번역을 해도 뭔소리인질 모르겠습니다.

아래는 당신이 어떻게 개별 / 파티션들을 어떻게 추가로 백업 옵션에 넣을 수 있는지 입니다. 'SP1_NAME' 항목은 recovery.fstab 에 정의된 파티션의 이름과 일치해야 합니다.
'SP1_DISPLAY_NAME' 은 백업된 파일이 'SP1_NAME'의 파티션 이름과 달라야 할 경우에 쓰이는 이름입니다. 'SP1_BACKUP_METHOD'는 파티션이 어떻게 정의되어야 할지(파일 혹은 이미지)
를 결정합니다. 그리고 'SP1_MOUNTABLE' 항목은 파티션이 마운트 될 수 있는지 여부를 결정합니다.

SP1_NAME := "pds"
SP1_BACKUP_METHOD := files
SP1_MOUNTABLE := 1
SP2_NAME := "osh"
SP2_DISPLAY_NAME := "Webtop"
SP2_BACKUP_METHOD := files
SP2_MOUNTABLE := 1
SP3_NAME := "preinstall"
SP3_BACKUP_METHOD := image
SP3_MOUNTABLE := 0

 

고글 발번역을 돌리면

 

아래 백업에 사용할 파티션의 목록에 사용자 정의 / 특별 파티션을 추가 할 수있는 방법입니다.SP1_NAME recovery.fstab에 정의 된 파티션의 이름과 일치해야합니다. SP1_NAME 다를해야 할 경우 SP1_DISPLAY_NAME는 백업 페이지에 표시되는 이름입니다. SP1_BACKUP_METHOD 파티션 (파일 또는 이미지) 백업하는 방법을 정의합니다. 그리고 파티션하는 경우 SP1_MOUNTABLE 결정 장착 할 수 있습니다.

 

이라 나옵니다.

 

아마 특수 파티션을 위한 경우인듯 합니다.

 

RECOVERY_SDCARD_ON_DATA := true - /data/media 를 핸들링하여 사용하는 디바이스들을 위한 구문 입니다.

(허니콤 디바이스들과 ICS에선 갤럭시 넥서스 같은 디바이스들이 필요한 것 입니다)

 

BOARD_HAS_NO_REAL_SDCARD := true - SD카드 파티셔닝 같은 기능들을 사용하지 않습니다.

 

TW_INCLUDE_DUMLOCK := true - HTC Dumlock 같은것이 필요 할때 사용합니다. (아마 독바가 추가 되는듯 합니다)

 

 

이 글상자는 내장 SD카드를 가진 폰들은 필요한 작업입니다.

즉 내장SD카드가 있는 폰이라면 필요 합니다.

※ 외장 SD카드를 꼽지 않아도, SD카드가 있는 폰

 

recovery.fstab 에 쓴 내용이랑 일치시켜 주세요!

 

예를 들어 recovery.fstab 에 내장 메모리를 /emmc 에 지정하고, 외장 SD카드를 /sdcard 에 넣었다면 아래와 같이 추가 합니다.

 

TW_INTERNAL_STORAGE_PATH := "/emmc"
TW_INTERNAL_STORAGE_MOUNT_POINT := "emmc"
TW_EXTERNAL_STORAGE_PATH := "/sdcard"
TW_EXTERNAL_STORAGE_MOUNT_POINT := "sdcard"

 

원래 원문은

 

TW_INTERNAL_STORAGE_PATH := "/data/media"
TW_INTERNAL_STORAGE_MOUNT_POINT := "data"
TW_EXTERNAL_STORAGE_PATH := "/sdcard"
TW_EXTERNAL_STORAGE_MOUNT_POINT := "sdcard"

 

입니다. 하지만 제가 해외 옵티머스 2x의 Twrp 리커버리 작업 파일을 보며 Q2용으로 수정하며 바꾼 내용을 올립니다.

 

또는 recovery.fstab 에 내장 메모리를 /sdcard 에 넣고, 외장 SD카드를 /sd-ext 에 넣으셨다면 아래와 같이 추가합니다.

 

TW_INTERNAL_STORAGE_PATH := "/sdcard"
TW_INTERNAL_STORAGE_MOUNT_POINT := "sdcard"
TW_EXTERNAL_STORAGE_PATH := "/sd-ext"
TW_EXTERNAL_STORAGE_MOUNT_POINT := "sd-ext"

 

 

TW_NO_BATT_PERCENT := true - 첫부분에 있던 사진을 보시면, 배터리 퍼센트가 표시 됩니다. 이걸 표시 하지 않으시려면 추가하세요.

 

TW_CUSTOM_POWER_BUTTON := 107 - 락스크린을 위해 별도의 파워버튼을 지정하려면 추가하세요.

107 부분엔 키값을 넣으면 되는 모양 입니다.

그런데 잠금화면도 있나요!! 역시 Twrp 위대합니다.

 

 

TW_NO_REBOOT_BOOTLOADER := true - 부트로더가 없는 경우 메뉴에서 부트로더로 재부팅 메뉴를 제거 합니다.

 

TW_NO_REBOOT_RECOVERY := true - 리커버리로 직접 진입이 불가능 한경우 메뉴에서 리커버리로 재부팅 메뉴를 제거 합니다.

 

TW_NO_USB_STORAGE := true - USB마운트를 지원하지 않는 디바이스들을 위해 USB마운트 메뉴를 제거 합니다.

 

RECOVERY_TOUCHSCREEN_SWAP_XY := true - X축과 Y축 사이의 터치 맵핑을 스왑 합니다. 뭔소리인지 모르겠네요~

번역은 대충 된듯 합니다.

원문 - swaps the mapping of touches between the X and Y axis / 직역 - 그 X축과 Y축 사이 터치 영역 맵핑을 스왑한다.

 

* 아래 두 줄은 직역 입니다.

RECOVERY_TOUCHSCREEN_FLIP_Y := true - Y축 터치 스크린 값을 넘겨 줍니다.
RECOVERY_TOUCHSCREEN_FLIP_X := true - X축 터치 스크린 값을 넘겨 줍니다.

위와 관련된 구문 입니다.

 

TW_NEVER_UNMOUNT_SYSTEM := true - 시스템 파티션을 절대 마운트 해제 하지 않습니다.

(가끔 몇몇 모토로라 기기에서 필요하다는 군요~)

 

TW_INCLUDE_INJECTTWRP := true - 부팅 이미지에 두 번째 램 디스크 복구 삼성 장치 삼성 부트 이미지 일부 TWRP를 삽입 할 수있는 능력을 추가

제가 삼성 디바이스를 한번도 못만져 봐서 그런지, 해석도 이해도 안되네요. 구글 발번역 입니다.

※ 아마 삼성기기에 있는 두번쨰 리커버리 파티션에 Twrp 이미지를 플래싱 할수 있는 능력 추가?..정도 인듯 합니다.

 

TW_DEFAULT_EXTERNAL_STORAGE := true - 외장 SD카드를 기본 저장소로 지정 합니다. (위에 내장 SD카드가 있는 디바이스들에게 해당 됩니다. 아마 백업을 하면 외장 SD카드를 우선으로 백업 하나 봅니다)

 

TW_FLASH_FROM_STORAGE := true - RAM 이 좀 작은 디바이스들에게 좋은 구문 인듯 합니다.

플래싱 하는 롬이 RAM 보다 지나치게 큰 경우, RAM 대신 /tmp 에서 작업을 진행 하는것 입니다.

Twrp 에서 이걸 기본 값으로 설정 하는걸 고려중이라네요~

 

 

 

Here's some flags that may help you, but are not specific to TWRP (works in CWM too):
This flag has multiple options, but can be used to set different graphics modes that may be need to correct color space issues on some devices:
TARGET_RECOVERY_PIXEL_FORMAT := "BGRA_8888"
TARGET_RECOVERY_PIXEL_FORMAT := "RGBX_8888"
TARGET_RECOVERY_PIXEL_FORMAT := "RGB_565"

BOARD_HAS_FLIPPED_SCREEN := true -- flips the screen upside down for screens that were mounted upside-down
TARGET_PREBUILT_RECOVERY_KERNEL := path/to/kernel -- use to specify a kernel specifically for building recovery

 

 

이 부분은 귀찮기도 하고, 해서 번역을 건너 뛰었습니다.

 

발번역을 하면

 

이것은 당신을 도와줄 몇 가지 추가 항목들입니다. 그러나 이것은 TWRP에만 특정되는건 아닙니다(CWM에서도 작동합니다).
이 플래그는 여러가지 경우가 있지만, 대표적으로 몇몇 기기에서 일어나는 색상 문제를 해결하기 위해 다른 그래픽 모드로 설정되는데 사용됩니다.

TARGET_RECOVERY_PIXEL_FORMAT := "BGRA_8888"
TARGET_RECOVERY_PIXEL_FORMAT := "RGBX_8888"
TARGET_RECOVERY_PIXEL_FORMAT := "RGB_565"

 

BOARD_HAS_FLIPPED_SCREEN := true - 스크린이 위아래로 뒤집힌 기기들을 위한 옵션입니다.
TARGET_PREBUILT_RECOVERY_KERNEL := path/to/kernel - 리커버리를 빌드하기 위해 커널을 특별하게 지정하기 위해 사용됩니다.

 

참고적으로 https://github.com/TeamWin 이 사이트에서 자신의 디바이스와 비슷한 디바이스의 작업 파일을 찾아 작업 하시면 좀더 수월하게 하실수 있습니다^^

 

저 같은 경우엔 옵티머스 Q2에 포팅을 시도 함으로, 해외 옵티머스 2x 파일인 P990 파일을 보고 수정을 하였습니다.

 

 

위와 같이 설정을 한후, CWM리커버리 빌드 하듯이 해주시면 됩니다~ 어떻게 하냐고요?

http://minnote.net/117 글의 아래쪽 빌드 쪽을 참조해 주시면 됩니다.

 

winpower7_twrp.txt

 

 

+ 2012년 11월 29일 추가

조규진 님이, 미번역 부분과 부족한 부분을 번역해 주셨습니다^^

감사합니다~

  1. 2012.11.28 02:31

    비밀댓글입니다

    • Favicon of http://minnote.net BlogIcon iCAROS7 iCAROS7 2012.11.29 19:13 신고

      아~ 감사합니다!
      수정 완료되었습니다 ㅋㅋㅋ
      귀찮음 증이란 ~_~
      게다가 다시 고쳐주시기 까지;; 감사합니닷!

  2. HI8PRO 2016.04.23 13:17 신고

    아...정말 너무감사합니다
    커널만드는게 처음인데도 정말 자세히 설명해주셔서 무리없이 잘되네요
    중간중안 안되는것도 잘 읽어보니 다되고 감사합니다

+ Recent posts