본문
최신버전(4.1.B.0.587) Xperia 폰 루팅하기
* 이 글은 '[TUTORIAL] Rooting ICS without downgrade for Xperia 2011! [.431 | .587]' 페이지의 내용을 바탕으로 작성한 것입니다.
현재 외국 기준으로 소니 엑스페리아폰의 최신 버전으로 4.1.B.0.587가 사용된다. 단 이 버전은 기존에 있던 툴로는 루팅이 되지 않아 이전 버전인 4.1.A.0.562으로 다운그레이드 하여 루팅을 한 후에 이를 다시 업그레이드하는 방식을 사용해야 한다. 이 내용은 위에 언급한 게시물에서 찾아볼 수 있다. 여태까지 이 방법으로 잘 루팅해 왔는데 이번에 하려니까 왠일인지 잘 되지 않아 이 기회에 이에 대해 정리해보기로 하였다.
루팅에 있어 가장먼저 해야할 일:
설정-> 보안> "알 수 없는 소스" 체크
설정-> 개발자 옵션-> "USB 디버깅" 체크
설정-> Xperia > 연결-> USB연결 모드 > "대용량 저장소 모드(MSC)" 체크
우선 flashtool으로 xperia ray의 경우 ST18i_4.1.A.0.562_kernel.ftf 파일을 폰에 적용한다.(mini, arc등은 위 페이지에서 파일을 다운로드 할 수 있다) 이때 주의할 것은 휴대폰 정보 페이지에 나오는 빌드번호는 바뀌지 않는다는 것이다. (이 점 때문에 다운그레이드가 실패한것으로 알고 계속 적용을 시도했었다..) 적용여부는 확인할 수 없지만 다음으로 DooMLoRD의 루팅 과정을 진행해보자. 이 페이지('[ROOT] Rooting Toolkit for Xperia 2011 ICS [FW:.562]{LOCKED & UNLOCKED BOOTLOADERS')에 루팅 프로그램(DooMLoRD_v1_Xperia-2011-ICS-ROOT-emu-busybox-su.zip)이 담겨있다.
이번따라 루팅이 진행이 안되어 배치파일 한줄한줄 분석하며 실행해 보았다. 문제는 이부분에 있었다.
rm /data/local.prop > nul
echo \"ro.kernel.qemu=1\" > /data/local.prop
첫번째 줄은 /data/local.prop라는 파일을 지우는데, 이때 발생하는 출력을 nul으로 redirection(>)한다는 의미이다. 하지만 왠일인지 Read-only file system 오류가 출력되는데, 아마도 null 장치의 이름이 nul에서 다른것으로 바뀌어서 그런가, 하고 추측한다. 이 가정대로라면, 현재 작업 디렉토리인 루트(/)에 nul이라는 파일을 기록하는 의미로 작동하며, 루트에는 사용자가 파일을 작성할 수 없으므로(mount(ro)) 이와같은 오류가 발생하는 것이다. 이는 사소한 오류이므로 (rm 명령은 잘 동작하니) 무시해도 된다.
두번째 줄이 핵심 문제였다. 위에서의 redirection이 다시 사용되는데, 이 명령의 의미는, \"ro.kernel.qemu=1\" 라는 내용을 /data/local.prop에 기록한다는 것이다. 이때 \는 escape 문자로 사용되며, 따라서 최종적으로 "ro.kernel.qemu=1"라는 내용이 기록된다. 이 명령을 통해 root 권한을 얻는것이 목적이지만(정확히 말하자면 ADB 셸이 root로 동작함) 이번 시도에서 실패하여, 이 원인을 분석해 보기로 하였다. 아래는 명령과, 그 응답을 기록한 것이다. (물론 두번째 줄을 실행한 후에 폰을 재시작해야한다!)
cat /data/local.prop
=> "ro.kernel.qemu=1"
id
=> uid=2000(shell) gid=2000(shell) groups=1003(graphics),1004(input),1007(log),1009(mount),1011(adb),1015(sdcard_rw),3001(net_bt_admin),3002(net_bt),3003(inet),3006(net_bw_stats)
일반 shell 유저로 부팅이 된것을 확인하였다. 혹시나 해서 /data/local.prop에 입력되는 쌍따옴표를 제거하여 실행하고 재부팅 했더니 다음과 같이 나왔다. (즉, echo ro.kernel.qemu=1 > /data/local.prop 명령 입력)
cat /data/local.prop
=> ro.kernel.qemu=1
id
uid=0(root) gid=0(root)
드디어 root 사용자로 셸을 사용할 수 있게 되었고, 명령이 제대로 실행되어 루팅이 완료되었다. (superuser 앱이 설치됨) 루팅이 완료된 이후에는 flashtool다시 4.1.B.0.587 버전으로 업데이트 하여(ST18i_4.1.B.0.587_Kernel.ftf 파일 사용) 최신 버전으로 유지하면 된다. 루팅에 관련하여 좀 더 내용을 알고싶다면 'Android Modding for the Security Practitioner - SOURCE Conference'문서를 참고할 수도 있다.
한줄요약 : 혹시나 DooMLoRD의 방법이 먹히지 않는다면 배치파일(runme.bat)에서 echo \"ro.kernel.qemu=1\" > /data/local.prop 을 echo ro.kernel.qemu=1 > /data/local.prop 으로 바꿔보세요
댓글