안드로이드 시스템 이미지를 Flashing(적절한 용어가 생각이 잘..;;)하기 위한 두 가지 방법이 있습니다.

1. 업데이트 복구 이미지를 이용해 기기를 Flashing하는 방법
이 방법은 Android SDK에 있는 adb tool 을 사용하며 업데트된 radio 및 복구 이미지를 기기의 SD card 의 복구 파티션에 복사하는 방법입니다. 이것은 윈도우, 맥OS, 리눅스에서 직접적으로 할 수 있는 방법이며 만약 안드로이드 개발자라면 이 방법을 추천한다고 하네요. 이 방법을 사용하기 위해 기기는 반드시 orginal factory bootloader(hboot 0.95.3000)를 가지고 있어야 합니다.

2. fastboot 명령어를 통한 기기를 Flashing하는 방법
이 방법은 조금 더 복잡하다고 하네요. 기기에 flashing하기 위해 adb tool과 업데이트 radio image와 fastboot tool 을 가지고 한는데, 만약 독립적으로 radio 및 시스템 이미지를 설치할 필요가 있거나 fastboot 에 좀 더 능숙하다면 이 방법이 더 유용할 수 있다고 합니다. 이 방법을 쓰기 위해서는 기기는 fastboot-compatible bootloader를 반드시 가지고 있어야 하며 original factory bootloader 는 필요는 없습니다.

두 가지 방법의 큰 차이점은 recovery-image 방법은 fastboot tool이 필요없다는 것이며 fastboot 사용하는 방법 대신에 당신은 updated recovery image를 복사하는데 adb를 사용한다는 것이라고 합니다. 나머지 단계는 동일하네요.

지금 서술되는 방법들은 지원되는 기기 타입은 아래 두가지로 제한되어 있습니다.
- HTC Dream hardware platform only!!!
- Device must have the original factory bootloader (hboot 0.95.3000) or a development bootloader that supports fastboot

다른 하드웨어 플랫폼이나 original factory bootloader가 없는 HTC Dream 하드에어 버전, bootloader 가 fastboot를 지원하지 않을 경우 flashing할 수 없다고 합니다. 게다가 T-mobile G1같은 상용 기기도 불가능한데 그 이유가 적절한 암호 서명(crytographic signatures)을 가지고 있지 않기 때문이라고 하네요.

Get the Tools
- recovery-image 방법으로 할려면 adb tool 필요하며 Android SDK 최신버전을 받으면 됩니다.
- fastboot 방법으로 할려면 fastboot 툴과 adb tool 이 필요합니다.
- 두 가지 방법 다 윈도우 환경에서는 USB 드라이버 업데이트 해야 합니다.

Adb Tool
최신 Andorid SDK 받으면 <sdk>/tools/ directory. 여기에 있습니다.
최신 SDK는 여기서 받으면 됩니다.
http://developer.android.com/sdk/index.html

Fastboot Tool
fastboot 방법 사용하려면, fastboot 명령어툴이 필요합니다.
fastboot source 코드는 Android open source repository 에 있고 그 tree로 부터 빌드한 어느 곳이든 컴파일 된다. 만약 open source tree로 부터 빌드했다면 이 위치에 찾을 수 있을 것이라고 하는데 해 보진 않았습니다;
<build-dir>/out/host/<platform>/bin/
편리한대로 다운로드 받으시면 됩니다. (링크 참조)
맥OS라든지 리눅스에서는 어디든 받아서 사용해도 되지만, 윈도우 경우 꼭 AdbWinApi.dll 파일이 있는 Android SDK tool 디렉토리에 넣어서 사용하도록 합니다. 아니면 동작 안할 수도 있다고 하네요.

USB Driver
윈도우일 경우엔 USB 드라이버를 꼭 최신버전으로 업데이트 합니다. 더 많은 정보를 얻으려면
http://developer.android.com/guide/developing/device.html#setting-up 참조합니다.

Download the Image Package
- recovery-image 방법 사용할 경우엔 recovery-image package와 radio image package 만 받습니다.
- fastboot method 경우엔 system image package 와 radio image package 만 받습니다.

Radio Image Download
두 가지 방법 다 이걸 필요로 합니다. 각각의 버전은 radio firmware 특정 버전 상에서만 실행될 수 있게 설계 되었으며, 일반적으로 각각의 버전은 radio firmware의 새로운 버전에 의존합니다. 그래서 기기에 새로운 system image를 flash 할때마다 update 또는 downgrade 해야 한다고 하네요. 플랫폼에 의해 요구되는 버전으로 radio firmware를 업데이트 해야 하며, 만약 radio image를 업데이트 안하면 문제가 생길 수 있다.

일단 radio image package를 받으면 압축을 풀필요는 없습니다. 그냥 adb 명령어를 통해 알아서 참조됩니다. 그래서 어디든 저장해도 상관은 없지만 파일 유지 보수 관리를 위해 네이밍은 신경써서 하라고 하네요

System Image Download
fastboot 방법 쓸려면 요걸 받아야 하는데요 다양한 버전이 있으므로 필요한 버전이 어떤지 이해하고 어떤 버전을 받을 것인지 확실히 하라고 합낟. 개발을 위해서는 어플이 엊힐 수 있는 가장 낮은 버전의 플랫폼을 선택하라고 하네요. 예를 들어 sdk1.1를 사용하고 어플은 1.1 api를 사용했다면, 1.1시스템 이미지를 다운로드 받아야 하구요, 만약 1.1 sdk 사용하는데 1.1 api를 사용하지 않은 어플이라면 1.0 이미지면 충분하다고 하네요.

테스트를 위해 해당 어플이 호환성이 있는지 모든 플랫폼 버전을 다운받아서 잘 실행되는지를 고려하라고 하네요.

각각의 system image 패키지는 zip 압축이며 내부에 여러 파일이 들어있네요
boot image : 커널과 initrd(초기화설정파일?)이 포함
recovery image : 시스템 rebuilding/updating 사용되는 파일 포함
systrem image : 특정 버전의 안드로이드 platform/apps 를 포함

각각의 이미지는 상호 독립적이며 함께 있어야 flash 가능합니다. 예를 들어 같은 image package안에 boot 나 recovery image 없이 system image만으로는 flash가 불가능 합니다.   

일단 system image 패키지 받은 다음 압축을 풀 필요는 없으며 fastboot로 부터 바로 참조 됩니다. 어느 곳에 받아도 상관없으며 radio image처럼 유지보수관리를 위해 네이밍만 신경쓰라고 하네요

Recovery Image Download
recovery-image 방법 사용경우 사용하는데 씁니다.

Currently, a recovery image packages is available only for the Android 1.1 platform version. 이런 문구가 있는데;; 이상하네요. 1.0만 없지 1.1~1.6까지는 다 있는데 말이죠;; 문서 업데이트를 잘 안하나 봅니다;

압축된 패키지 내용은 다음과 같네요
boot image
recovery image
system image
radio image : 호환성 있는 radio firmware를 포함

각각의 recovery 패키지는 서로 상호 독립적이며 같이 있어야 하며 다운로드 받으면 압축필요없고.. 블라블라.. 위에 system image내용과 이 후 내용은 동일하네요;

Update the Devide Radio Firmware
자 이제 Radio 업데이트 시작입니다. recovery-image든 fastboot 방법이든 system 업데이트 전에 radio firmware를 해야 하는데요 이 단계는 호환성 있는 radio image 가 기기에 있는지, 업데이트된 recovery image가 로딩될때 bootloader에 의해 강제 필수조건인 버전 안정한지를 검사합니다.

tool 설치되었구 필요한 image 파일을 받았으면 아래와 같이 수행합니다.
1. SD card를 기기에 넣습니다.
2. 부팅 시킵니다.
3. USB로 개발 기기를 연결합니다.
4. 명령어 창에서 장치가 인식되었는지 검사합니다.

C:\eclipse_galileo\plugins\android-sdk-windows-1.6_r1\tools>adb devices
List of devices attached
HT99ELZ00496    device

5. adb push 명령어를 이용해 radio image를 sdcard 디렉토리에 update.zip 파일 이름으로 복사합니다.

C:\eclipse_galileo\plugins\android-sdk-windows-1.6_r1\tools>adb push ota-radio-2
_22_19_26I.zip /sdcard/update.zip
1068 KB/s (9181622 bytes in 8.390s)

* 5번 수행에서 주의 사항은 kb표시로 복사가 완료된 것처럼 보이지만 실제로 백그라운드에서는 복사가 수행되고 있을 수도 있습니다. 그래서 1~2분 정도 충분히 기다리신후 다음 단계로 넘어갑니다 안그러면 혹시 나중에 업데이트시 "bad update.zip"이 발생할 수도 있습니다.
끝났다고 판단되면 아래 sync 명령으로 확인해 봅니다.

C:\eclipse_galileo\plugins\android-sdk-windows-1.6_r1\tools>adb shell sync

C:\eclipse_galileo\plugins\android-sdk-windows-1.6_r1\tools>

adb shell sync 실행하면 장치로 복사된 모든 데이터 리스트 들이 보인다는데; 이상하게 아무것도 안나와서 직접 adb shell 로 sdcard를 접근해서 리스트에는 있는 걸 확인후 계속 진행했지요.

C:\eclipse_galileo\plugins\android-sdk-windows-1.6_r1\tools>adb shell
$ su
su
# ls
ls
sqlite_stmt_journals
cache
sdcard
etc
init
logo.rle
init.trout.rc
init.goldfish.rc
init.rc
default.prop
system
data
sys
proc
sbin
root
dev
# cd sdcard
cd sdcard
# ls
ls
dcim
doom
update.zip



6. 그런다음 장치를 끕니다 다시 켜기 전에 Home키를 꾸욱 누른채로 END키 눌려 장치를 켭니다. 그러면 느낌표의 아이콘이 보입니다. 이 화면의 복구모드 화면입니다.
7. 복구모드 화면에서 키패드를 열고 ALT+l(L)를 누르면 복구 콘솔에 로그들이 보입니다.
8. 다음으로 ALT+s를 누르면 update 설치가 되며 installing update 아이콘 상태와 진행 상태바가 보입니다.
9. 완료되면 Home+Back키를 눌릅니다 그러면 몇초동안 "updating firmware" 아이콘이 보이면서 firmware를 업데이트 합니다. 그리고 자동 리부팅됩니다.

이제 system image나 recovery image를 업데이트 할수 있는 상태가됩니다.
radio image 버전 체크를 하기 위해서는 fastboot mode로 부팅하면 됩니다. fastboot 부팅 방법은 BACK 홀딩한 채로 END를 누릅니다. 나가고 싶으면 MENU+SEND+END 키를 누릅니다. 데브폰 경우에는 SEND를 call키, END를 End Call키라고 부른다고 하네요 

참고로 제 데브폰 상태는

DREA100 PVT 32B
HBOOT-0.95.3000
CPLD-4
RADIO-2.22.19.261
Oct 20 2008

이네요 잘 업데이트 된 걸 확인했습니다 ^^

Copy the Recovery Image Package to the Device
fastboot 방법으로 하고 있다면 이 단계를 필요없습니다. 다음의 Flash the System Image Package to the Device단계를 수행하면 됩니다.)

1. 일단 recovery image를 SD카드에 복사합니다.
2. 장치를 켭니다.
3. USB로 장치 연결합니다.
4. adb devices로 잘 연결 되었는지 장치 확인 후 recovery 파일을 sd디렉토리에 update.zip으로 복사합니다.

이런.. 위 단계 radio image 업데이트 단계와 동일하군요; 그럼 더 이상 기술은 하지 않고 실행 결과만 보겠습니다. 단 조금 다른점은 이전 보다 로그 정보가 많다는 겁니다. file deleting 도 많이 보이네요.

Flash the System Image Package to the Device
이 단계는 나중에 한번 시도 해봐야겠네요; 시간 날때 정리하겠습니다; 너무 졸려서요;

Troubleshooting
한 번에 수행이 잘 끝나서;(나만 괜찮으면 돼! 심리가 갑자기 발동하네요;; 이런거 싫은데;;ㅎㅎ) 원문 글 참조해서 봐주셨으면 하네요; 이 것 역시 시간날때 간단히 정리합지요 ^^;

자.. 1.6 설치가 잘 끝났습니다. 1.5와 거의 비슷한데 UI조금 바뀐게 있고 이것저것 기능 추가 된것도 간간히 보이네요~ 2.0 이미지 나오면 그 때 또 후기 올릴께요.
즐거운 안드로이드 개발 하세요~

참조 원문: http://developer.htc.com/adp.html


Posted by 빈솔B
,