Android Open Source
▶ HTC Android Kernel Open Source
▶ Samsung Android Kernel Open Source
▶ Motorola Android Kernel(+α) Open Source
REAL TARGET BOARD 없이 안드로이드 포팅기술 익히기
작성자좋은이
작성일2009-01-30 (금) 23:05
ㆍ추천: 0 ㆍ조회: 8100
IP: 211.xxx.253
첨부#1 zImage.versatile (1,633KB) (Down:262)
첨부#2 capture.jpg (173KB) (Down:63)

수많은 삽질끝에 QEMU 를 활용하여 안드로이드 포팅기술을 실습해 볼 수 있는 방법을 찾았습니다.

http://mtcc.kr/?mid=camp_techdata 에 접속해 보시면, 삽질의 흔적을 보실 수 있습니다.

방법을 알려드리겠습니다.

1. 업그레이드 된 QEMU 바이너리 설치하기

우분투에서 다음과 같이 최신의 QEMU 바이너리를 설치합니다.
$sudo apt-get install qemu

2. QEMU용 안드로이드 루트파일시스템 생성하기

먼저, 안드로이드 전체소스를 빌드 하십시오.

파일시스템이 저장될 디스크이미지 생성
$dd if=/dev/zero of=rootfs.ext2 bs=1024 count=128000

ext2 파일시스템으로 포멧하기
$mkfs.ext2 rootfs.ext2

loop back디바이스로 마운트 하기
$mkdir tmproot
$sudo mount -o loop rootfs.ext2 tmproot

안드로이드 파일시스템을 마운트된 디스크이미지로 복사하기
$cd tmproot
$cp -r <여러분의 안드로이드 소스 저장된 경로>/out/target/product/generic/root/* .
$cp -r <여러분의 안드로이드 소스 저장된 경로>/out/target/product/generic/data/ .
$cp -r <여러분의 안드로이드 소스 저장된 경로>/out/target/product/generic/system/ .

안드로이드 루트파일 시스템이 rw로 mount 되도록 init.rc 수정 --->이유는 아시는분은 아실껍니다.... ^_^
$vi init.rc
다음의 부분을 찾아서
mount rootfs rootfs / ro remount
다음과 같이 수정합니다.
mount rootfs rootfs / rw remount
저장후 빠져나옵니다.

루프백 디스크이미지 언마운트 하기
$cd ..
$sudo umount tmproot

3. QEMU를 기동하여 안드로이드를 부팅하기
첨부된 커널이미지를 받아서 pwd에 저장합니다.

다음의 명령으로 안드로이드를 기동해 보십시오

$qemu-system-arm -kernel zImage.versatile -M versatilepb -hda rootfs.ext2 -usb -usbdevice wacom-tablet -no-reboot -append "root=/dev/sda rw rootfstype=ext2 init=/init "

4. 보너스, ^_^ - QEMU용 안드로이드 커널 빌드하기

$cd <여러분의 안드로이드 소스 저장된 경로>/kernel
$make menuconfig ARCH=arm

타겟 디바이스를 versatile 로 설정하고, 각종 안드로이드 feature와, SCSI하드디스크, 등 적절한 디바이스를 설정합니다.
다음의 명령으로 커널을 빌드합니다.

$make ARCH=arm CROSS_COMPILE=<여러분의 안드로이드 소스 저장된 경로>/prebuilt/linux-x86/toolchain/arm-eabi-4.2.1/bin/arm-eabi-

=============================================================================
현재, 안드로이드 부팅화면만 볼 수 있고, 마우스 이벤트는 전달되는데,.. 좌표값이 제데로 전달되지 않고 있습니다.
안정적인 동작을 위해서는 더 많은 삽질이 필요할 것 같습니다.

좀 더 자세히 설명드리고 싶지만, 개인시간이 여의치 않고, 저도 지식의 한계가 있어서,...

고수님들의 많은 추가작업 부탁드립니다.

+ Recent posts