본문 바로가기

안드로이드/강좌

갤럭시 루팅펌웨어 제작


2013년 8월 25일 수정 사항 : 권한 문제로 인하여 바이너리가 없고 설치할 수 없다고 뜨는 문제를 해결하였습니다. su의 권한을 6755가 아닌 4755로 변경하여 권한을 부여해주시기 바랍니다. 6755로 문제없으신 분들은 6755로 사용하시면 됩니다.


갤럭시 시리즈는 루팅펌웨어를 제작해서 오딘을 해용하여 펌웨어를 올리면 루팅카운트(커스텀 바이너리 카운트)를 올리지않고 루팅이 가능합니다.


루팅펌웨어를 쉽게 구할 수 있으면 다행이지만 그렇지 못한 경우도 있습니다. 그래서 이번에는 루팅펌웨어를 제작하는 법을 포스팅하겠습니다.




추천은 블로거를 힘나게 합니다.

손가락 콕 찍고 시작하겠습니다!


루팅펌웨어는 리눅스 상에서 만들어야 합니다. 가상머신을 통하여 리눅스를 구동하던가 멀티부팅을 이용하여 리눅스를 사용하여야 합니다.


리눅스 운영체제가 없는 분은 다음 링크를 통하여 우분투를 설치하세요.


우분투 13.04 64비트 설치법 : http://crampstory.tistory.com/29


1. 파일 준비


먼저 필요한 파일을 준비하겠습니다. 리눅스 상에서 준비하는 것을 추천드립니다. 복사해오는 수고를 덜 수 있으니까요.


1. ext4fs util : 압축된이미지를 풀고 수정후에 다시 압축해주는 툴입니다. 파일은 첨부해 놓겠습니다. 첨부된 파일은 우분투 13.04 64비트에서 컴파일된 파일입니다. 


ext4fs_util.tar


혹시 직접 컴파일 하실분은 이곳 에서 직접 받아서 컴파일후에 사용하시기 바랍니다. 첨부된 두파일 모두 받아서 각각 압축을 푸신후에 터미널로 각 폴더 진입후에 각각에서 make를 해주세요. 그런후 New버전에서 ext2simg 와 make_ext4fs를 꺼내쓰시고 구버전에서 simg2img를 꺼내서 사용하시면 됩니다.


2. 순정펌웨어 : 본인이 소유한 기기의 순정펌웨어 파일이 필요합니다. 이 파일을 수정하여 루팅펌웨어를 제작합니다. 노트2의 순정팜은 이 블로그에 있지만 다른기기를 소유하신 분들은 직접 구하시기 바랍니다.


3. SuperSu 어플 파일과 su바이너리 : 이 두파일을 순정펌안에 넣을 것입니다. 첨부된 파일은 SuperSu 1.51버전의 파일입니다.


supersu.tar


역시 마찬가지로 직접 구하실 분은 이곳 에서 직접 받으신후에 system/app/Superuser.apk 파일과 system/xbin/su 파일을 따로 빼두세요. CWM / TWRP / MobileODIN installable ZIP 이라고 써있는 부분에서 다운 받으시면 됩니다.


다음 스크린샷 처럼 받으신 파일은 펌웨어를 제외하고는 적당한 곳에 압축을 풀어주세요.



저는 내폴더안에 firmware폴더와 working폴더를 만들었습니다. 그리고 working 폴더안에 system폴더도 하나 만들어주세요.


순정펌웨어 : 내폴더/firmware/                    (펌웨어 이름은 외우기 쉽도록 간단하게 바꿔주세요)

Superuser.apk , su : 내폴더/working/

ext4fs util : 내폴더/working/util


이렇게 폴더를 정해서 넣었습니다. 터미널에서 폴더사이를 이동할 것이기 때문에 각 경로를 기억해주세요. 여기서는 펌웨어이름을 E250SMF6.tar 로 설정하였습니다.


2. 권한 획득 및 util 설치


앞으로의 작업은 root권한이 필요한 작업입니다. 리눅스의 root권한을 얻어 보도록 하겠습니다.


먼저 윈도우 키를 눌러서 검색창을 띄어주세요. 그리고 terminal을 검색하시기 바랍니다. ter만 쳐도 맨 앞에 나타납니다.


터미널을 눌러서 실행하셔도 되고 옆에 가젯바에 넣으셔도 됩니다.


터미널을 실행하시고 다음 명령어를 쳐주세요. 앞으로 나올 명령어는 대문자 소문자 확실하게 구분해주셔야 합니다.


  sudo passwd


그러면 처음에 사용자 패스워드를 묻습니다. 로그인할때 혹은 설치시에 설정한 암호를 넣어주세요.


그런후에 UNIX 패스워드를 묻습니다. 원하는 패스워드를 입력하세요. 화면상에는 나타나지 않지만 입력이 되고 있는 것입니다.


재확인 패스워드도 똑같이 입력해주세요. 그런 후에 다음 명형어를 쳐주세요.


  su 


그러면 패스워드를 입력하라고 합니다. 위에서 설정한 패스워드를 입력하시면 루트 권한을 얻습니다. 다음 스크린샷처럼 커서앞에 #이 나타나야합니다.



루트권한을 획득했으니 util파일을 bin폴더로 옮겨서 어디서나 실행이 가능하도록 하겠습니다. 다음 명령어를 입력해주세요.


  cd working/util

  cp * /bin

  cd ..

  cd ..


3가지 유틸이 있는 폴더에 들어가서 3개의 파일을 /bin 폴더로 복사해넣는 명령어입니다. 폴더명이 다르다면 설정한 폴더를 입력하세요. 복사한후에 내폴더로 다시 돌아오는 명령어까지 있습니다. 특별한 결과는 나타나지 않습니다.


3. 루팅펌 제작


이제 펌웨어파일의 압축을 풀고 우리가 필요한 system.img 파일을 작업 공간으로 옮겨보겠습니다.


지금까지의 과정을 그대로 따라오셨다면 터미널창에 root@~~~~~:/home/(사용자)# 이런식으로 나타나 있을 것입니다.이 상태에서 다음 명령어를 입력하여 주세요.


  cd firmware

  tar xvf E250SMF6.tar

  cd ..


그러면 펌웨어 폴더에 내용물의 압축이 풀어져서 나타납니다. 압축이 다 풀어지면 탐색기를 통하여 확인하실 수 있습니다. 그중에서 system.img파일을 working폴더로 옮겨주세요.



위 스크린샷은 압축을 풀어서 나온 system.img를 working폴더로 옮겨놓은 모습입니다.


이제 본격적으로 파일 수정을 해보겠습니다. 일단 sparse 이미지를 non-sparse이미지로 바꿀것입니다. 마운트가능한 이미지로 바꾸는 작업입니다.


  cd working

  simg2img system.img system.ext4


명령어 실행 후에 성공했다는 멘트가 출력되고 탐색기를 통해서 보시면 working폴더에 system.ext4파일이 하나 생성됩니다. 그러면 이제 system.img는 지워 주세요. 나중에 다시 이미지를 만들때 겹치게 되므로 헷갈리지 않도록 하기 위함입니다.



이제 non-sparse이미지의 크기를 확인해야 합니다. 나중에 리팩할때 이 이미지의 크기를 입력해야 합니다. 탐색기에서 system.ext4파이을 오른쪽 클릭하여 속성을 눌러주세요. 그러면 파일크기가 포함된 정보를 담고 있는 창이 나타납니다. 그리고 계산기를 준비해주세요. 그런후에 다음과 같은 계산을 합니다.



바이트 단위로 나타난 크기를 입력하신후에 1024로 두번을 나누어 주시면 됩니다. 노트2의 경우는 딱 2400이 나옵니다. 이숫자를 기억하세요.


자 이제 다시 터미널로 돌아와서 많은 명령어를 입력하겠습니다.


  mount -o loop -t ext4 system.ext4 system

  cp -va Superuser.apk system/app/Superuser.apk

  cp -va su system/xbin/su

  chmod 644 system/app/Superuser.apk

  chmod 6755 system/xbin/su

  chown root.root system/app/Superuser.apk

  chown root.root system/xbin/su

  make_ext4fs -s -l 2400M -a system system.img system/

  umount system

  cd ..


수정가능하도록 이미지를 마운트한 후에 필요한 파일들을 복사하고 제기능을 하도록 권한 및 소유권을 바꾸어 준 것입니다.


혹시 루팅펌 완성후에 su 바이너리 문제를 격으시는 분은 chmod 6755 system/xbin/su 대신에 chmod 4755 system/xbin/su 로 바꾸어서 권한을 주시기 바랍니다.


make_ext4fs는 마운트되어있는 내용을 이미지화하는 명령입니다.


-s : sparse 이미지로 변경

-l 2400M : 이미지 사이즈 지정

-a system : 안드로이드 상에서 이 이미지가 마운트되는 곳

system.img : 변환될 이미지 이름

system/ : 리눅스에 마운트 되어있는 이미지화할 폴더


노트2가 아니라면 2400M이 아닐 수도 있습니다. 위에서 system.ext4 이미지의 크기를 계산 하였을때 나온 숫자에 M만 붙이시면 됩니다.



이제 system.ext4는 없어도 되는 파일이므로 지우셔도 무방합니다. 새로 생성된 system.img파일을 firmware폴더로 옮겨주세요.


그러면 이렇게 펌웨어 파일을 구성하고 있는 파일들이 다시 한군데에 모이게 됩니다.



이제 마지막으로 파일들을 하나로 압축하여 오딘에서 플래싱이 가능한 파일로 만들겠습니다.


  cd firmware

  tar cvf Rooted-E250SMF6.tar boot.img cache.img hidden.img modem.bin recovery.img sboot.bin system.img



이제 펌웨어 폴더에 새로운 펌웨어 파일이 생긴것을 확인하실 수 있습니다. 이제 이파일을 윈도우가 있는 하드로 복사해서 넣기만하면 제작 완료 입니다.



리눅스에서 밖으로 나와있는 파일은 지우셔도 상관없습니다. 작업한 폴더들 보시면서 필요없는 파일 지우고 옮기고 하신후에 재부팅해서 윈도우로 진입하시고 오딘으로 루팅펌을 입히시면 되겠습니다.


긴글 읽어 주셔서 감사합니다!


'안드로이드 > 강좌' 카테고리의 다른 글

리눅스에 안드로이드 개발 환경 구축  (0) 2013.08.27
리커버리를 이용하여 루팅하는법  (1) 2013.08.10
오딘 사용 방법  (25) 2012.12.28