82
SKKU Embedded Software Lab. 77 1 SKKU Embedded Software Lab. 시스템소프트웨어특론 (2014 2학기) Sungkwankwan University Tizen Porting 1: Tizen 개발 환경 구축 및 플랫폼 빌드

TizenPorting 1: Tizen개발환경구축및플랫폼빌드nyx.skku.ac.kr/wp-content/uploads/2014/11/Tizen-Porting-Platform_Build.pdf · SKKU Embedded Software Lab. 77 2 •Tizen Porting

  • Upload
    others

  • View
    4

  • Download
    0

Embed Size (px)

Citation preview

Page 1: TizenPorting 1: Tizen개발환경구축및플랫폼빌드nyx.skku.ac.kr/wp-content/uploads/2014/11/Tizen-Porting-Platform_Build.pdf · SKKU Embedded Software Lab. 77 2 •Tizen Porting

SKKU Embedded Software Lab.

77

1

SKKU Embedded Software Lab.

시스템소프트웨어특론 (2014 2학기)Sungkwankwan University

Tizen Porting 1:Tizen 개발 환경 구축 및 플랫폼 빌드

Page 2: TizenPorting 1: Tizen개발환경구축및플랫폼빌드nyx.skku.ac.kr/wp-content/uploads/2014/11/Tizen-Porting-Platform_Build.pdf · SKKU Embedded Software Lab. 77 2 •Tizen Porting

SKKU Embedded Software Lab.

77

2

SKKU Embedded Software Lab.

• Tizen Porting 1– Tizen 개발 환경 구축

• SCM Tools, Build Tool, Packaging Tools• Tizen Platform IDE

– Tizen 플랫폼 빌드 및 이미지 만들기• 방법 1: 전체 패키지 빌드• 방법 2: 일부 패키지만 빌드

• Tizen Porting 2– Tizen 커널 빌드– 부트로더 포팅, 파티션 설정 및 이미지 플래시– 플랫폼 설정 및 문제 사항 해결

Contents

Page 3: TizenPorting 1: Tizen개발환경구축및플랫폼빌드nyx.skku.ac.kr/wp-content/uploads/2014/11/Tizen-Porting-Platform_Build.pdf · SKKU Embedded Software Lab. 77 2 •Tizen Porting

SKKU Embedded Software Lab.

77

3

SKKU Embedded Software Lab.

1. Tizen 개발 환경 구축

Page 4: TizenPorting 1: Tizen개발환경구축및플랫폼빌드nyx.skku.ac.kr/wp-content/uploads/2014/11/Tizen-Porting-Platform_Build.pdf · SKKU Embedded Software Lab. 77 2 •Tizen Porting

SKKU Embedded Software Lab.

77

4

SKKU Embedded Software Lab.

• Source Code Management(SCM) Tools (Before build)– Git, Repo, Gerrit

• Build Tool– GBS(Git Build System)

• Packaging Tools (After build)– MIC, RPM

• Tizen Platform IDE

Tizen 개발 도구

Page 5: TizenPorting 1: Tizen개발환경구축및플랫폼빌드nyx.skku.ac.kr/wp-content/uploads/2014/11/Tizen-Porting-Platform_Build.pdf · SKKU Embedded Software Lab. 77 2 •Tizen Porting

SKKU Embedded Software Lab.

77

5

SKKU Embedded Software Lab.

1. Git, Repo 설치1. Git 설치(8p)2. Repo 설치(15p)

2. Gerrit 서버에 개발자 등록 및 초기 설정1. Gerrit 개발자 등록 및 초기 설정(19~24p)

3. GBS, MIC 설치1. GBS 설치(26p)2. MIC 설치(29p)

개발 환경 구축 과정 요약

Page 6: TizenPorting 1: Tizen개발환경구축및플랫폼빌드nyx.skku.ac.kr/wp-content/uploads/2014/11/Tizen-Porting-Platform_Build.pdf · SKKU Embedded Software Lab. 77 2 •Tizen Porting

SKKU Embedded Software Lab.

77

6

SKKU Embedded Software Lab.

• A revision control and source management tool• Features

– Free and open source(GNU GPL v2)– Branching and merging– Smaller and faster than other SCM tools– Distributed– Data assurance– Staging area

Git

Page 7: TizenPorting 1: Tizen개발환경구축및플랫폼빌드nyx.skku.ac.kr/wp-content/uploads/2014/11/Tizen-Porting-Platform_Build.pdf · SKKU Embedded Software Lab. 77 2 •Tizen Porting

SKKU Embedded Software Lab.

77

7

SKKU Embedded Software Lab.

• Working directory: 실제 파일– “add” command: staging area에 파일/디렉토리 추가

• Staging area(index): commit될 파일– “commit” command: 현재 staging area를 하나의 버전으로서

repository에 반영

• Repository(HEAD): 이미 commit된 file– Hash value로 식별되는 content-addressable object로서 보관됨.

Git: Key Concepts

Page 8: TizenPorting 1: Tizen개발환경구축및플랫폼빌드nyx.skku.ac.kr/wp-content/uploads/2014/11/Tizen-Porting-Platform_Build.pdf · SKKU Embedded Software Lab. 77 2 •Tizen Porting

SKKU Embedded Software Lab.

77

8

SKKU Embedded Software Lab.

• 설치하기– $ sudo apt-get install git

• Repository 시작하기– 새 repository 만들기(init)

• $ git init– Working directory 있는 repository 만들기

• $ git init --bare– Working directory 없는 repository 만들기

– 기존 repository 복제하기(clone)• 같은 PC에 repository가 있는 경우

$ git clone <local repository path>– ex. git clone /home/user/tizen-platform

• 다른 PC에 repository가 있는 경우$ git clone protocol://user@host:path– ex. git clone ssh://[email protected]:external/systemd

Git: Commands

Page 9: TizenPorting 1: Tizen개발환경구축및플랫폼빌드nyx.skku.ac.kr/wp-content/uploads/2014/11/Tizen-Porting-Platform_Build.pdf · SKKU Embedded Software Lab. 77 2 •Tizen Porting

SKKU Embedded Software Lab.

77

9

SKKU Embedded Software Lab.

• Staging area에 추가하기(add)– $ git add <file name>– $ git add *

• Staging area를 하나의 버전으로 commit– $ git commit -m “Description about this version”– $ git commit -a -m “Description about this version”

• -a: staging area에 자동으로 추가하는 옵션

Git: Commands

Page 10: TizenPorting 1: Tizen개발환경구축및플랫폼빌드nyx.skku.ac.kr/wp-content/uploads/2014/11/Tizen-Porting-Platform_Build.pdf · SKKU Embedded Software Lab. 77 2 •Tizen Porting

SKKU Embedded Software Lab.

77

10

SKKU Embedded Software Lab.

• Local commit을 remote repository로 밀어넣기(push)– $ git push <remote repository 이름> <remote branch 이름>

• Remote repository 이름의 기본값: origin• Remote branch 이름의 기본값: master• ex. git push origin master

• Remote repositor의 주소(URI) 알려주기– 해당 repository가 remote repository에서 복제된 것이 아닌 경우,

remote repository의 주소를 알려주면 push 명령 사용 가능– $ git remote add <remote repository 이름> <remote repository

주소>• ex. git remote add origin ssh://[email protected]:external/systemd

Git: Commands

Page 11: TizenPorting 1: Tizen개발환경구축및플랫폼빌드nyx.skku.ac.kr/wp-content/uploads/2014/11/Tizen-Porting-Platform_Build.pdf · SKKU Embedded Software Lab. 77 2 •Tizen Porting

SKKU Embedded Software Lab.

77

11

SKKU Embedded Software Lab.

• 가지치기(branch)와 합치기(merge)– 서로 다른 개발 흐름을 분리할 때 유용– Default branch: master– 일반적으로는 분리된 develop branch를 만들고, 이 branch에서

작업함.– 하나의 topic을 추가하는 개발 과정을 수행할 때에도 topic마다

branch를 하나씩 만듦.– Branch의 개발이 끝나고 나면 원래 branch로 합침(merge).

Git: Commands

Page 12: TizenPorting 1: Tizen개발환경구축및플랫폼빌드nyx.skku.ac.kr/wp-content/uploads/2014/11/Tizen-Porting-Platform_Build.pdf · SKKU Embedded Software Lab. 77 2 •Tizen Porting

SKKU Embedded Software Lab.

77

12

SKKU Embedded Software Lab.

• 새 branch 만들기– $ git branch <branch 이름>

• ex. $ git branch feature_x

• 다른 branch 합치기

Git: Commands

– $ git merge <합칠 branch의 이름>• ex. (master branch로 이동한 후 feature_x를 master로 합침)

$ git checkout master$ git merge feature_x

• Branch 목록 보여주기– $ git branch --list

• Remote branch reference 목록 보여주기– $ git branch --remotes

• 다른 branch로 옮기기(checkout)– $ git checkout <branch 이름>

Page 13: TizenPorting 1: Tizen개발환경구축및플랫폼빌드nyx.skku.ac.kr/wp-content/uploads/2014/11/Tizen-Porting-Platform_Build.pdf · SKKU Embedded Software Lab. 77 2 •Tizen Porting

SKKU Embedded Software Lab.

77

13

SKKU Embedded Software Lab.

• Commit log 보여주기– 과거 commit의 hash value와 description을 보여줌– $ git log

• 이전 commit으로 옮기기(checkout)– $ git checkout <commit의 hash value>

• ex.$ git log

Git: Commands

commit 783c82ff64eda9f03401834de906eca77d01f691Author: Gyeonghwan Hong <[email protected]>Date: Mon Sep 22 10:37:44 2014 +0900

Second version commit: only prototype done

commit 712943bb31bf85430e1a027abe197e5b88a26110Author: Gyeonghwan Hong <[email protected]>Date: Thu Aug 28 12:08:17 2014 +0900

initial version commit: there are only specification files

$ git checkout 712943bb31bf85430e1a027abe197e5b88a26110

Page 14: TizenPorting 1: Tizen개발환경구축및플랫폼빌드nyx.skku.ac.kr/wp-content/uploads/2014/11/Tizen-Porting-Platform_Build.pdf · SKKU Embedded Software Lab. 77 2 •Tizen Porting

SKKU Embedded Software Lab.

77

14

SKKU Embedded Software Lab.

• Repository management tool that built on top of Git– Not replacement of Git

• Originally used in Android project• Used for managing many git repositories• Automate parts of development workflow

Repo

Page 15: TizenPorting 1: Tizen개발환경구축및플랫폼빌드nyx.skku.ac.kr/wp-content/uploads/2014/11/Tizen-Porting-Platform_Build.pdf · SKKU Embedded Software Lab. 77 2 •Tizen Porting

SKKU Embedded Software Lab.

77

15

SKKU Embedded Software Lab.

Repo: 설치하기

• 설치하기1. Repo 다운로드

1. $ sudo apt-get install curl2. $ mkdir -p ~/bin3. $ curl http://commondatastorage.googleapis.com/git-repo-

downloads/repo > ~/bin/repo4. $ chmod +x ~/bin/repo

2. Repo 환경 변수 기본 경로 설정1. ~/.bashrc 편집

1. $ gedit ~/.bashrc2. 맨 마지막 줄에 아래 코드 추가

3. 저장 후 터미널 다시 시작

PATH=~/bin:${PATH}

~/.bashrc~/.bashrc

Page 16: TizenPorting 1: Tizen개발환경구축및플랫폼빌드nyx.skku.ac.kr/wp-content/uploads/2014/11/Tizen-Porting-Platform_Build.pdf · SKKU Embedded Software Lab. 77 2 •Tizen Porting

SKKU Embedded Software Lab.

77

16

SKKU Embedded Software Lab.

• Initialize repo directory– $ repo init -u <URL> [OPTIONS]– OPTIONS

• -u: specify a URL from which to retrieve a manifest repository• -b: specify a revision

– ex. tizen_2.1, tizen_2.2

– ex. $ repo init -u ssh://[email protected]:29418/scm/manifest -b tizen_2.2

• Synchronize repo directory– $ repo sync [OPTIONS]

• Downloads new changes and updates the working files in local environment. All of the project in repo directory will be synchronized.

• -j: number of projects to fetch simultaneously

Repo: Commands

Page 17: TizenPorting 1: Tizen개발환경구축및플랫폼빌드nyx.skku.ac.kr/wp-content/uploads/2014/11/Tizen-Porting-Platform_Build.pdf · SKKU Embedded Software Lab. 77 2 •Tizen Porting

SKKU Embedded Software Lab.

77

17

SKKU Embedded Software Lab.

• Git– Git official web site: http://git-scm.com/– Git official book: http://git-scm.com/book/ko– Simple git manual: http://rogerdudler.github.io/git-

guide/index.ko.html– How Git Works Internally:

http://www.slideshare.net/SeongJaePark1/deep-darkside-ofgit

• Repo– Android developing document:

https://source.android.com/source/developing.html– Repo command reference:

https://source.android.com/source/using-repo.html

Git & Repo: References

Page 18: TizenPorting 1: Tizen개발환경구축및플랫폼빌드nyx.skku.ac.kr/wp-content/uploads/2014/11/Tizen-Porting-Platform_Build.pdf · SKKU Embedded Software Lab. 77 2 •Tizen Porting

SKKU Embedded Software Lab.

77

18

SKKU Embedded Software Lab.

• Gerrit– A Web-based code review system which checks the platform

source code– Reference: https://developer.tizen.org/dev-

guide/2.2.1/org.tizen.platform.development/html/platform_dev_env/gerrit.htm

• GBS– A developer command line tool that supports Tizen package

development– Functions

• Build a repository or repositories and make package files(*.rpm)• Generate tarballs based on Git repositories• Do local test buildings• Submit code to OBS(Tizen’s main build service)

Gerrit and GBS(Git Build System)

Page 19: TizenPorting 1: Tizen개발환경구축및플랫폼빌드nyx.skku.ac.kr/wp-content/uploads/2014/11/Tizen-Porting-Platform_Build.pdf · SKKU Embedded Software Lab. 77 2 •Tizen Porting

SKKU Embedded Software Lab.

77

19

SKKU Embedded Software Lab.

1. https://developer.tizen.org/ko 에서 Tizen ID 등록

Gerrit: Tizen 개발자 등록

2. Gerrit 개발자 ID 등록 (http://review.tizen.org/gerrit)

Page 20: TizenPorting 1: Tizen개발환경구축및플랫폼빌드nyx.skku.ac.kr/wp-content/uploads/2014/11/Tizen-Porting-Platform_Build.pdf · SKKU Embedded Software Lab. 77 2 •Tizen Porting

SKKU Embedded Software Lab.

77

20

SKKU Embedded Software Lab.

• Tizen review server에 접근하기 위해 SSH 설정을 변경해야 함.

3. Terminal에서 “ssh-keygen” 실행1. $ ssh-keygen

Gerrit: 초기 설정

• Passphrase는 디폴트 값 사용

• Config / Public key / private key 파일이 생성됨.

Page 21: TizenPorting 1: Tizen개발환경구축및플랫폼빌드nyx.skku.ac.kr/wp-content/uploads/2014/11/Tizen-Porting-Platform_Build.pdf · SKKU Embedded Software Lab. 77 2 •Tizen Porting

SKKU Embedded Software Lab.

77

21

SKKU Embedded Software Lab.

4. SSH config 파일 설정1. $ gedit ~/.ssh/config– username은 앞서 등록 시 사용한 아이디를 입력

Gerrit: 개발자 등록 및 초기 설정

Host tizen Hostname review.tizen.org IdentityFile ~/.ssh/id_rsa User usernamePort 29418

Host review.tizen.orgHostname review.tizen.org IdentityFile ~/.ssh/id_rsa User usernamePort 29418

~/.ssh/config~/.ssh/config

Page 22: TizenPorting 1: Tizen개발환경구축및플랫폼빌드nyx.skku.ac.kr/wp-content/uploads/2014/11/Tizen-Porting-Platform_Build.pdf · SKKU Embedded Software Lab. 77 2 •Tizen Porting

SKKU Embedded Software Lab.

77

22

SKKU Embedded Software Lab.

5. http://review.tizen.org/gerrit에 로그인 후, 설정 화면으로 이동

Gerrit: 개발자 등록 및 초기 설정

6. SSH Public Keys 메뉴에서 Add Key 선택

Page 23: TizenPorting 1: Tizen개발환경구축및플랫폼빌드nyx.skku.ac.kr/wp-content/uploads/2014/11/Tizen-Porting-Platform_Build.pdf · SKKU Embedded Software Lab. 77 2 •Tizen Porting

SKKU Embedded Software Lab.

77

23

SKKU Embedded Software Lab.

7. 미리 생성해 둔 public 키의 내용을 복사하여 입력

Gerrit: 개발자 등록 및 초기 설정

Page 24: TizenPorting 1: Tizen개발환경구축및플랫폼빌드nyx.skku.ac.kr/wp-content/uploads/2014/11/Tizen-Porting-Platform_Build.pdf · SKKU Embedded Software Lab. 77 2 •Tizen Porting

SKKU Embedded Software Lab.

77

24

SKKU Embedded Software Lab.

8. SSH 접속 테스트1. $ ssh tizen2. $ ssh review.tizen.org– 정상적으로 접속될 경우, 아래와 같은 메시지가 출력됨.

Gerrit: 개발자 등록 및 초기 설정

Page 25: TizenPorting 1: Tizen개발환경구축및플랫폼빌드nyx.skku.ac.kr/wp-content/uploads/2014/11/Tizen-Porting-Platform_Build.pdf · SKKU Embedded Software Lab. 77 2 •Tizen Porting

SKKU Embedded Software Lab.

77

25

SKKU Embedded Software Lab.

• A developer command line tool that supports Tizenpackage development.

• Features– Builds Tizen packages based on source code of git repositories– Generates tarballs based on Git repositories– Does local test buildings– Submits code to OBS(Open Build System; Tizen’s main build

service)

GBS(Git Build System)

Page 26: TizenPorting 1: Tizen개발환경구축및플랫폼빌드nyx.skku.ac.kr/wp-content/uploads/2014/11/Tizen-Porting-Platform_Build.pdf · SKKU Embedded Software Lab. 77 2 •Tizen Porting

SKKU Embedded Software Lab.

77

26

SKKU Embedded Software Lab.

1. APT repository에 Tizen development tool repository 추가1. $ sudo gedit /etc/apt/sources.list2. 아래 항목 추가

1. XX : Ubuntu Major 버전 (12, 13 지원)2. YY : Ubuntu Minor 버전 (04, 10 지원)

GBS: 설치하기

deb http://download.tizen.org/tools/latest-release/Ubuntu_XX.YY /

/etc/apt/sources.list/etc/apt/sources.list

3. $ sudo apt-get update

2. GBS 패키지 설치1. sudo apt-get install gbs

Page 27: TizenPorting 1: Tizen개발환경구축및플랫폼빌드nyx.skku.ac.kr/wp-content/uploads/2014/11/Tizen-Porting-Platform_Build.pdf · SKKU Embedded Software Lab. 77 2 •Tizen Porting

SKKU Embedded Software Lab.

77

27

SKKU Embedded Software Lab.

• .gbs.conf: GBS 설정 파일– Profile 이름, working directory 경로 설정– Local repository, remote repository 경로 설정

GBS: 설정 파일

[general]tmpdir=/var/tmp/profile=profile.tizen2.2work_dir=.

[repo.tizen2.2]url=http://download.tizen.org/releases/2.2/tizen-2.2/[repo.tizen2.2_arm]url=${work_dir}/pre-build/toolchain-arm/[repo.tizen2.2_x86]url=${work_dir}/pre-built/toolchain-x86/

[profile.tizen2.2]repos=repo.tizen2.2_arm, repo.tizen2.2_x86, repo.tizen2.2buildconf=${work_dir}/scm/meta/build-config/build.conf

~/tizen-platform/.gbs.conf~/tizen-platform/.gbs.conf

Page 28: TizenPorting 1: Tizen개발환경구축및플랫폼빌드nyx.skku.ac.kr/wp-content/uploads/2014/11/Tizen-Porting-Platform_Build.pdf · SKKU Embedded Software Lab. 77 2 •Tizen Porting

SKKU Embedded Software Lab.

77

28

SKKU Embedded Software Lab.

• 빌드하기– gbs build -A <target architecture 이름>

• 빌드 대상: 현재 디렉토리에 있는 모든 패키지의 git repository 소스 코드 (git으로 commit한 소스 코드)

• Tizen에서는 x86, armv7l를 target architecture로 설정 가능

– 옵션• --threads <thread 수>: 빌드에 사용할 총 thread 개수• --clean-once: 첫 빌드 시 gbs build 환경 디렉토리 초기화• --include-all: git repository가 아닌, working directory를 빌드함• --exclude=<패키지 목록>: 빌드에서 제외할 패키지 목록

– Cyclic dependency 문제를 막거나 굳이 빌드하지 않아도 되는 패키지를 제외하기 위해 사용

– ex. gbs build -A armv7l– ex. gbs build -A armv7l --threads=2 --clean-once --include-

all --exclude=bash,bzip2-libs,rpm

GBS: Commands

Page 29: TizenPorting 1: Tizen개발환경구축및플랫폼빌드nyx.skku.ac.kr/wp-content/uploads/2014/11/Tizen-Porting-Platform_Build.pdf · SKKU Embedded Software Lab. 77 2 •Tizen Porting

SKKU Embedded Software Lab.

77

29

SKKU Embedded Software Lab.

• Tool to create an operating system image for a Tizen device

• 설치하기1. APT repository에 Tizen development tool repository 추가

• 참고: “GBS: 설치하기”

2. MIC 패키지 설치하기1. $ sudo apt-get install mic

MIC(Moblin Image Creator)

Page 30: TizenPorting 1: Tizen개발환경구축및플랫폼빌드nyx.skku.ac.kr/wp-content/uploads/2014/11/Tizen-Porting-Platform_Build.pdf · SKKU Embedded Software Lab. 77 2 •Tizen Porting

SKKU Embedded Software Lab.

77

30

SKKU Embedded Software Lab.

• Red Hat Package Manager or RPM Package Manager• A Package Manager which can be used to build, install,

query, verify, update, erase individual software packages• Package

– Components• An archive of files• Metadata

– used to install and erase the archive files– helper scripts, file attributes, and descriptive information about the

package

– Type• Binary package: used to encapsulate software to be installed• Source package: containing the source code and recipe necessary to

produce binary packages

• 참고: http://rpm.org/wiki/Docs

RPM

Page 31: TizenPorting 1: Tizen개발환경구축및플랫폼빌드nyx.skku.ac.kr/wp-content/uploads/2014/11/Tizen-Porting-Platform_Build.pdf · SKKU Embedded Software Lab. 77 2 •Tizen Porting

SKKU Embedded Software Lab.

77

31

SKKU Embedded Software Lab.

• Platform IDE provides the following advantages:– Download source code from git repository and contribute

changes– Create platform projects and commit changes and push to git

repository– Easily build platform module– Run and debug the platform module– Easily manage packages

Tizen Platform IDE

Page 32: TizenPorting 1: Tizen개발환경구축및플랫폼빌드nyx.skku.ac.kr/wp-content/uploads/2014/11/Tizen-Porting-Platform_Build.pdf · SKKU Embedded Software Lab. 77 2 •Tizen Porting

SKKU Embedded Software Lab.

77

32

SKKU Embedded Software Lab.

• Tizen Platform IDE는 Tizen SDK에 포함되어 있음.1. ./tizen-sdk-ubuntu32-v2.2.71.bin

Tizen Platform IDE: 설치하기

2. 아래 옵션을 반드시 체크• Platform development• SDK development Tools• Platform Rootstrap

Page 33: TizenPorting 1: Tizen개발환경구축및플랫폼빌드nyx.skku.ac.kr/wp-content/uploads/2014/11/Tizen-Porting-Platform_Build.pdf · SKKU Embedded Software Lab. 77 2 •Tizen Porting

SKKU Embedded Software Lab.

77

33

SKKU Embedded Software Lab.

• Tizen Review Server에 접근하기 위해 Git에 서버의 주소를 설정해주어야 함.1. “Window Preferences à Tizen SDK à Platform à Site

Configuration”2. “Add Configuration”3. Tizen review server에 대한 내용을 기입4. OK 클릭 후 Update

Tizen Platform IDE: Git 설정

Page 34: TizenPorting 1: Tizen개발환경구축및플랫폼빌드nyx.skku.ac.kr/wp-content/uploads/2014/11/Tizen-Porting-Platform_Build.pdf · SKKU Embedded Software Lab. 77 2 •Tizen Porting

SKKU Embedded Software Lab.

77

34

SKKU Embedded Software Lab.

1. “File à New à Project à Tizen à Tizen Platform Project”– Tizen review server에 있는 git repository 중 하나를 선택

Tizen Platform Project 만들기

Page 35: TizenPorting 1: Tizen개발환경구축및플랫폼빌드nyx.skku.ac.kr/wp-content/uploads/2014/11/Tizen-Porting-Platform_Build.pdf · SKKU Embedded Software Lab. 77 2 •Tizen Porting

SKKU Embedded Software Lab.

77

35

SKKU Embedded Software Lab.

• SSL Certification에 문제가 있는 경우, 다음 과정을 진행한다.– wget https://java-use-

examples.googlecode.com/svn/trunk/src/com/aw/ad/util/InstallCert.java

– javac InstallCert.java– java InstallCert review.tizen.org

• Enter when ‘Enter certificate to add to trusted keystore or 'q' to quit: [1]’

– Copy jssecacerts into• /usr/lib/jvm/java-7-oracle/jre/lib/security/cacerts

– Click update again in site configuration à then success

SSL Ceritification 문제 해결 방법

Page 36: TizenPorting 1: Tizen개발환경구축및플랫폼빌드nyx.skku.ac.kr/wp-content/uploads/2014/11/Tizen-Porting-Platform_Build.pdf · SKKU Embedded Software Lab. 77 2 •Tizen Porting

SKKU Embedded Software Lab.

77

36

SKKU Embedded Software Lab.

Tizen IDE Platform Perspective

Page 37: TizenPorting 1: Tizen개발환경구축및플랫폼빌드nyx.skku.ac.kr/wp-content/uploads/2014/11/Tizen-Porting-Platform_Build.pdf · SKKU Embedded Software Lab. 77 2 •Tizen Porting

SKKU Embedded Software Lab.

77

37

SKKU Embedded Software Lab.

• Git Repository Checkout– Window à Show View à Others à Git à Git

Repositories– Create new branch (Checkout from remote

branch)• Branch à Local à Switch To à New Branch• Choose refs/remotes/origin/tizen_2.2• Finish

Checkout Repository

Page 38: TizenPorting 1: Tizen개발환경구축및플랫폼빌드nyx.skku.ac.kr/wp-content/uploads/2014/11/Tizen-Porting-Platform_Build.pdf · SKKU Embedded Software Lab. 77 2 •Tizen Porting

SKKU Embedded Software Lab.

77

38

SKKU Embedded Software Lab.

• Build Package– Choose target device from rootstrap view– Choose project and Build package

Building Tizen Platform Project

Page 39: TizenPorting 1: Tizen개발환경구축및플랫폼빌드nyx.skku.ac.kr/wp-content/uploads/2014/11/Tizen-Porting-Platform_Build.pdf · SKKU Embedded Software Lab. 77 2 •Tizen Porting

SKKU Embedded Software Lab.

77

39

SKKU Embedded Software Lab.

2. Tizen 플랫폼 빌드 및 이미지 만들기

Page 40: TizenPorting 1: Tizen개발환경구축및플랫폼빌드nyx.skku.ac.kr/wp-content/uploads/2014/11/Tizen-Porting-Platform_Build.pdf · SKKU Embedded Software Lab. 77 2 •Tizen Porting

SKKU Embedded Software Lab.

77

40

SKKU Embedded Software Lab.

• Tizen 전체 빌드 과정– Tizen Servers, Tizen 플랫폼을 빌드하는 두 가지 방법

Contents

• 전체 패키지 빌드– Cloning Total Platform

Source Code– Cloning ODROID-U3 Profile

Source• Profile

– Building Total Platform Packages

– Making Tizen Platform Images• Kickstart File

• 일부 패키지만 빌드– Cloning a Source Code

Repository– Cloning Essential

Repositories– Building Total Platform

Packages– Building a Package– Making Tizen Platform

Images

Page 41: TizenPorting 1: Tizen개발환경구축및플랫폼빌드nyx.skku.ac.kr/wp-content/uploads/2014/11/Tizen-Porting-Platform_Build.pdf · SKKU Embedded Software Lab. 77 2 •Tizen Porting

SKKU Embedded Software Lab.

77

41

SKKU Embedded Software Lab.

Tizen 전체 빌드 과정

Page 42: TizenPorting 1: Tizen개발환경구축및플랫폼빌드nyx.skku.ac.kr/wp-content/uploads/2014/11/Tizen-Porting-Platform_Build.pdf · SKKU Embedded Software Lab. 77 2 •Tizen Porting

SKKU Embedded Software Lab.

77

42

SKKU Embedded Software Lab.

• Tizen Review Server (review.tizen.org)– 직접 작성한 코드를 review받거나 review가 끝난 코드를 내려받

을 수 있는 서버– Gerrit 사용: Git과 긴밀하게 연결되어 있는 review 시스템

• https://review.tizen.org/gerrit/Documentation/intro-quick.html

• Tizen Download Server (download.tizen.org)– Pre-built 패키지나 이미지, SDK 등을 내려받을 수 있는 서버

Tizen Servers

Page 43: TizenPorting 1: Tizen개발환경구축및플랫폼빌드nyx.skku.ac.kr/wp-content/uploads/2014/11/Tizen-Porting-Platform_Build.pdf · SKKU Embedded Software Lab. 77 2 •Tizen Porting

SKKU Embedded Software Lab.

77

43

SKKU Embedded Software Lab.

• Tizen Dev. Tools (http://download.tizen.org/tools)– Build tools: depanneur, libzypp, GBS, QEMU, …– Image maker and flasher: MIC, lthor– Tizen SDK

• Tizen Pre-built Packages & Images– Maintained by versions and target architectures– Versions

• Snapshots: made when the end of build cycle• Pre-releases: alpha, beta versions• Releases: final version

Tizen Servers: Tizen Download Server

Page 44: TizenPorting 1: Tizen개발환경구축및플랫폼빌드nyx.skku.ac.kr/wp-content/uploads/2014/11/Tizen-Porting-Platform_Build.pdf · SKKU Embedded Software Lab. 77 2 •Tizen Porting

SKKU Embedded Software Lab.

77

44

SKKU Embedded Software Lab.

• 아래 두 가지 방법 중 하나를 선택하여 플랫폼을 빌드할수 있다.

• 전체 패키지 빌드– PC에 모든 Tizen 플랫폼 패키지들을 유지함.– 빌드 시간이 너무 오래 걸림.

• 일부 패키지만 빌드– PC에는 Tizen 플랫폼 패키지들 중 일부만 유지함.– 나머지 패키지들: Tizen server로부터 이미 빌드된 패키지를 다

운로드하여 이미지를 만듦.– 빌드 시간 최소화 가능.

Tizen 플랫폼 빌드 방법 (1/3)

Page 45: TizenPorting 1: Tizen개발환경구축및플랫폼빌드nyx.skku.ac.kr/wp-content/uploads/2014/11/Tizen-Porting-Platform_Build.pdf · SKKU Embedded Software Lab. 77 2 •Tizen Porting

SKKU Embedded Software Lab.

77

45

SKKU Embedded Software Lab.

• 전체 패키지 빌드

Tizen 플랫폼 빌드 방법 (2/3)

Page 46: TizenPorting 1: Tizen개발환경구축및플랫폼빌드nyx.skku.ac.kr/wp-content/uploads/2014/11/Tizen-Porting-Platform_Build.pdf · SKKU Embedded Software Lab. 77 2 •Tizen Porting

SKKU Embedded Software Lab.

77

46

SKKU Embedded Software Lab.

• 일부 패키지만 빌드

Tizen 플랫폼 빌드 방법 (3/3)

빌드 시간 절약!

Page 47: TizenPorting 1: Tizen개발환경구축및플랫폼빌드nyx.skku.ac.kr/wp-content/uploads/2014/11/Tizen-Porting-Platform_Build.pdf · SKKU Embedded Software Lab. 77 2 •Tizen Porting

SKKU Embedded Software Lab.

77

47

SKKU Embedded Software Lab.

2. Tizen 플랫폼 빌드 및 이미지 만들기(방법 1: 전체 패키지 빌드)

Page 48: TizenPorting 1: Tizen개발환경구축및플랫폼빌드nyx.skku.ac.kr/wp-content/uploads/2014/11/Tizen-Porting-Platform_Build.pdf · SKKU Embedded Software Lab. 77 2 •Tizen Porting

SKKU Embedded Software Lab.

77

48

SKKU Embedded Software Lab.

1. 모든 플랫폼 소스 코드 저장소 복제하기– “Cloning Total Platform Source Code”

2. ODROID-U3 Profile 소스 저장소 복제하기– “Cloning ODROID-U3 Profile Source”

3. 패키지 빌드– “Building Total Platform Packages”

4. 플랫폼 이미지 만들기– “Making Tizen Platform Images”

플랫폼 빌드 & 이미지 만들기 과정(전체 패키지)

Page 49: TizenPorting 1: Tizen개발환경구축및플랫폼빌드nyx.skku.ac.kr/wp-content/uploads/2014/11/Tizen-Porting-Platform_Build.pdf · SKKU Embedded Software Lab. 77 2 •Tizen Porting

SKKU Embedded Software Lab.

77

49

SKKU Embedded Software Lab.

1. Repo 설치 (참고: “Repo: 설치하기”)2. Tizen 2.2 전체 소스 코드 다운로드

– 총 용량 약 6GB1. $ mkdir tizen-platform; cd tizen-platform2. Repo에 다운로드 대상 소스 코드를 지정함

1. $ repo init -u ssh://<Username>@review.tizen.org:29418/scm/manifest -b <Branch-name>

ex. $ repo init -u ssh://[email protected]:29418/scm/manifest -b tizen_2.2

3. 소스 코드 다운로드 (8개 thread 사용)1. $ repo sync -j8

– 참고: “Repo: Commands”

Cloning Total Platform Source Code

Page 50: TizenPorting 1: Tizen개발환경구축및플랫폼빌드nyx.skku.ac.kr/wp-content/uploads/2014/11/Tizen-Porting-Platform_Build.pdf · SKKU Embedded Software Lab. 77 2 •Tizen Porting

SKKU Embedded Software Lab.

77

50

SKKU Embedded Software Lab.

• Tizen device에 따라 달라지는 특성을 정의하는 파일– Basic features: Model name, platform version, processor name– Processor: CPU architecture, FPU type, Graphics acceleration– Network: Wifi, Telephony, VoIP, Bluetooth, GPS, WPS, Push– Peripheral devices: Camera, FM Radio, Keyboard, Microphone,

Multi-point touch, Screen, Sensors, USB, Vision– Other features: Database encryption, OpenGL configuration,

Shell, Speech, OSP-compatible

• Target board에 따라 다른 profile 필요함.– Tizen 2.2 공식 지원 target: RD-210, RD-PQ, Emulator– ODROID-U3 target은 공식 지원되지 않음 → 새 profile 필요

• 참고: https://www.tizen.org/feature

Profile

Page 51: TizenPorting 1: Tizen개발환경구축및플랫폼빌드nyx.skku.ac.kr/wp-content/uploads/2014/11/Tizen-Porting-Platform_Build.pdf · SKKU Embedded Software Lab. 77 2 •Tizen Porting

SKKU Embedded Software Lab.

77

51

SKKU Embedded Software Lab.

• ODROID-U3 Profile 디렉토리의 구성 요소– LICENSE.APLv2: Apache License v2– NOTICE.APLv2– model-config.manifest: Manifest file required for RPM

• 참고: http://wiki.tizen.org/wiki/Security/Application_installation_and_Manifest

– model-config.xml• ODROID-U3 Profile• XML로 작성됨.

– 참고: https://ko.wikipedia.org/wiki/XML

– packaging/model-config-odroid-u3.spec• RPM Package specification

ODROID-U3 Profile

Page 52: TizenPorting 1: Tizen개발환경구축및플랫폼빌드nyx.skku.ac.kr/wp-content/uploads/2014/11/Tizen-Porting-Platform_Build.pdf · SKKU Embedded Software Lab. 77 2 •Tizen Porting

SKKU Embedded Software Lab.

77

52

SKKU Embedded Software Lab.

ODROID-U3 Profile: 구조

<?xml version="1.0" encoding="UTF-8" standalone="no"?><model-config version="2.2.0" model="ODROID-U3-REF">

<platform><!-- Model Name, Platform Name/Version, Processor Name --><key name="tizen.org/system/model_name" type="string">ODROID-U3</key><key name="tizen.org/system/platform.name" type="string">Tizen</key><key name="tizen.org/feature/platform.version" type="string">2.2</key><key name="tizen.org/system/platform.processor" type="string">exynos4412</key>

<!-- Specification of Features --><key name="tizen.org/feature/camera" type="bool">false</key><key name="tizen.org/feature/camera.back" type="bool">false</key>

(중략)</platform><custom></custom>

</model-config>

~/tizen-platform/profile/mobile/model/config-odroid-u3/model-config.xml

~/tizen-platform/profile/mobile/model/config-odroid-u3/model-config.xml

Page 53: TizenPorting 1: Tizen개발환경구축및플랫폼빌드nyx.skku.ac.kr/wp-content/uploads/2014/11/Tizen-Porting-Platform_Build.pdf · SKKU Embedded Software Lab. 77 2 •Tizen Porting

SKKU Embedded Software Lab.

77

53

SKKU Embedded Software Lab.

1. ODROID-U3 Profile Source Code 다운로드1. iCampus에서 config-odroid-u3.tar.gz 다운로드2. config-odroid-u3.tar.gz 압축 해제3. 압축 해제한 결과를

~/tizen-platform/profile/mobile/model/config-odroid-u3로 복사

2. 새로운 Package Group Pattern 만들기– ODROID-U3에서 Tizen이 동작하기 위해 필요한 패키지 목록도

필요1. $ cd ~/tizen-platform/meta/package-groups/patterns2. $ gedit target-odroid-u3.yaml

• 이 파일에 들어가야 할 내용은 다음 슬라이드에 있음

Cloning ODROID-U3 Profile Source (1/3)

Page 54: TizenPorting 1: Tizen개발환경구축및플랫폼빌드nyx.skku.ac.kr/wp-content/uploads/2014/11/Tizen-Porting-Platform_Build.pdf · SKKU Embedded Software Lab. 77 2 •Tizen Porting

SKKU Embedded Software Lab.

77

54

SKKU Embedded Software Lab.

• Package Group Pattern– Tizen의 패키지들을 큰 기준으로 묶는 것을 정의한 파일– 패키지 구조를 관리하기 쉽게 하기 위함.– MIC로 이미지를 만들 때 package group 별로 include– 가리키는 순서: Kickstart → Package group → Packages

Cloning ODROID-U3 Profile Source (2/3)

Description: Packages for ODROID-U3 targetName: target-odroid-u3Packages:- alsa-scenario-scn-data-0-wm1811- bluetooth-firmware-bcm-e4412- charging-animation- device-manager-plugin-exynos- gst-plugins-e4x12- gst-plugins-fimcconvert- libomxil-e4x12(뒤쪽에 계속)

~/tizen-platform/meta/package-groups/patterns/target-odroid-u3.xml~/tizen-platform/meta/package-groups/patterns/target-odroid-u3.xml

Page 55: TizenPorting 1: Tizen개발환경구축및플랫폼빌드nyx.skku.ac.kr/wp-content/uploads/2014/11/Tizen-Porting-Platform_Build.pdf · SKKU Embedded Software Lab. 77 2 •Tizen Porting

SKKU Embedded Software Lab.

77

55

SKKU Embedded Software Lab.

Cloning ODROID-U3 Profile Source (3/3)

(앞쪽에서 계속)- libtbm-exynos4412- mfc-firmware-e4412- mmfw-sysconf-cleansdk-e4x12- model-config-odroid-u3- my-account- nfc-plugin-65nxp- nfc-plugin-nxp- opengl-es-virtual-drv- org.tizen.mobileprint- powertop- print-service- print-driver-data- pygobject- rfkill- sensor-plugins- system-plugin-slp- systemd-console-ttySAC2- tel-plugin-imc- tel-plugin-imcmodem- xorg-x11-drv-exynos- xorg-x11-misc-exynosSummary: Packages for ODROID-U3

ODROID-U3 profile package

Page 56: TizenPorting 1: Tizen개발환경구축및플랫폼빌드nyx.skku.ac.kr/wp-content/uploads/2014/11/Tizen-Porting-Platform_Build.pdf · SKKU Embedded Software Lab. 77 2 •Tizen Porting

SKKU Embedded Software Lab.

77

56

SKKU Embedded Software Lab.

1. GBS 설정 파일(.gbs.conf) 만들기1. $ cd ~/tizen-platform2. $ gedit .gbs.conf

Building Total Platform Packages (1/2)

[general]tmpdir=/var/tmp/profile=profile.tizen2.2work_dir=.

[repo.tizen2.2]url=http://download.tizen.org/releases/2.2/tizen-2.2/[repo.tizen2.2_arm]url=${work_dir}/pre-build/toolchain-arm/[repo.tizen2.2_x86]url=${work_dir}/pre-built/toolchain-x86/

[profile.tizen2.2]repos=repo.tizen2.2_arm, repo.tizen2.2_x86, repo.tizen2.2buildconf=${work_dir}/scm/meta/build-config/build.conf

~/tizen-platform/.gbs.conf~/tizen-platform/.gbs.conf

Page 57: TizenPorting 1: Tizen개발환경구축및플랫폼빌드nyx.skku.ac.kr/wp-content/uploads/2014/11/Tizen-Porting-Platform_Build.pdf · SKKU Embedded Software Lab. 77 2 •Tizen Porting

SKKU Embedded Software Lab.

77

57

SKKU Embedded Software Lab.

2. 빌드 스크립트(build.sh) 만들기1. $ gedit build.sh

Building Total Platform Packages (2/2)

#!/bin/bash# 패키지 의존성 문제를 막고, 빌드 시간을 줄이기 위해 빌드하지 않을 패키지 목록skip_pkgs="bash,bzip2-libs,c-ares,cmake,coreutils,diffutils,eglibc,elfutils-libelf,elfutils-libs,elfutils,fdupes,file,findutils,gawk,gmp,libacl,libattr,libcap,libcurl,libfile,libgcc,liblua,libstdc++,make,mpc,mpfr,ncurses-libs,nodejs,nspr,nss-softokn-freebl,nss,openssl,patch,popt,rpm-libs,rpm-build,sed,sqlite,tar,xz-libs,binutils,gcc,filesystem,aul,libmm-sound,libtool,syspopup,notification,libva,libzypp-bindings,rpm"

gbs build -A armv7l --threads=2 --clean-once --include-all --exclude=${skip_pkgs}

~/tizen-platform/build.sh~/tizen-platform/build.sh

2. $ sudo chmod +x build.sh

3. 빌드 스크립트 실행1. $ build.sh

Page 58: TizenPorting 1: Tizen개발환경구축및플랫폼빌드nyx.skku.ac.kr/wp-content/uploads/2014/11/Tizen-Porting-Platform_Build.pdf · SKKU Embedded Software Lab. 77 2 •Tizen Porting

SKKU Embedded Software Lab.

77

58

SKKU Embedded Software Lab.

• Target device에 대한 이미지 만들기 설정 파일• 구성 요소

– Default locale, keyboard language, timezone– Partition configurations, root user, default user to login– Repository path

• 패키지가 있는 저장소의 경로

– Required package groups• 이미지에 들어가야 할 패키지 그룹 목록

– Required pre-packages• 이미지 만들기 작업 자체에 필요한 패키지 목록

– Postscript• Required package groups에 명시된 모든 패키지를 합친 이미지에

대한 초기 조건 설정

Kickstart File

Page 59: TizenPorting 1: Tizen개발환경구축및플랫폼빌드nyx.skku.ac.kr/wp-content/uploads/2014/11/Tizen-Porting-Platform_Build.pdf · SKKU Embedded Software Lab. 77 2 •Tizen Porting

SKKU Embedded Software Lab.

77

59

SKKU Embedded Software Lab.

Kickstart File: 구조 (1/4)

#Default locale, keyboard language, and timezonelang en_US.UTF-8keyboard ustimezone --utc America/Los_Angeles

#Partition configurations# ROOT fs partitionpart / --size=3000 --ondisk mmcblk0p --fstype=ext4 --label=platform# DATA partitionpart /opt/ --size=3000 --ondisk mmcblk0p --fstype=ext4 --label=data# UMS partitionpart /opt/usr/ --size=3000 --ondisk mmcblk0p --fstype=ext4 --label=ums

#Root user and default user to loginrootpw tizen bootloader --timeout=0 --append="rootdelay=5" desktop --autologinuser=root user --name root --groups audio,video --password '‘(뒤쪽에 계속)

~/tizen-platform/ODROID-U3.ks~/tizen-platform/ODROID-U3.ks

Page 60: TizenPorting 1: Tizen개발환경구축및플랫폼빌드nyx.skku.ac.kr/wp-content/uploads/2014/11/Tizen-Porting-Platform_Build.pdf · SKKU Embedded Software Lab. 77 2 •Tizen Porting

SKKU Embedded Software Lab.

77

60

SKKU Embedded Software Lab.

Kickstart File: 구조 (2/4)

(앞쪽에서 계속)# 홈 폴더가 /home/user/인 경우, 아래와 같이 씁니다. 개발 환경에 맞게 바꿔주세요.repo --name=local --baseurl=file:///home/user/GBS-ROOT/local/repos/tizen2.2/armv7l/ --priority=1repo --name=Tizen-main --baseurl=https://download.tizen.org/snapshots/2.2/common/latest/repos/tizen-main/armv7l/packages/ --save --ssl_verify=no --priority=99repo --name=Tizen-base --baseurl=https://download.tizen.org/snapshots/2.2/common/latest/repos/tizen-base/armv7l/packages/ --ssl_verify=no --priority=99(뒤쪽에 계속)

~/tizen-platform/ODROID-U3.ks~/tizen-platform/ODROID-U3.ks

• Repository path– 패키지가 있는 저장소의 경로 목록– local path, download server 등 여러 개의 path 설정 가능– 우선 순위 조절 가능(숫자가 작을 수록 우선 순위 높음)

Page 61: TizenPorting 1: Tizen개발환경구축및플랫폼빌드nyx.skku.ac.kr/wp-content/uploads/2014/11/Tizen-Porting-Platform_Build.pdf · SKKU Embedded Software Lab. 77 2 •Tizen Porting

SKKU Embedded Software Lab.

77

61

SKKU Embedded Software Lab.

Kickstart File: 구조 (3/4)

(앞쪽에서 계속)%packages@common@apps-common@apps-core@osp@target-common@target-odroid-u3%end

~/tizen-platform/ODROID-U3.ks~/tizen-platform/ODROID-U3.ks%prepackageseglibcsystemdbusyboxlibacllibcapdbus-libslibgcclibudevlibattrdefault-files-tizenopenssl

libprivilege-controllibprivilege-control-confsecurity-serverlibdloglibsecurity-server-clientsqlitetzdata-slpvconftizen-coreutilsrpm-security-plugin%end(뒤쪽에 계속)

• Required package groups– 이미지에 들어가야 할 패키지 그룹 목록

• Pre-required packages– 이미지 만들기 작업 자체에 필요한 패키지 목록

Page 62: TizenPorting 1: Tizen개발환경구축및플랫폼빌드nyx.skku.ac.kr/wp-content/uploads/2014/11/Tizen-Porting-Platform_Build.pdf · SKKU Embedded Software Lab. 77 2 •Tizen Porting

SKKU Embedded Software Lab.

77

62

SKKU Embedded Software Lab.

• Postscript– Required package groups에 명시된 모든 패키지를 합친 이미지

에 대한 초기 조건 설정

Kickstart File: 구조 (4/4)

(앞쪽에서 계속)%postecho 'kickstart post script start'if [ -d /etc/init.d ]; then

cp /etc/init.d/* /etc/rc.d/init.d/ -rdffirm -rf /etc/init.d*ln -sf /etc/rc.d/init.d /etc/init.d

rm -rf /etc/localtime ln -sf /opt/etc/localtime /etc/localtime (중략)%end

~/tizen-platform/ODROID-U3.ks~/tizen-platform/ODROID-U3.ks

Page 63: TizenPorting 1: Tizen개발환경구축및플랫폼빌드nyx.skku.ac.kr/wp-content/uploads/2014/11/Tizen-Porting-Platform_Build.pdf · SKKU Embedded Software Lab. 77 2 •Tizen Porting

SKKU Embedded Software Lab.

77

63

SKKU Embedded Software Lab.

1. Kickstart 파일 다운로드1. iCampus에서 ODROID-U3.ks 다운로드 → ~/tizen-platform으로

복사

2. Image 만들기1. $ cd ~/tizen-platform2. $ gbs makeimage --ks-file=ODROID-U3.ks --tmpfs

• --ks-file: kickstart 파일 경로• --tmpfs: Ramdisk 상에서 이미지 만들기 작업을 수행하여 속도 향상

3. 결과물은 <TIZEN-ROOT>/mic-output에 생성됨– RD-PQ-YYYYMMDDhhmm.tar.gz: 최종 플랫폼 이미지

• platform.img, ums.img, data.img– RD-PQ-YYYYMMDDhhmm.packages: 패키지 목록– RD-PQ-YYYYMMDDhhmm.xml: 파티션 정보– manifest.json: 파일 구성 정보

Making Tizen Platform Images

Page 64: TizenPorting 1: Tizen개발환경구축및플랫폼빌드nyx.skku.ac.kr/wp-content/uploads/2014/11/Tizen-Porting-Platform_Build.pdf · SKKU Embedded Software Lab. 77 2 •Tizen Porting

SKKU Embedded Software Lab.

77

64

SKKU Embedded Software Lab.

2. Tizen 플랫폼 빌드 및 이미지 만들기(방법 2: 일부 패키지만 빌드)

Page 65: TizenPorting 1: Tizen개발환경구축및플랫폼빌드nyx.skku.ac.kr/wp-content/uploads/2014/11/Tizen-Porting-Platform_Build.pdf · SKKU Embedded Software Lab. 77 2 •Tizen Porting

SKKU Embedded Software Lab.

77

65

SKKU Embedded Software Lab.

1. (선택) 빌드하고 싶은 소스 코드 저장소 복제하기– “Cloning a Source Code Repository”

2. 필수 저장소 복제하기– “Cloning Essential Repositories”

3. 패키지 빌드– 전부 빌드: “Building Total Platform Packages”– 단일 패키지 빌드: “Building a Platform Packages”

4. 플랫폼 이미지 만들기– “Making Tizen Platform Images”

플랫폼 빌드 & 이미지 만들기 과정(일부 패키지)

Page 66: TizenPorting 1: Tizen개발환경구축및플랫폼빌드nyx.skku.ac.kr/wp-content/uploads/2014/11/Tizen-Porting-Platform_Build.pdf · SKKU Embedded Software Lab. 77 2 •Tizen Porting

SKKU Embedded Software Lab.

77

66

SKKU Embedded Software Lab.

1. 필요한 package의 repository 경로 알아내기1. https://review.tizen.org/gerrit/#/admin/projects/에 접속2. 필요한 package의 repository 선택 후, repository 경로 복사

• ex. ssh://[email protected]:29418/externel/systemd

2. Repository 복제1. $ git clone <repository 경로>

• ex. git clone ssh://[email protected]:29418/externel/systemd

Cloning a Source Code Repository (1/2)

Page 67: TizenPorting 1: Tizen개발환경구축및플랫폼빌드nyx.skku.ac.kr/wp-content/uploads/2014/11/Tizen-Porting-Platform_Build.pdf · SKKU Embedded Software Lab. 77 2 •Tizen Porting

SKKU Embedded Software Lab.

77

67

SKKU Embedded Software Lab.

3. Repository를 Tizen 버전에 맞는 branch로 변경1. Remote repository의 branch 목록 알아내기

1. $ git branch --remotes– ex. $ git branch --remotes

origin/masterorigin/tizenorigin/tizen_2.1origin/tizen_2.2origin/tizen_commonorigin/tizen_genericorigin/tizen_iviorigin/tizen_mobile

2. Tizen 버전에 맞는 Branch로 변경1. $ git checkout <branch 이름>

– ex. $ git checkout tizen_2.2

Cloning a Source Code Repository (2/2)

Page 68: TizenPorting 1: Tizen개발환경구축및플랫폼빌드nyx.skku.ac.kr/wp-content/uploads/2014/11/Tizen-Porting-Platform_Build.pdf · SKKU Embedded Software Lab. 77 2 •Tizen Porting

SKKU Embedded Software Lab.

77

68

SKKU Embedded Software Lab.

• 일부 Tizen 패키지를 빌드하고 플랫폼 이미지를 만들기위해, 다음 패키지들이 반드시 필요함.– tools/package-groups

• Package group

– pre-built/toolchain-arm• 이미 빌드된 ARM toolchain

– pre-built/toolcahin-x86• 이미 빌드된 x86 toolchain

– profile/mobile/model/config-odroid-u3• ODROID-U3 profile• ODROID-U3에서 동작하는 플랫폼 이미지를 만들기 위해 필요• 이미지 생성 시 package group pattern으로 이 패키지에 접근하기

때문에, 새로운 ODROID-U3 package group pattern을 추가해야 함.

Cloning Essential Repositories (1/6)

Page 69: TizenPorting 1: Tizen개발환경구축및플랫폼빌드nyx.skku.ac.kr/wp-content/uploads/2014/11/Tizen-Porting-Platform_Build.pdf · SKKU Embedded Software Lab. 77 2 •Tizen Porting

SKKU Embedded Software Lab.

77

69

SKKU Embedded Software Lab.

1. Tizen 플랫폼 코드 디렉토리 생성1. $ mkdir ~/tizen-platform; cd ~/tizen-platform

2. tools/package-groups repository 가져오기1. Repository 복제

1. $ git clone ssh://[email protected]:29418/tools/package-groups meta/package-groups

2. Branch를 Tizen 2.2로 이동1. $ cd meta/package_groups2. $ git checkout origin/tizen_2.23. $ cd -

Cloning Essential Repositories (2/6)

Page 70: TizenPorting 1: Tizen개발환경구축및플랫폼빌드nyx.skku.ac.kr/wp-content/uploads/2014/11/Tizen-Porting-Platform_Build.pdf · SKKU Embedded Software Lab. 77 2 •Tizen Porting

SKKU Embedded Software Lab.

77

70

SKKU Embedded Software Lab.

3. pre-built/toolchain-arm 가져오기1. $ git clone ssh://[email protected]:29418/pre-

built/toolchain-arm pre-built/toolchain-arm2. $ cd pre-built/toolchain-arm3. $ git checkout origin/tizen_2.24. $ cd -

4. pre-built/toolcahin-x86 가져오기1. $ git clone ssh://[email protected]:29418/ pre-

built/toolchain-x86 pre-built/toolchain-x862. $ git pre-built/toolchain-x863. $ git checkout origin/tizen_2.24. $ cd -

Cloning Essential Repositories (3/6)

Page 71: TizenPorting 1: Tizen개발환경구축및플랫폼빌드nyx.skku.ac.kr/wp-content/uploads/2014/11/Tizen-Porting-Platform_Build.pdf · SKKU Embedded Software Lab. 77 2 •Tizen Porting

SKKU Embedded Software Lab.

77

71

SKKU Embedded Software Lab.

5. profile/mobile/model/config-odroid-u3 가져오기1. iCampus에서 config-odroid-u3.tar.gz 다운로드2. config-odroid-u3.tar.gz 압축 해제3. 압축 해제한 결과를

~/tizen-platform/profile/mobile/model/config로 복사

Cloning Essential Repositories (4/6)

Page 72: TizenPorting 1: Tizen개발환경구축및플랫폼빌드nyx.skku.ac.kr/wp-content/uploads/2014/11/Tizen-Porting-Platform_Build.pdf · SKKU Embedded Software Lab. 77 2 •Tizen Porting

SKKU Embedded Software Lab.

77

72

SKKU Embedded Software Lab.

6. 새로운 Package Group Pattern 만들기1. $ cd ~/tizen-platform/meta/package-groups/patterns2. $ gedit target-odroid-u3.yaml

Cloning Essential Repositories (5/6)

Description: Packages for ODROID-U3 targetName: target-odroid-u3Packages:- alsa-scenario-scn-data-0-wm1811- bluetooth-firmware-bcm-e4412- charging-animation- device-manager-plugin-exynos- gst-plugins-e4x12- gst-plugins-fimcconvert- libomxil-e4x12(뒤쪽에 계속)

~/tizen-platform/meta/package-groups/patterns/target-odroid-u3.xml~/tizen-platform/meta/package-groups/patterns/target-odroid-u3.xml

Page 73: TizenPorting 1: Tizen개발환경구축및플랫폼빌드nyx.skku.ac.kr/wp-content/uploads/2014/11/Tizen-Porting-Platform_Build.pdf · SKKU Embedded Software Lab. 77 2 •Tizen Porting

SKKU Embedded Software Lab.

77

73

SKKU Embedded Software Lab.

Cloning Essential Repositories (6/6)

(앞쪽에서 계속)- libtbm-exynos4412- mfc-firmware-e4412- mmfw-sysconf-cleansdk-e4x12- model-config-odroid-u3- my-account- nfc-plugin-65nxp- nfc-plugin-nxp- opengl-es-virtual-drv- org.tizen.mobileprint- powertop- print-service- print-driver-data- pygobject- rfkill- sensor-plugins- system-plugin-slp- systemd-console-ttySAC2- tel-plugin-imc- tel-plugin-imcmodem- xorg-x11-drv-exynos- xorg-x11-misc-exynosSummary: Packages for ODROID-U3

ODROID-U3 profile package

Page 74: TizenPorting 1: Tizen개발환경구축및플랫폼빌드nyx.skku.ac.kr/wp-content/uploads/2014/11/Tizen-Porting-Platform_Build.pdf · SKKU Embedded Software Lab. 77 2 •Tizen Porting

SKKU Embedded Software Lab.

77

74

SKKU Embedded Software Lab.

1. GBS 설정 파일(.gbs.conf) 만들기1. $ cd ~/tizen-platform2. $ gedit .gbs.conf

Building Total Platform Packages (1/2)

[general]tmpdir=/var/tmp/profile=profile.tizen2.2work_dir=.

[repo.tizen2.2]url=http://download.tizen.org/releases/2.2/tizen-2.2/[repo.tizen2.2_arm]url=${work_dir}/pre-build/toolchain-arm/[repo.tizen2.2_x86]url=${work_dir}/pre-built/toolchain-x86/

[profile.tizen2.2]repos=repo.tizen2.2_arm, repo.tizen2.2_x86, repo.tizen2.2

~/tizen-platform/.gbs.conf~/tizen-platform/.gbs.conf

Page 75: TizenPorting 1: Tizen개발환경구축및플랫폼빌드nyx.skku.ac.kr/wp-content/uploads/2014/11/Tizen-Porting-Platform_Build.pdf · SKKU Embedded Software Lab. 77 2 •Tizen Porting

SKKU Embedded Software Lab.

77

75

SKKU Embedded Software Lab.

2. 빌드 스크립트(build.sh) 만들기1. $ gedit build.sh

Building Total Platform Packages (2/2)

#!/bin/bash# 패키지 의존성 문제를 막고, 빌드 시간을 줄이기 위해 빌드하지 않을 패키지 목록skip_pkgs="bash,bzip2-libs,c-ares,cmake,coreutils,diffutils,eglibc,elfutils-libelf,elfutils-libs,elfutils,fdupes,file,findutils,gawk,gmp,libacl,libattr,libcap,libcurl,libfile,libgcc,liblua,libstdc++,make,mpc,mpfr,ncurses-libs,nodejs,nspr,nss-softokn-freebl,nss,openssl,patch,popt,rpm-libs,rpm-build,sed,sqlite,tar,xz-libs,binutils,gcc,filesystem,aul,libmm-sound,libtool,syspopup,notification,libva,libzypp-bindings,rpm"

gbs build -A armv7l --threads=2 --clean-once --include-all --exclude=${skip_pkgs}

~/tizen-platform/build.sh~/tizen-platform/build.sh

2. $ sudo chmod +x build.sh

3. 빌드 스크립트 실행1. $ build.sh

Page 76: TizenPorting 1: Tizen개발환경구축및플랫폼빌드nyx.skku.ac.kr/wp-content/uploads/2014/11/Tizen-Porting-Platform_Build.pdf · SKKU Embedded Software Lab. 77 2 •Tizen Porting

SKKU Embedded Software Lab.

77

76

SKKU Embedded Software Lab.

1. 패키지의 디렉토리로 이동– ex. systemd 패키지 빌드 시: $ cd ~/tizen-platform/external/systemd

2. 빌드1. $ gbs build -A armv7l --clean-once

Building a Package

Page 77: TizenPorting 1: Tizen개발환경구축및플랫폼빌드nyx.skku.ac.kr/wp-content/uploads/2014/11/Tizen-Porting-Platform_Build.pdf · SKKU Embedded Software Lab. 77 2 •Tizen Porting

SKKU Embedded Software Lab.

77

77

SKKU Embedded Software Lab.

1. Kickstart 파일 다운로드1. iCampus에서 ODROID-U3.ks 다운로드 → ~/tizen-platform으로

복사

2. Image 만들기1. $ cd ~/tizen-platform2. $ gbs makeimage --ks-file=ODROID-U3.ks --tmpfs

• --ks-file: kickstart 파일 경로• --tmpfs: Ramdisk 상에서 이미지 만들기 작업을 수행하여 속도 향상

3. 결과물은 <TIZEN-ROOT>/mic-output에 생성됨– RD-PQ-YYYYMMDDhhmm.tar.gz: 최종 플랫폼 이미지

• platform.img, ums.img, data.img– RD-PQ-YYYYMMDDhhmm.packages: 패키지 목록– RD-PQ-YYYYMMDDhhmm.xml: 파티션 정보– manifest.json: 파일 구성 정보

Making Tizen Platform Images

Page 78: TizenPorting 1: Tizen개발환경구축및플랫폼빌드nyx.skku.ac.kr/wp-content/uploads/2014/11/Tizen-Porting-Platform_Build.pdf · SKKU Embedded Software Lab. 77 2 •Tizen Porting

SKKU Embedded Software Lab.

77

78

SKKU Embedded Software Lab.

부록: Git and Repo Cheatsheet (1/2)

• Android developing document: https://source.android.com/source/developing.html

Page 79: TizenPorting 1: Tizen개발환경구축및플랫폼빌드nyx.skku.ac.kr/wp-content/uploads/2014/11/Tizen-Porting-Platform_Build.pdf · SKKU Embedded Software Lab. 77 2 •Tizen Porting

SKKU Embedded Software Lab.

77

79

SKKU Embedded Software Lab.

부록: Git and Repo Cheatsheet (2/2)

Page 80: TizenPorting 1: Tizen개발환경구축및플랫폼빌드nyx.skku.ac.kr/wp-content/uploads/2014/11/Tizen-Porting-Platform_Build.pdf · SKKU Embedded Software Lab. 77 2 •Tizen Porting

SKKU Embedded Software Lab.

77

80

SKKU Embedded Software Lab.

• 원인– 플랫폼 빌드는 영문 Ubuntu를 기준으로 되어 있음.– Ubuntu가 영문 이외의 언어를 사용하는 경우, gbs에서 Locale이

맞지 않는 오류가 발생할 수 있음.

• 해결책– build.sh에 아래와 같이 locale을 영어로 맞추는 코드 삽입

부록: 플랫폼 빌드 시 Locale 에러 해결

# Locale은 UTF-8 영어로 설정되어 있어야 오류가 생기지 않음export LANGUAGE=en_US.UTF-8export LANG=en_US.UTF-8export LC_ALL=en_US.UTF-8locale-gen en_US.UTF-8dpkg-reconfigure locales

~/tizen-platform/build.sh~/tizen-platform/build.sh

Page 81: TizenPorting 1: Tizen개발환경구축및플랫폼빌드nyx.skku.ac.kr/wp-content/uploads/2014/11/Tizen-Porting-Platform_Build.pdf · SKKU Embedded Software Lab. 77 2 •Tizen Porting

SKKU Embedded Software Lab.

77

81

SKKU Embedded Software Lab.

• GBS 빌드 오류 시, 각 패키지의 빌드 로그 파일을 참고

부록: GBS Trouble-shooting (1/2)

info: *** Build Status Summary ***=== the following packages failed to build due to rpmbuild issue (1) ===xf86-video-exynos: /home/user/GBS-ROOT/local/repos/tizen2.2/armv7l/logs/fail/xf86-video-exynos-1.0.0-1/log.txt

ExampleExample

[ 139s] error: db4 error(-30971) from dbenv->open: DB_VERSION_MISMATCH: Database environment version mismatch [ 139s] error: cannot open Packages index using db4 - (-30971)[ 139s] error: cannot open Packages database in /var/lib/rpm[ 139s] error: db4 error(-30971) from dbenv->open: DB_VERSION_MISMATCH: Database environment version mismatch [ 139s] error: cannot open Packages database in /var/lib/rpm

/home/user/GBS-ROOT/local/repos/tizen2.2/armv7l/logs/fail/xf86-video-exynos-1.0.0-1/log.txt

/home/user/GBS-ROOT/local/repos/tizen2.2/armv7l/logs/fail/xf86-video-exynos-1.0.0-1/log.txt

• 빌드 로그 파일 내에서 error 검색

Page 82: TizenPorting 1: Tizen개발환경구축및플랫폼빌드nyx.skku.ac.kr/wp-content/uploads/2014/11/Tizen-Porting-Platform_Build.pdf · SKKU Embedded Software Lab. 77 2 •Tizen Porting

SKKU Embedded Software Lab.

77

82

SKKU Embedded Software Lab.

• RPM DB4 error

부록: GBS Trouble-shooting (2/2)

[ 139s] error: db4 error(-30971) from dbenv->open: DB_VERSION_MISMATCH: Database environment version mismatch[ 139s] error: cannot open Packages index using db4 - (-30971)[ 139s] error: cannot open Packages database in /var/lib/rpm[ 139s] error: db4 error(-30971) from dbenv->open: DB_VERSION_MISMATCH: Database environment version mismatch [ 139s] error: cannot open Packages database in /var/lib/rpm

/home/user/GBS-ROOT/local/repos/tizen2.2/armv7l/logs/fail/xf86-video-exynos-1.0.0-1/log.txt

/home/user/GBS-ROOT/local/repos/tizen2.2/armv7l/logs/fail/xf86-video-exynos-1.0.0-1/log.txt

– 증상: BUILD-ROOTS에 있는 임시 파일이 서로 꼬여버림– 해법: 빌드 시 gbs 명령에서 ‘--clean-once’ flag를 제거하고,

‘--clean’ flag를 추가• ex. build.sh의 아래 부분을 수정

gbs build -A armv7l --include-all --cleanbuild.shbuild.sh