2012년 4월 4일 수요일

넥서스 디바이스 팩토리 이미지 이용해 안드로이드 버전 업그레이드 하기.

이 글은 4.3 버전까지 확인한 내용입니다. 4.3보다 높은 버전(글 작성하는 현 시점에서는 4.3이 최신입니다)에서는 내용이 적용되지 않을 수도 있습니다.


안드로이드 플랫폼 개발 환경은 이전의 특정 버전 바이너리 이미지에서 현재의 특정 버전 바이너리 이미지로 변경된 내용만을 뽑아 바이너리 이미지로 생성하는 기능을 제공하며, 이렇게 생성된 변경사항 바이너리 이미지를 기기에 적용해, 업그레이드를 하는 방법을 제공합니다.
이렇게 변경된 내용만을 갖는 바이너리 이미지를 흔히 update.zip 이라 부르며, 대부분의 제조사가 이 바이너리 이미지를 네트워크를 이용해 기존 버전의 안드로이드 기기에 뿌리고 적용하도록 해 버전 업그레이드를 진행합니다.
네트워크를 통하지 않더라도 update.zip만 있다면 사용자가 직접 이를 적용 가능했으며, 기존에 네트워크를 통한 업데이트를 기다리기 지루했던 사람들은 update.zip 을 구해 직접 적용하는 방식으로 업그레이드를 진행했고, 현재도 유효한 방법입니다.


하지만 구글에서 넥서스 시리즈에 한정해서나마 팩토리 이미지를 통째로 공개하다보니 이를 이용한 업그레이드를 많이 하고 계시고, 방법을 찾는 분들도 있기에, 방법을 간략히 정리해 봅니다.


팩토리 이미지란 최종적으로 모델에 탑재되는 소프트웨어 바이너리 이미지를 의미하며, 이런 이미지를 실제 기기에 집어넣는 과정을 플래시 한다고 합니다.

안드로이드는 fastboot 라는 작은 프로그램을 이용해 팩토리 이미지를 사용자가 직접 자신의 폰이나 타블렛PC 같은 기기에 플래시 할 수 있게 하고 있습니다.

넥서스S, 갤럭시 넥서스, 넥서스 7 등의 넥서스 기기의 경우 구글에서 팩토리 이미지를 공개하고 있으며, fastboot을 이용해 한방에 팩토리 이미지를 자신의 기기에 설치 할 수 있는 스크립트까지 공개하고 있습니다.
이걸 이용해 넥서스 기기들은 쉽고 간편하게 운영체제를 최신 버전으로 업그레이드를 할 수 있습니다.

https://developers.google.com/android/nexus/images#soju

에 들어가 보면 넥서스S와 갤럭시 넥서스의 팩토리 이미지가 있는 걸 확인 할 수 있습니다.


주의 : 운이 없다면 폰이 벽돌이 되버릴 가능성도 존재합니다만, 전 책임지지 못합니다.

0. 컴퓨터 설정 확인

adb 와 fastboot 이 사용 가능하셔야 하며, Android SDK tools를 설치하는 것으로 사용이 가능합니다. 인터넷이 엄청 느리거나 하드디스크 공간이 거의 없는 게 아니라면 그냥 Android SDK를 설치하시길 권장합니다.
fastboot은 과거에는 윈도우에서는 사용이 불가능했지만, 지금은 가능한 것 같습니다(제가 윈도우즈 OS를 안쓰다 보니 확인은 하지 못했습니다).

환경변수의 PATH 에 adb, fastboot 의 경로가 추가 되어 있어야 합니다.
커맨드 프롬프트를 열고 adb 와 fastboot 를 각각 입력해 보고, 해당 프로그램이 없다고 나오면 준비가 안된 겁니다.

1. 바이너리 이미지 받기

https://developers.google.com/android/nexus/images
로부터 이미지를 받으면 됩니다.

항목을 보면 같은 기기에도 다양한 이미지들이 있어 헷갈리기 쉬운데요.
예를 들면 다음과 같이 리스트 되어 있습니다.
Factory Images "takju" for Galaxy Nexus "maguro" (GSM/HSPA+) (with Google Wallet)
"takju" 의 경우, 이미지의 빌드네임이며, "maguro" 는 해당 이미지가 사용되는 기기의 이름입니다.

같은 갤럭시 넥서스라도 한국에 발매되는 버전에는 한글 키보드를 넣어서 팩토리 이미지를 만드는 등 다양한 방법으로 팩토리 이미지를 만들 수 있겠죠. 이렇게 다양한 방법으로 구성된 팩토리 이미지들 각각을 명명하는 방식이 빌드네임 입니다. takju 는 기존 갤럭시 넥서스 이미지에 구글의 특정 기능을 추가한 팩토리 이미지의 빌드네임 입니다.
같은 기기를 위한 이미지들이라면 빌드네임이 달라도 이미지를 설치하는데 큰 문제는 없습니다. 오히려 같은 기기를 위한 이미지라도 예를 들어 한국에 출시되는 모델을 위한 팩토리 이미지의 경우 통신사 등과의 협의 문제인지 최신 버전의 공개가 늦어지는 경우가 많습니다.
많은 분들이 그런 이유로 한국에서 발매된 넥서스 기기를 구매하시고서는 미국에 발매된 넥서스 기기용 팩토리 이미지를 설치해서 사용하곤 합니다. 한글 키보드는 마켓에서 받으면 그만이거든요.

같은 갤럭시 넥서스라도 3g 버전이 있고, 4G(LTE) 버전이 있습니다. 이렇게 다른 하드웨어 구성을 명명하는 것이 기기 명(device name)입니다.
빌드네임과 달리 이 경우는 하드웨어 구성이 다르기 때문에 3g 버전 갤럭시 넥서스 이미지를 4g 버전 갤럭시 넥서스에 설치하는 것처럼 다른 하드웨어 구성을 위한 팩토리 이미지를 잘못 받으면 폰이 벽돌이 되는 수도 있습니다. 주의해서 자신의 기기에 맞는 이미지를 받으시기 바랍니다.

2. 부트로더 언락

기본적으로 제조사들은 사용자가 자유롭게 기기를 건드리다가 문제가 발생하는 경우 AS 해주기를 싫어하기 때문에, 사용자가 기기의 팩토리 이미지를 바꿀 수 있게 놔두고 싶어 하지 않습니다. 따라서, 부트로더라는, 기기의 부팅 최초 과정을 관장하는 소프트웨어에서 팩토리 이미지를 받을 수 없게 막아뒀습니다.
하지만, 넥서스 기기는 간단한 명령으로 부트로더를 언락할 수 있습니다.
그러나, 부트로더를 언락하면 데이터가 초기화 됩니다. 따라서, 팩토리 이미지를 이용하고자 하시는 분은 한번은 눈물을 머금고 데이터 초기화를 하셔야 합니다. 대부분의 데이터는 클라우드에 저장되니 큰 문제는 없지만, 민감한 분은 주의하시기 바랍니다.
저는 넥서스 기기를 얻게 되면 일단 부트로더부터 언락하고 최신 팩토리 이미지로 설치를 하고는 합니다.

부트로더를 언락 하는 방법은 굉장히 간단합니다. 4.마무리 섹션에서 함께 설명합니다.
부트로더 언락 상태를 유지하는게 불안한 분은 다시 락 할 수 있습니다. 별로 권장하고 싶진 않지만, 각자의 선택입니다. 다시 락 하는 방법도 4. 마무리 섹션에서 함께 설명합니다.

3. 데이터를 유지하도록 스크립트 수정

다운 받은 파일의 압축을 풀면 팩토리 이미지 바이너리 파일들과 쉽게 팩토리 이미지를 플래시 할 수 있게 하는 스크립트 파일이 있습니다.
리눅스의 경우 flash-all.sh, 윈도우의 경우 flash-all.bat 입니다.

앞서 부트로더를 언락할 때 데이터가 날아간다고 설명했는데, 스크립트 파일 또한 데이터를 깨끗이 날리고 이미지를 받도록 되어 있습니다. 벌써 언락하느라 데이터 한번 날렸는데 또 그러면 속상하겠죠. 다음과 같은 방법으로 데이터는 날리지 않고 이미지를 받도록 설정할 수 있습니다.

스크립트 파일(flash-all.sh 또는 flash-all.bat)을 텍스트 에디터로 열어 보시고, 마지막줄의 fastboot -w update image-<buildname>-<version>.zip 에서 -w 를 지워줍니다.
<buildname>, <version> 은 받으신 팩토리 이미지에 따라 다를 겁니다.

3-1. 넥서스 7용 팩토리 이미지의 경우, flash-all.sh, flash-all.bat의 내용이 다릅니다.
여기에는 다음과 같은 내용이 포함되어 있습니다.

이 내용들을 모두 지워 주시고, 앞서 이야기한 -w 옵션도 지워 주셔야 합니다.

이런 식으로 넥서스 기기에 따라 flash-all.sh의 내용이 조금씩 다를 수 있으니, 진행하기 전 한번씩 더 확인해 보시기 바랍니다.

4. 마무리

기기를 컴퓨터에 연결하고, adb 와 연결되었는지 확인합니다.
이제, 커맨드 프롬프트를 열고, 압축을 푼 디렉토리로 이동한 후, 다음 명령을 실행합니다. $는 프롬프트 표시입니다. 괄호 안의 말은 그냥 제 설명입니다.


참 쉽죠?

5. 참고사항

기기는 USB 케이블을 이용해 연결할텐데, 가급적 컴퓨터 뒷쪽의 USB 포트로 연결하시기 바랍니다. 확장 USB 포트나 컴퓨터 앞쪽의 포트는 전송률이 떨어지는지 이미지 플래싱을 실패하는 경우가 간혹 있습니다.

아주 가끔 USB 케이블이 노후화 되어 플래싱에 실패하는 경우도 있습니다. 당황하지 말고 좋은 USB 케이블을 사용합시다.


참고한 글 :
https://plus.google.com/u/0/101901704178116997887/posts/gbd4jPcJwjZ
http://androidadvices.com/update-galaxy-nexus-gsm-official-ics-android-402/

댓글 없음:

댓글 쓰기