실패기 : LGT galaxy tab(갤탭) 소스로 안드로이드 컴파일 (android compile) - ubuntu 11.04 + android 2.3.3
카테고리 없음 2012. 1. 20. 16:22
오픈 소스 삼성에 있는 방법을 그대로 했는데, 갤탭에 이미지를 굽는 것만 하고 그 이상이 되지 않는다. 결국 컴파일만 한 것 같다.
먼가 더 있는 것 같은데.. 찾기 어렵다. 하여튼 실패기도 넣는 것도 좋을 것 같아서 적어본다.
--------------------------------
기존 정보는 오픈소스 삼성 싸이트(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: ************************************************************ 1. 32비트 운영체제일 때는 ./build/core/main.mk 파일을 아래와 같이 주석을 추가한다. .
2. 다음 mk 파일에서 m64->m32로 변경한다. ./external/clearsilver/cgi/Android.mk
|
<갤탭 소스 다운로드>
LGT 의 갤럭시탭 소스를 다운받는다.
https://opensource.samsung.com/reception/receptionSub.do?method=search&searchValue=m180
최신버전은 update3을 다운받는다. 다운받아서 내용을 보면, 달랑 kernel과 readme.txt 파일밖에 없다.
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 |
파일을 모아본다.
tar.gz으로 묶인 플랫폼 소스의 readme.txt 파일을 보면, build 설명 방법이 잘 나와 있다.
| How to build 2. Overwrite modules that you want to build. 3. Add the following lines at the end of build/target/board/generic/BoardConfig.mk BOARD_HAVE_BLUETOOTH := true 4. make |
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/ 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 한다.
(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 해 본다.
그리고, 윈도우에서 7zip으로 tar 파일로 만들면 upload failed 가 뜬다. ubuntu에서 tar로 묶는다.
tar로 묶은 후 Odin으로 굽는다.
갤탭 로고는 나오는데, 무한 부팅되면서 이미지 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



댓글을 달아 주세요
님이 최초로 겔럭시탭7 에 우분투를 올리는 작업을 하신것 같은데 참 안타깝습니다. 다음번엔 성공하시길 바래요.
님이 최초로 겔럭시탭7 에 우분투를 올리는 작업을 하신것 같은데 참 안타깝습니다. 다음번엔 성공하시길 바래요.
님이 최초로 겔럭시탭7 에 우분투를 올리는 작업을 하신것 같은데 참 안타깝습니다. 다음번엔 성공하시길 바래요.
^M을 빼셔서 그런거일수도 있어요 ㅎ
안녕하세요 좋은내용 잘 읽었습니다. 다름아니라 저도 공부해볼겸 삼성 오픈소스를 받아 지시된 방법으로 컴파일하여 결과물은 나왔는데 탭에 올리니 작동하지 않더라구요 저는 sk탭이구요 혹시 문제 해결되셨나요?
감사합니다.
도움이 됬습니다 ㅎㅎ
저도 이번에 옵티머스 LTE 포팅작업을 해보느라
이러저러 뻘짓을 해보는데, 안되던문제 일부가 해결됬네요 감사합니다.