오픈 소스 삼성에 있는 방법을 그대로 했는데, 갤탭에 이미지를 굽는 것만 하고 그 이상이 되지 않는다.  결국 컴파일만 한 것 같다.

먼가 더 있는 것 같은데.. 찾기 어렵다.  하여튼 실패기도 넣는 것도 좋을 것 같아서 적어본다.

 

--------------------------------

 

기존 정보는 오픈소스 삼성 싸이트(https://opensource.samsung.com)에 공개되어 있다.

갤럭시탭 소스는 두가지 버전이 있다. 해외버전인 gt-p1000과 국내버전인 SHW-M180 버전이 있다. 나는 국내버전의 LGT 용만 가지고 테스트하려고 한다.


https://opensource.samsung.com/reception/receptionSub.do?method=search&searchValue=gt-p1000
https://opensource.samsung.com/reception/receptionSub.do?method=search&searchValue=m180

 

<운영체제 확인>

$ dpkg -s libc6  | grep Archite
Architecture: i386

이러면  32 비트, amd64가 나오면 64비트이다.

진저브레드 이상 컴파일하려면 64비트에서 돌리는 것이 편하다.

다운로드 링크 –> http://www.ubuntu.com/download/ubuntu/download

 

* 참고 32비트에서 컴파일 하려면. 좀 귀찮은 작업을 해야 한다.

아래와 같은 에러 문구가 나와서 여기저기 손봐야 한다.

build/core/main.mk:76: ************************************************************
build/core/main.mk:77: You are attempting to build on a 32-bit system.
build/core/main.mk:78: Only 64-bit build environments are supported beyond froyo/2.2.
build/core/main.mk:79: ************************************************************
build/core/main.mk:80: *** stop.  Stop.

1. 32비트 운영체제일 때는  ./build/core/main.mk 파일을 아래와 같이 주석을 추가한다. .

73 ifeq ($(BUILD_OS),linux)
74 build_arch := $(shell uname -m)
75 ifneq (64,$(findstring 64,$(build_arch)))
76 $(warning ************************************************************)
77 $(warning You are attempting to build on a 32-bit system.)
78 $(warning Only 64-bit build environments are supported beyond froyo/2.2.)
79 $(warning ************************************************************)
80 $(error stop)
81 endif
82 endif

=>

73 #ifeq ($(BUILD_OS),linux)
74 #build_arch := $(shell uname -m)
75 #ifneq (64,$(findstring 64,$(build_arch)))
76 #$(warning ************************************************************)
77 #$(warning You are attempting to build on a 32-bit system.)
78 #$(warning Only 64-bit build environments are supported beyond froyo/2.2.)
79 #$(warning ************************************************************)
80 #$(error stop)
81 #endif
82 #endif

 

2. 다음 mk 파일에서 m64->m32로 변경한다.

./external/clearsilver/cgi/Android.mk
./external/clearsilver/java-jni/Android.mk
./external/clearsilver/util/Android.mk
./external/clearsilver/cs/Android.mk

LOCAL_CFLAGS += -m64
LOCAL_LDFLAGS += –m64

->

LOCAL_CFLAGS += -m32
LOCAL_LDFLAGS += –m32

 

 

 

<갤탭 소스 다운로드>

LGT 의 갤럭시탭 소스를 다운받는다.

https://opensource.samsung.com/reception/receptionSub.do?method=search&searchValue=m180

image

 

최신버전은 update3을 다운받는다. 다운받아서 내용을 보면, 달랑 kernel과 readme.txt 파일밖에 없다.

image

 

readme.txt 파일에 따르면, update2.zip 파일에 있는 플랫폼 파일을 다운받으라고 한다. 다운받고 커널 파일과 플랫폼 파일을 합친다.

<NOTICE>

The Platform opensource code is the same as that of TF09 version.

Get TF09 version opensource code - filename: SHW-M180L_Opensource_Update2.zip
(download site: opensource.samsung.com)
Unzip it, then you will see the file SHW-M180L_Platform_Gingerbread.tar.gz

 

파일을 모아본다.

image

 

tar.gz으로 묶인 플랫폼 소스의 readme.txt 파일을 보면, build 설명 방법이 잘 나와 있다.

How to build


1. Get android open source.
    : version info - Android gingerbread 2.3.3
    ( Download site : http://source.android.com )

2. Overwrite modules that you want to build.
- \external\iproute2 : Write "ip \" into "build\core\user_tags.mk" so that add this module.
- \external\webkit  : Delete this source tree at Android gingerbread and then copy & execute "clean build".
- \external\alsa-lib : Write "libasound \" into "build\core\user_tags.mk" so that add this module.

3. Add the following lines at the end of build/target/board/generic/BoardConfig.mk

BOARD_HAVE_BLUETOOTH := true
BOARD_HAVE_BLUETOOTH_BCM_BTLA := true
BT_ALT_STACK := true
BRCM_BT_USE_BTL_IF := true
BRCM_BTL_INCLUDE_A2DP := true
BOARD_USES_ALSA_AUDIO := true

4. make
- ./build.sh user

 

ubuntu 11.10 amd64 비트를 기반으로 설명한다.


<소스 다운로드>

* 참고자료
http://source.android.com/source/downloading.html

* jdk 6 설치

$ sudo add-apt-repository "deb http://archive.canonical.com/ lucid partner"
$ sudo apt-get update
$ sudo apt-get install sun-java6-jdk

 

* 필요 패키지 설치

$ sudo apt-get install git-core gnupg flex bison gperf build-essential  zip curl zlib1g-dev libc6-dev lib32ncurses5-dev ia32-libs x11proto-core-dev libx11-dev  lib32z-dev libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown libxml2-utils xsltproc lib32readline-gplv2-dev

(원래 문서에서는 lib32z-dev를 설치하라고 되어 있지만, Ubuntu 11.10 64비트에서는 해당 모듈을 설치할 수 없다. 따라서 대안인 lib32readline-gplv2-dev을 설치한다.)

$ sudo apt-get install libx11-dev:i386

 

* repo 설치

$ mkdir ~/bin
$ PATH=~/bin:$PATH
$ curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo
$ chmod a+x ~/bin/repo

 

* 안드로이드 2.3.3 소스 다운로드
$ mkdir android-2.3.3-galtab
$ cd android-2.3.3-galtab
$ repo init -u https://android.googlesource.com/platform/manifest -b android-2.3.3_r1
$ repo sync

 

* LGT 삼성 갤탭 소스 복사
vmware player에서 소스가 있는 곳을 공유(/mnt/hgfs/vmware-share)해서 복사한다.


$ tar zxvf /mnt/hgfs/vmware-share/SHW-M180L_Platform_Gingerbread.tar.gz –C .

$ tar zxvf /mnt/hgfs/vmware-share/SHW-M180L_Kernel_Gingerbread.tar.gz –C .

$ mv Platform/ android-2.3.3-galtab-platform

$ mv Kernel/ android-2.3.3-galtab-kernel

 


<커널 소스 빌드>

* 툴체인 (Tool Chain) 설치

$ cd /usr/local
$ wget http://www.codesourcery.com/public/gnu_toolchain/arm-none-linux-gnueabi/arm-2009q3-67-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2
$ tar xvf arm-2009q3-67-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2

* build.sh 파일 수정

$ cd ~/android-2.3.3-galtab-kernel
$ vi build_kernel.sh

1. TOOLCHAIN과 TOOLCHAIN_PREFIX 변수를 수정한다.

TOOLCHAIN=~/opt/toolchains/arm-2009q3/bin/
TOOLCHAIN_PREFIX=arm-none-eabi-
=>
TOOLCHAIN=/usr/local/arm-2009q3/bin/  
TOOLCHAIN_PREFIX=arm-none-linux-gnueabi-        

2. 28번째 줄에 있는 ^M은 삭제한다. (빌드시 에러처럼 보일 수 있어서.)

output 디렉토리를 확인한다.

ANDROID_OUT_DIR=`pwd`/Android/out/target/product/SHW-M180L

* Kernel 빌드

$ cd ~/android-2.3.3-galtab-Kernel/Kernel

$ make menuconfig

General setup->Initramfs source file->exit->exit->Yes 하고 설정을 save 한다.

image

(initramfs 적용방법과 적용하지 않는 방법 둘 다 써도 문제임)

$ cd ..

$ ./build_kernel.sh

(sh 내부에 ARCH=arm, tool chain 확인)

빌드 결과는 zImage과 커널 모듈파일이다. 커널 이미지가 제대로 있는지 확인한다.

$ ls ~/android-2.3.3-galtab-kernel/Kernel/arch/arm/boot/zImage

커널 모듈 파일이 제대로 있는지 확인한다.

$ ls -al ~/android-2.3.3-galtab-kernel/Kernel/drivers/*/*

 

* 나중에 이 파일을 이용하면 성능 효과를 높일 수도 있을 수 있을 것 같아서 우선 기억해둔다.

arch/arm/configs/p1_kor_M180L_defconfig 

* Clean 하기

$ ./build_kernel.sh Clean

 

<커널 파일을 tar로 만들기>

$ cd ~

$ tar cvf SHW-M180L-kernel.tar android-2.3.3-galtab-kernel/Kernel/arch/arm/boot/zImage
android-2.3.3-galtab-kernel/Kernel/arch/arm/boot/zImage

기존 이미지를 풀어서 새로 컴파일한 zImage 파일만 replace  해 본다.

image

 

그리고, 윈도우에서 7zip으로 tar 파일로 만들면 upload failed 가 뜬다. ubuntu에서 tar로 묶는다.

image

tar로 묶은 후 Odin으로 굽는다.

image

image

 

갤탭 로고는 나오는데, 무한 부팅되면서 이미지 upload 실패했다.

zImage 크기가 순정과 컴파일 이후의 것이 800kb가 차이날 정도로 다르다. 먼가 더 있는 것 같은데. 잘 모르겠다.

 

 

<안드로이드 소스 빌드>

$ cd ~/android-2.3.3-galtab

ubuntu 11.10에서 에러가 발생할 수 있으니. 일부 make 파일을 수정해야 한다.

$ vi frameworks/base/libs/utils/Android.mk

LOCAL_CFLAGS += -DLIBUTILS_NATIVE=1 $(TOOL_CFLAGS)

=>

LOCAL_CFLAGS += -DLIBUTILS_NATIVE=1 $(TOOL_CFLAGS) -fpermissive

-fpermissive에 대한 설명은 gcc 4.1 이슈로서, 자세한 내용은 링크(http://nineye.com/blog/archives/543)를 참조한다.

$ vi build/core/combo/HOST_linux-x86.mk

HOST_GLOBAL_CFLAGS += -D_FORTIFY_SOURCE=0   
HOST_GLOBAL_CFLAGS += -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=0

FORTIFY_SOURCE에 대한 설명은 링크(http://studyfoss.egloos.com/5280245)를 참조한다.


$ source build/envsetup.sh

$ lunch full-eng

============================================
PLATFORM_VERSION_CODENAME=REL
PLATFORM_VERSION=2.3.3
TARGET_PRODUCT=full
TARGET_BUILD_VARIANT=eng
TARGET_SIMULATOR=false
TARGET_BUILD_TYPE=release
TARGET_BUILD_APPS=
TARGET_ARCH=arm
HOST_ARCH=x86
HOST_OS=linux
HOST_BUILD_TYPE=release
BUILD_ID=GRI40
============================================

$ make

….
Target system fs image: out/target/product/generic/obj/PACKAGING/systemimage_intermediates/system.img
Install system fs image: out/target/product/generic/system.img
Target ram disk: out/target/product/generic/ramdisk.img
Target userdata fs image: out/target/product/generic/userdata.img
Installed file list: out/target/product/generic/installed-files.txt

 

 

<플랫폼 소스 수정 및 빌드>

$ cd ~/android-2.3.3-galtab-platform/

$ vi build/target/board/generic/BoardConfig.mk

다음을 추가한다.
BOARD_HAVE_BLUETOOTH := true
BOARD_HAVE_BLUETOOTH_BCM_BTLA := true
BT_ALT_STACK := true
BRCM_BT_USE_BTL_IF := true
BRCM_BTL_INCLUDE_A2DP := true
BOARD_USES_ALSA_AUDIO := true

$ vi build.sh

안드로이드 컴파일했던 디렉토리를 PLATFORMPATH로 수정한다.

export PLATFORMPATH="/home/kimyonghwan/android-2.3.3-galtab"

$ cd ~/android-2.3.3-galtab-platform/

$ ./build.sh user

Posted by '김용환'
,