Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
바닥서부터 만들어보는 타이젠
우 상정
이번 시간에는 …
이번 시간에 우리는
• 릴리즈된 타이젠 플렛폼 설치하기
– 파티션 생성
– 부트로더, 펌웨어 설치
– 커널 컴파일 및 설치
– 다운로드한 타이젠 플렛폼 설치
• 타이젠 플렛폼 입맛에 맞게 만들기
– 최신 코드로 특정 패...
준비물
우분투 14.04 LTS
- 인터넷 사용 가능
- 10G 정도 공간
준비물
우분투 14.04 LTS
- 인터넷 사용 가능
- 10G 정도 공간
라즈베리파이2 (Mobel B)
- 8G MicroSD
- USB to Serial Cable
준비물
우분투 14.04 LTS
- 인터넷 사용 가능
- 10G 정도 공간
라즈베리파이2 (Mobel B)
- 8G MicroSD
- USB to Serial Cable
여러분의 손
- 하고자 하는 의지
- 반나절 정도...
개발 환경 설정
• 필수 도구
– minicom: Serial 통신 프로그램
– git: 소스코드 형상 관리 도구
– 커널 빌드를 위한 ARM toolchain
$ sudo apt-get install git-core ...
개발 환경 설정
• Tizen 관련 도구
– gbs (git build system)
– mic (Linux Image Creation Tool)
$ sudo add-apt-repository "deb http://do...
파티션 생성
• 가정
– 8GB MicroSD 사용
– MicroSD가 Linux PC 연결시, /dev/sdc
– Automount disable
• 구성할 파티션
Device Boot Start End Blocks ...
파티션 생성
• fdisk 실행
• 현재 파티션 확인 및 빈 파티션 테이블 생성
$ sudo fdisk /dev/sdc
Command (m for help):
Command (m for help): p
...
Devic...
파티션 생성
• BOOT 파티션 생성
– bootloader, Linux Kernel, 설정 파일
– FAT32 / Bootable
Command (m for help): n
Partition type
p primary...
파티션 생성
• ROOTFS 파티션 생성
– Tizen Platform
– EXT4
Command (m for help): n
Partition type:
p primary (1 primary, 0 extended, 3...
파티션 생성
• SYSTEMDATA 파티션 생성
• USER 파티션 생성
Command (m for help): n
Select (default p): p
Partition number (1-4, default 3): ...
파티션 생성
• 생성한 파티션 확인 및 저장
Command (m for help): p
Disk /dev/sdc: 7948 MB, 7948206080 bytes
245 heads, 62 sectors/track, 102...
파티션 생성
• 파일시스템 생성
$ sudo mkfs.vfat /dev/sdc1 -n BOOT
$ sudo mkfs.ext4 /dev/sdc2 -L ROOTFS
$ sudo mkfs.ext4 /dev/sdc3 -L SY...
부트로더 & 펌웨어
• 설치할 바이너리 파일
– 라즈베리파이 github
• bootcode.bin: Second stage bootloader
• start.elf: GPU firmware
• fixup.dat: GP...
부트로더 & 펌웨어
• 라즈베리파이 firmware git Download
• 타이젠 라즈베리파이 git Download
• 바이너리 파일 설치
$ git clone https://github.com/raspberryp...
리눅스 커널
• 라즈베리파이용 타이젠 커널 Download
– 그래픽 관련 patch 적용 및 defconfig 정의
• 라즈베리파이 툴 Download
– 부트로더에서 커널 이미지 호환성을 체크하기 때문에,
mkknl...
리눅스 커널
• 커널 컴파일
– 결과물
• arch/arm/boot/zImage
• arch/arm/boot/dts/bcm2709-rpi-2-b.dtb
• mkknlimg로 Tagging
$ cd tizen-tv-rpi...
리눅스 커널
• 커널 설치
• 설치된 파일 확인
$ sudo cp tizen-tv-rpi-linux/arch/arm/boot/zImage /mnt/kernel7.img
$ sudo cp tizen-tv-rpi-linux...
리눅스 커널
• 필수 커널 옵션 (참고사항)
– System 관련
• EPOLL, INOTIFY_USER, SIGNALFD, TIMERFD
• CGROUP_*
• SYSFS, PROC_FS, DEVTMPFS
• FHAN...
타이젠 플렛폼
• Released된 타이젠 플렛폼 (Milestone 1)
– rootfs.img: Tizen Platform의 Root filesystem
– system-data.img: System 관련 설정 (/...
타이젠 플렛폼
• Tizen 이미지 flashing
– 리눅스 PC에 microSD를 USB에 연결
– MicroSD는 /dev/sdc node에 연결
$ sudo dd if=rootfs.img of=/dev/sdc2
...
타이젠 플렛폼
• Booting
– SD카드를 라즈베라파이에 삽입
– USB to Serial 케이블 연결
– minicom을 setup 모드로 실행
– Serial 설정
• Serial Device: /dev/ttyU...
타이젠 플렛폼
• Booting 결과 확인
– minicom 화면에 boot message가 출력
– Login시 root / tizen
Uncompressing Linux... done, booting the kern...
타이젠 플렛폼
• Booting 결과 확인
- 동영상 URL: https://youtu.be/5qjGo29SNcA
타이젠 플렛폼
• GPU 가속화 및
DRM 활성화
– libdrm package 수정
– mesa package 수정
– efl package 수정
• Tizen Wiki 참조
• Booting된 화면
타이젠 플렛폼 이미지 생성
• 내 입맛에 맞는 최적화 가능
– 특정 package 교체
• sdbd 최신 코드를 git repo에서 받아 빌드 및 교체
– 신규 모듈을 Tizen 이미지에 추가
• sample daemo...
특정 패키지 교체
• SDB (Smart Development Bridge)
– 개발용 디바이스 관리 도구
– Target의 명령어 실행, 파일 전송, 디버깅
– sdbd는 Target에서 수행하는 daemon proc...
특정 패키지 교체
• gbs configuration 파일 수정
– Home directory의 .gbs.conf 파일
[general]
profile = profile.tizen
[profile.tizen]
obs =...
특정 패키지 교체
• sdbd 코드 download
• 빌드 및 결과물 확인
$ git clone ssh://sangjung@review.tizen.org:29418/platform/core/system/sdbd
$ c...
신규 패키지 추가
• Sample project 개발
– 기본 동작
• 1초에 1번씩 "sample daemon is alive" 메시지와 count를 출력
• Tizen booting 후, 자동으로 실행
• 비정상 종...
신규 패키지 추가
• sample_proj.c
#include <errno.h>
#include <glib.h>
#include <systemd/sd-journal.h>
GMainLoop *loop = NULL;
gbo...
신규 패키지 추가
• sample_proj.service
[Unit]
Description=sample project daemon for Tizen Talk
[Service]
ExecStart=/usr/bin/sampl...
신규 패키지 추가
• sample_proj.spec
Name: sample_proj
Summary: Sample project for Tizen Talk
Version: 1.0.0
Release: 1
License: A...
신규 패키지 추가
• 빌드 및 결과물 확인
$ gbs build -A=armv7l --include-all
...
=== Total succeeded built packages: (1) ===
info: generate...
타이젠 플렛폼 이미지 생성
• Kickstart 파일
– Redhat 설치 자동화 설정 파일
– Tizen Platform 이미지 생성에 사용
• 파티션 설정
• 설치할 package 설정
• Root password,...
타이젠 플렛폼 이미지 생성
• Kickstart 파일 수정
– 이미지 생성시, 로컬 빌드한 패키지를 우선 참조
lang en_US.UTF-8
keyboard us
timezone --utc America/Los_Ange...
타이젠 플렛폼 이미지 생성
• Kickstart 파일 수정
– 불필요한 패키지 그룹 제거
…
%packages
@Generic Base
@TV Base
@Generic Console Tools
@Generic Packa...
타이젠 플렛폼 이미지 생성
• mic 명령어로 이미지 생성
– 리눅스 이미지 생성/수정을 위한 도구
• Tizen 이미지 Flashing
$ sudo mic --verbose create loop 
tizen-tv_20...
타이젠 플렛폼 이미지 생성
• 동작 확인
localhost login: root
Password:
Welcome to Tizen
root@localhost:~#
root@localhost:/usr/lib/systemd/...
타이젠 플렛폼 이미지 생성
• 동작 확인
- 동영상 URL: https://youtu.be/HEzSQi0Lvco
마무리
• 이번 시간에 한 일
– 릴리즈된 타이젠 플렛폼 설치하기
– 타이젠 플렛폼 입맛에 맞게 만들기
• 다음 시간에는…
참고 자료
• How to use Mesa with GL/EGL GPU acceleration and DRM for Tizen 3.0
TV profile (wayland backend) on RPI2
– https://...
Upcoming SlideShare
Loading in …5
×

of

[Tizen Talk 2016 in Seoul] 바닥서부터 만들어보는 타이젠 Slide 1 [Tizen Talk 2016 in Seoul] 바닥서부터 만들어보는 타이젠 Slide 2 [Tizen Talk 2016 in Seoul] 바닥서부터 만들어보는 타이젠 Slide 3 [Tizen Talk 2016 in Seoul] 바닥서부터 만들어보는 타이젠 Slide 4 [Tizen Talk 2016 in Seoul] 바닥서부터 만들어보는 타이젠 Slide 5 [Tizen Talk 2016 in Seoul] 바닥서부터 만들어보는 타이젠 Slide 6 [Tizen Talk 2016 in Seoul] 바닥서부터 만들어보는 타이젠 Slide 7 [Tizen Talk 2016 in Seoul] 바닥서부터 만들어보는 타이젠 Slide 8 [Tizen Talk 2016 in Seoul] 바닥서부터 만들어보는 타이젠 Slide 9 [Tizen Talk 2016 in Seoul] 바닥서부터 만들어보는 타이젠 Slide 10 [Tizen Talk 2016 in Seoul] 바닥서부터 만들어보는 타이젠 Slide 11 [Tizen Talk 2016 in Seoul] 바닥서부터 만들어보는 타이젠 Slide 12 [Tizen Talk 2016 in Seoul] 바닥서부터 만들어보는 타이젠 Slide 13 [Tizen Talk 2016 in Seoul] 바닥서부터 만들어보는 타이젠 Slide 14 [Tizen Talk 2016 in Seoul] 바닥서부터 만들어보는 타이젠 Slide 15 [Tizen Talk 2016 in Seoul] 바닥서부터 만들어보는 타이젠 Slide 16 [Tizen Talk 2016 in Seoul] 바닥서부터 만들어보는 타이젠 Slide 17 [Tizen Talk 2016 in Seoul] 바닥서부터 만들어보는 타이젠 Slide 18 [Tizen Talk 2016 in Seoul] 바닥서부터 만들어보는 타이젠 Slide 19 [Tizen Talk 2016 in Seoul] 바닥서부터 만들어보는 타이젠 Slide 20 [Tizen Talk 2016 in Seoul] 바닥서부터 만들어보는 타이젠 Slide 21 [Tizen Talk 2016 in Seoul] 바닥서부터 만들어보는 타이젠 Slide 22 [Tizen Talk 2016 in Seoul] 바닥서부터 만들어보는 타이젠 Slide 23 [Tizen Talk 2016 in Seoul] 바닥서부터 만들어보는 타이젠 Slide 24 [Tizen Talk 2016 in Seoul] 바닥서부터 만들어보는 타이젠 Slide 25 [Tizen Talk 2016 in Seoul] 바닥서부터 만들어보는 타이젠 Slide 26 [Tizen Talk 2016 in Seoul] 바닥서부터 만들어보는 타이젠 Slide 27 [Tizen Talk 2016 in Seoul] 바닥서부터 만들어보는 타이젠 Slide 28 [Tizen Talk 2016 in Seoul] 바닥서부터 만들어보는 타이젠 Slide 29 [Tizen Talk 2016 in Seoul] 바닥서부터 만들어보는 타이젠 Slide 30 [Tizen Talk 2016 in Seoul] 바닥서부터 만들어보는 타이젠 Slide 31 [Tizen Talk 2016 in Seoul] 바닥서부터 만들어보는 타이젠 Slide 32 [Tizen Talk 2016 in Seoul] 바닥서부터 만들어보는 타이젠 Slide 33 [Tizen Talk 2016 in Seoul] 바닥서부터 만들어보는 타이젠 Slide 34 [Tizen Talk 2016 in Seoul] 바닥서부터 만들어보는 타이젠 Slide 35 [Tizen Talk 2016 in Seoul] 바닥서부터 만들어보는 타이젠 Slide 36 [Tizen Talk 2016 in Seoul] 바닥서부터 만들어보는 타이젠 Slide 37 [Tizen Talk 2016 in Seoul] 바닥서부터 만들어보는 타이젠 Slide 38 [Tizen Talk 2016 in Seoul] 바닥서부터 만들어보는 타이젠 Slide 39 [Tizen Talk 2016 in Seoul] 바닥서부터 만들어보는 타이젠 Slide 40 [Tizen Talk 2016 in Seoul] 바닥서부터 만들어보는 타이젠 Slide 41 [Tizen Talk 2016 in Seoul] 바닥서부터 만들어보는 타이젠 Slide 42 [Tizen Talk 2016 in Seoul] 바닥서부터 만들어보는 타이젠 Slide 43 [Tizen Talk 2016 in Seoul] 바닥서부터 만들어보는 타이젠 Slide 44
Upcoming SlideShare
Git & G
Next
Download to read offline and view in fullscreen.

17 Likes

Share

Download to read offline

[Tizen Talk 2016 in Seoul] 바닥서부터 만들어보는 타이젠

Download to read offline

라즈베라파이에 Tizen 3.0을 직접 올리고, 플렛폼 이미지를 커스터마이징하는 예지입니다.

Related Books

Free with a 30 day trial from Scribd

See all

Related Audiobooks

Free with a 30 day trial from Scribd

See all

[Tizen Talk 2016 in Seoul] 바닥서부터 만들어보는 타이젠

  1. 1. 바닥서부터 만들어보는 타이젠 우 상정
  2. 2. 이번 시간에는 …
  3. 3. 이번 시간에 우리는 • 릴리즈된 타이젠 플렛폼 설치하기 – 파티션 생성 – 부트로더, 펌웨어 설치 – 커널 컴파일 및 설치 – 다운로드한 타이젠 플렛폼 설치 • 타이젠 플렛폼 입맛에 맞게 만들기 – 최신 코드로 특정 패키지 교체 – 내가 만든 패키지 추가 – 불필요한 패키지 제거
  4. 4. 준비물 우분투 14.04 LTS - 인터넷 사용 가능 - 10G 정도 공간
  5. 5. 준비물 우분투 14.04 LTS - 인터넷 사용 가능 - 10G 정도 공간 라즈베리파이2 (Mobel B) - 8G MicroSD - USB to Serial Cable
  6. 6. 준비물 우분투 14.04 LTS - 인터넷 사용 가능 - 10G 정도 공간 라즈베리파이2 (Mobel B) - 8G MicroSD - USB to Serial Cable 여러분의 손 - 하고자 하는 의지 - 반나절 정도의 잉여 시간 - 여친 / 와이프 / 남친 / 서방의 무관심
  7. 7. 개발 환경 설정 • 필수 도구 – minicom: Serial 통신 프로그램 – git: 소스코드 형상 관리 도구 – 커널 빌드를 위한 ARM toolchain $ sudo apt-get install git-core minicom $ sudo apt-get install libc6-armel-cross libc6-dev-armel-cross $ sudo apt-get install binutils-arm-linux-gnueabi $ sudo apt-get install libncurses5-dev $ sudo apt-get install gcc-arm-linux-gnueabi $ sudo apt-get install g++-arm-linux-gnueabi
  8. 8. 개발 환경 설정 • Tizen 관련 도구 – gbs (git build system) – mic (Linux Image Creation Tool) $ sudo add-apt-repository "deb http://download.tizen.org/tools/latest- release/Ubuntu_14.04 /" $ sudo apt-get update $ sudo apt-get install gbs mic
  9. 9. 파티션 생성 • 가정 – 8GB MicroSD 사용 – MicroSD가 Linux PC 연결시, /dev/sdc – Automount disable • 구성할 파티션 Device Boot Start End Blocks Id System /dev/sdc1 * 2048 67583 32768 b W95 FAT32 /dev/sdc2 67584 6359039 3145728 83 Linux /dev/sdc3 6359040 7407615 524288 83 Linux /dev/sdc4 7409664 15523839 4058112 83 Linux
  10. 10. 파티션 생성 • fdisk 실행 • 현재 파티션 확인 및 빈 파티션 테이블 생성 $ sudo fdisk /dev/sdc Command (m for help): Command (m for help): p ... Device Boot Start End Blocks Id System /dev/sdc1 8192 15523839 7757824 b W95 FAT32 Command (m for help): o Building a new DOS disklabel with disk identifier 0xcb2f8592. Changes will remain in memory only, until you decide to write them. After that, of course, the previous content won't be recoverable. Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)
  11. 11. 파티션 생성 • BOOT 파티션 생성 – bootloader, Linux Kernel, 설정 파일 – FAT32 / Bootable Command (m for help): n Partition type p primary (0 primary, 0 extended, 4 free) e extended (container for logical partitions) Select (default p): p Partition number (1-4, default 1): // Enter First sector (2048-62521343, default 2048): // Enter Last sector, +sectors or +size{K,M,G,T,P} (2048-62521343, default 62521343): +32M Created a new partition 1 of type 'Linux' and of size 32 MiB. Command (m for help): t Selected partition 1 Partition type (type L to list all types): b Changed type of partition 'Linux' to 'W95 FAT32'. Command (m for help): a Partition number (1-4): 1
  12. 12. 파티션 생성 • ROOTFS 파티션 생성 – Tizen Platform – EXT4 Command (m for help): n Partition type: p primary (1 primary, 0 extended, 3 free) e extended Select (default p): p Partition number (1-4, default 2): // Enter Using default value 2 First sector (67584-15523839, default 67584): // Enter Using default value 67584 Last sector, +sectors or +size{K,M,G} (67584-15523839, default 15523839): +3072M
  13. 13. 파티션 생성 • SYSTEMDATA 파티션 생성 • USER 파티션 생성 Command (m for help): n Select (default p): p Partition number (1-4, default 3): // Enter Using default value 3 First sector (6359040-15523839, default 6359040): // Enter Using default value 6359040 Last sector, +sectors or +size{K,M,G} (6359040-15523839, default 15523839): +512M Command (m for help): n Select (default e): p Selected partition 4 First sector (7407616-15523839, default 7407616): // Enter Using default value 7407616 Last sector, +sectors or +size{K,M,G} (7407616-15523839, default 15523839): // Enter Using default value 15523839
  14. 14. 파티션 생성 • 생성한 파티션 확인 및 저장 Command (m for help): p Disk /dev/sdc: 7948 MB, 7948206080 bytes 245 heads, 62 sectors/track, 1021 cylinders, total 15523840 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0xef8a422d Device Boot Start End Blocks Id System /dev/sdc1 * 2048 67583 32768 b W95 FAT32 /dev/sdc2 67584 6359039 3145728 83 Linux /dev/sdc3 6359040 7407615 524288 83 Linux /dev/sdc4 7407616 15523839 4058112 83 Linux Command (m for help): w The partition table has been altered!
  15. 15. 파티션 생성 • 파일시스템 생성 $ sudo mkfs.vfat /dev/sdc1 -n BOOT $ sudo mkfs.ext4 /dev/sdc2 -L ROOTFS $ sudo mkfs.ext4 /dev/sdc3 -L SYSTEMDATA $ sudo mkfs.ext4 /dev/sdc4 -L USER
  16. 16. 부트로더 & 펌웨어 • 설치할 바이너리 파일 – 라즈베리파이 github • bootcode.bin: Second stage bootloader • start.elf: GPU firmware • fixup.dat: GPU / CPU 사이의 SDRAM 설정 파일 • Kernel과 모듈은 직접 build하여 사용 예정 – 타이젠 라즈베리파이 github • cmdline.txt: Linux Kernel의 boot parameter • config.txt: 라즈베리파이의 BIOS 설정 파일
  17. 17. 부트로더 & 펌웨어 • 라즈베리파이 firmware git Download • 타이젠 라즈베리파이 git Download • 바이너리 파일 설치 $ git clone https://github.com/raspberrypi/firmware rpi2-firmware $ cd rpi2-firmware $ git checkout 89881b54 -b tizen-rpi2 $ git clone https://github.com/krzk/tizen-tv-rpi-stuff $ sudo mount /dev/sdc1 /mnt $ cd rpi2-firmware $ sudo cp ./boot/bootcode.bin /mnt $ sudo cp ./boot/fixup.dat /mnt $ sudo cp ./boot/start.elf /mnt $ cd ../tizen-tv-rpi-stuff $ sudo cp boot/cmdline.txt /mnt $ sudo cp boot/config.txt /mnt
  18. 18. 리눅스 커널 • 라즈베리파이용 타이젠 커널 Download – 그래픽 관련 patch 적용 및 defconfig 정의 • 라즈베리파이 툴 Download – 부트로더에서 커널 이미지 호환성을 체크하기 때문에, mkknlimg로 Tagging 필요 $ git clone https://github.com/krzk/tizen-tv-rpi-linux.git $ git clone https://github.com/raspberrypi/tools
  19. 19. 리눅스 커널 • 커널 컴파일 – 결과물 • arch/arm/boot/zImage • arch/arm/boot/dts/bcm2709-rpi-2-b.dtb • mkknlimg로 Tagging $ cd tizen-tv-rpi-linux $ export ARCH=arm $ export CROSS_COMPILE=arm-linux-gnueabi- $ make tizen_rpi2_defconfig $ make -j16 $ tools/mkimage/mkknlimg --dtok tizen-tv-rpi-linux/arch/arm/boot/zImage tizen-tv-rpi-linux/arch/arm/boot/zImage
  20. 20. 리눅스 커널 • 커널 설치 • 설치된 파일 확인 $ sudo cp tizen-tv-rpi-linux/arch/arm/boot/zImage /mnt/kernel7.img $ sudo cp tizen-tv-rpi-linux/arch/arm/boot/dts/bcm2709-rpi-2-b.dtb /mnt $ cd /mnt $ ls bcm2709-rpi-2-b.dtb bootcode.bin cmdline.txt config.txt fixup.dat kernel7.img start.elf $ cd $ sudo umount /mnt
  21. 21. 리눅스 커널 • 필수 커널 옵션 (참고사항) – System 관련 • EPOLL, INOTIFY_USER, SIGNALFD, TIMERFD • CGROUP_* • SYSFS, PROC_FS, DEVTMPFS • FHANDLE – Security 관련 • SECURITY_SMACK_*
  22. 22. 타이젠 플렛폼 • Released된 타이젠 플렛폼 (Milestone 1) – rootfs.img: Tizen Platform의 Root filesystem – system-data.img: System 관련 설정 (/opt) – user.img: 사용자 설정 (/opt/usr) • download.tizen.org에서 이미지 download $ wget https://download.tizen.org/releases/milestone/tizen/tv- 3.0.m1/latest/images/arm-wayland/tv-wayland-armv7l-odroidu3/tizen- tv_20150914.3_tv-wayland-armv7l-odroidu3.tar.gz $ tar xvzf tizen-tv_20150914.3_tv-wayland-armv7l-odroidu3.tar.gz rootfs.img user.img system-data.img
  23. 23. 타이젠 플렛폼 • Tizen 이미지 flashing – 리눅스 PC에 microSD를 USB에 연결 – MicroSD는 /dev/sdc node에 연결 $ sudo dd if=rootfs.img of=/dev/sdc2 $ sudo dd if=system-data.img of=/dev/sdc3 $ sudo dd if=user.img of=/dev/sdc4
  24. 24. 타이젠 플렛폼 • Booting – SD카드를 라즈베라파이에 삽입 – USB to Serial 케이블 연결 – minicom을 setup 모드로 실행 – Serial 설정 • Serial Device: /dev/ttyUSB0 • Speed (baud rate): 115200 • Bits: 8 • Parity: None • Stop Bits: 1 • Flow Control: None $ sudo minicom -s
  25. 25. 타이젠 플렛폼 • Booting 결과 확인 – minicom 화면에 boot message가 출력 – Login시 root / tizen Uncompressing Linux... done, booting the kernel. [ 0.000000] Booting Linux on physical CPU 0xf00 [ 0.000000] Initializing cgroup subsys cpuset [ 0.000000] Initializing cgroup subsys cpu ... Welcome to Tizen 3.0.0 (Tizen3/TV)! ... [ OK ] Listening on cert-server.socket. [ OK ] Listening on MediaController Service socket. ... localhost login: root Password: // tizen 입력 Welcome to Tizen root@localhost:~#
  26. 26. 타이젠 플렛폼 • Booting 결과 확인 - 동영상 URL: https://youtu.be/5qjGo29SNcA
  27. 27. 타이젠 플렛폼 • GPU 가속화 및 DRM 활성화 – libdrm package 수정 – mesa package 수정 – efl package 수정 • Tizen Wiki 참조 • Booting된 화면
  28. 28. 타이젠 플렛폼 이미지 생성 • 내 입맛에 맞는 최적화 가능 – 특정 package 교체 • sdbd 최신 코드를 git repo에서 받아 빌드 및 교체 – 신규 모듈을 Tizen 이미지에 추가 • sample daemon을 개발 및 추가 – 필요 없는 모듈 제거
  29. 29. 특정 패키지 교체 • SDB (Smart Development Bridge) – 개발용 디바이스 관리 도구 – Target의 명령어 실행, 파일 전송, 디버깅 – sdbd는 Target에서 수행하는 daemon process • GBS (Git Build System) – Tizen 패키지 개발 도구 – Git 기반으로 관리되는 코드를 개발 PC에서 빌드, 원격 빌드 시스템에 반영
  30. 30. 특정 패키지 교체 • gbs configuration 파일 수정 – Home directory의 .gbs.conf 파일 [general] profile = profile.tizen [profile.tizen] obs = obs.tizen repos = repo.tizen_latest, repo.public_3.0_base_arm [obs.tizen] url = https://api.tizen.org [repo.public_3.0_base_arm] url = http://download.tizen.org/snapshots/tizen/base/latest/repos/arm/packages/ [repo.tizen_latest] url = http://download.tizen.org/snapshots/tizen/tv/latest/repos/arm-wayland/packages/
  31. 31. 특정 패키지 교체 • sdbd 코드 download • 빌드 및 결과물 확인 $ git clone ssh://sangjung@review.tizen.org:29418/platform/core/system/sdbd $ cd sdbd/ $ git checkout tizen $ gbs build -A=armv7l ... === Total succeeded built packages: (1) === info: generated html format report: /home/again4you/GBS-ROOT/local/repos/tizen/armv7l/index.html info: generated RPM packages can be found from local repo: /home/again4you/GBS-ROOT/local/repos/tizen/armv7l/RPMS info: generated source RPM packages can be found from local repo: /home/again4you/GBS-ROOT/local/repos/tizen/armv7l/SRPMS info: build logs can be found in: /home/again4you/GBS-ROOT/local/repos/tizen/armv7l/logs info: build roots located in: /home/again4you/GBS-ROOT/local/BUILD-ROOTS/scratch.armv7l.* info: Done $ cd /home/again4you/GBS-ROOT/local/repos/tizen/armv7l/RPMS $ ls sdbd-2.1.2-4.armv7l.rpm sdbd-debuginfo-2.1.2-4.armv7l.rpm sdbd-debugsource-2.1.2-4.armv7l.rpm
  32. 32. 신규 패키지 추가 • Sample project 개발 – 기본 동작 • 1초에 1번씩 "sample daemon is alive" 메시지와 count를 출력 • Tizen booting 후, 자동으로 실행 • 비정상 종료 시, 자동으로 재실행 – Files ├── CMakeLists.txt ├── packaging │ └── sample_proj.spec ├── sample_proj.c └── sample_proj.service
  33. 33. 신규 패키지 추가 • sample_proj.c #include <errno.h> #include <glib.h> #include <systemd/sd-journal.h> GMainLoop *loop = NULL; gboolean timer_callback(gpointer data) { int *pcount = (int *)data; sd_journal_print(LOG_NOTICE, "sample daemon is alive %dn", (*pcount)++); // Log 메시지 출력 return TRUE; } int main() { int count = 0; loop = g_main_loop_new(NULL, TRUE); if (!loop) return -ENOMEM; g_timeout_add(1000, timer_callback, &count); // 1초에 한번씩 등록된 Callback 함수 호출 g_main_loop_run(loop); … }
  34. 34. 신규 패키지 추가 • sample_proj.service [Unit] Description=sample project daemon for Tizen Talk [Service] ExecStart=/usr/bin/sample_proj Restart=always RestartSec=0 [Install] WantedBy=multi-user.target
  35. 35. 신규 패키지 추가 • sample_proj.spec Name: sample_proj Summary: Sample project for Tizen Talk Version: 1.0.0 Release: 1 License: Apache-2.0 Source0: %{name}-%{version}.tar.gz BuildRequires: cmake BuildRequires: pkgconfig(glib-2.0) BuildRequires: pkgconfig(libsystemd-journal) … %build %cmake . make %{?jobs:-j%jobs} %install %make_install %install_service multi-user.target.wants sample_proj.service %files %{_bindir}/sample_proj %{_unitdir}/sample_proj.service %{_unitdir}/multi-user.target.wants/sample_proj.service
  36. 36. 신규 패키지 추가 • 빌드 및 결과물 확인 $ gbs build -A=armv7l --include-all ... === Total succeeded built packages: (1) === info: generated html format report: /home/again4you/GBS-ROOT/local/repos/tizen/armv7l/index.html info: generated RPM packages can be found from local repo: /home/again4you/GBS-ROOT/local/repos/tizen/armv7l/RPMS info: generated source RPM packages can be found from local repo: /home/again4you/GBS-ROOT/local/repos/tizen/armv7l/SRPMS info: build logs can be found in: /home/again4you/GBS-ROOT/local/repos/tizen/armv7l/logs info: build roots located in: /home/again4you/GBS-ROOT/local/BUILD-ROOTS/scratch.armv7l.* info: Done $ cd /home/again4you/GBS-ROOT/local/repos/tizen/armv7l/RPMS $ ls -l total 228 -rw-r--r-- 1 again4you again4you 5059 1월 15 17:07 sample_proj-1.0.0-1.armv7l.rpm -rw-r--r-- 1 again4you again4you 5034 1월 15 17:07 sample_proj-debuginfo-1.0.0-1.armv7l.rpm -rw-r--r-- 1 again4you again4you 1840 1월 15 17:07 sample_proj-debugsource-1.0.0-1.armv7l.rpm -rw-r--r-- 1 again4you again4you 46130 1월 15 17:03 sdbd-2.1.2-4.armv7l.rpm -rw-r--r-- 1 again4you again4you 96632 1월 15 17:03 sdbd-debuginfo-2.1.2-4.armv7l.rpm -rw-r--r-- 1 again4you again4you 63819 1월 15 17:03 sdbd-debugsource-2.1.2-4.armv7l.rpm
  37. 37. 타이젠 플렛폼 이미지 생성 • Kickstart 파일 – Redhat 설치 자동화 설정 파일 – Tizen Platform 이미지 생성에 사용 • 파티션 설정 • 설치할 package 설정 • Root password, timezone 등의 시스템 설정 • 바이너리의 Kickstart 파일 다운로드 – 압축된 이미지와 같은 경로에 존재 $ wget https://download.tizen.org/releases/milestone/tizen/tv-3.0.m1/latest/images/arm- wayland/tv-wayland-armv7l-odroidu3/tizen-tv_20150914.3_tv-wayland-armv7l-odroidu3.ks
  38. 38. 타이젠 플렛폼 이미지 생성 • Kickstart 파일 수정 – 이미지 생성시, 로컬 빌드한 패키지를 우선 참조 lang en_US.UTF-8 keyboard us timezone --utc America/Los_Angeles part / --fstype="ext4" --size=3500 --ondisk=mmcblk0 --label rootfs --fsoptions=defaults,noatime part /opt --fstype="ext4" --size=512 --ondisk=mmcblk0 --label system-data -- fsoptions=defaults,noatime part /opt/usr --fstype="ext4" --size=3500 --ondisk=mmcblk0 --label user -- fsoptions=defaults,noatime … repo --name=local --baseurl=file:///home/again4you/GBS-ROOT/local/repos/tizen/armv7l --priority=1 repo --name=tv-wayland_armv7l --baseurl=http://download.tizen.org/releases/milestone/tizen/tv- 3.0.m1/tizen-tv_20150914.3/repos/arm-wayland/packages/ --ssl_verify=no --priority=99
  39. 39. 타이젠 플렛폼 이미지 생성 • Kickstart 파일 수정 – 불필요한 패키지 그룹 제거 … %packages @Generic Base @TV Base @Generic Console Tools @Generic Packaging @Generic Adaptation @TV Adaptation @Generic Wayland @TV Wayland @TV Middleware … # @TV Bluetooth // Bluetooth와 Telephony 패키지 그룹을 제거 # @TV Telephony sample_proj // sample proj package 신규 추가
  40. 40. 타이젠 플렛폼 이미지 생성 • mic 명령어로 이미지 생성 – 리눅스 이미지 생성/수정을 위한 도구 • Tizen 이미지 Flashing $ sudo mic --verbose create loop tizen-tv_20150914.3_tv-wayland-armv7l-odroidu3.ks --tmpfs -A armv7l –shrink $ tree mic-out mic-output ├── manifest.json ├── rootfs.img ├── system-data.img ├── tizen-tv_20150914.3_tv-wayland-armv7l-odroidu3-201601151725.xml └── user.img $ sudo dd if=rootfs.img of=/dev/sdc2 $ sudo dd if=system-data.img of=/dev/sdc3 $ sudo dd if=user.img of=/dev/sdc5
  41. 41. 타이젠 플렛폼 이미지 생성 • 동작 확인 localhost login: root Password: Welcome to Tizen root@localhost:~# root@localhost:/usr/lib/systemd/system# rpm -qa | grep sample_proj sample_proj-1.0.0-1.armv7l // sample_proj 패키지 설치 root@localhost:/usr/lib/systemd/system# ps -ef | grep sample_proj root 292 1 0 16:00 ? 00:00:00 /usr/bin/sample_proj root 792 579 0 16:06 ttyAMA0 00:00:00 grep sample_proj root@localhost:/usr/lib/systemd/system# kill 292 root@localhost:/usr/lib/systemd/system# ps -ef | grep sample_proj root 801 1 0 16:06 ? 00:00:00 /usr/bin/sample_proj // 비정상 종료시, 재실행 root 804 579 0 16:06 ttyAMA0 00:00:00 grep sample_proj root@localhost:/usr/lib/systemd/system# journalctl -a –f // 1초에 한번씩, 로그 출력 Dec 31 16:06:47 localhost sample_proj[801]: sample daemon is alive 25 Dec 31 16:06:48 localhost sample_proj[801]: sample daemon is alive 26 Dec 31 16:06:49 localhost sample_proj[801]: sample daemon is alive 27
  42. 42. 타이젠 플렛폼 이미지 생성 • 동작 확인 - 동영상 URL: https://youtu.be/HEzSQi0Lvco
  43. 43. 마무리 • 이번 시간에 한 일 – 릴리즈된 타이젠 플렛폼 설치하기 – 타이젠 플렛폼 입맛에 맞게 만들기 • 다음 시간에는…
  44. 44. 참고 자료 • How to use Mesa with GL/EGL GPU acceleration and DRM for Tizen 3.0 TV profile (wayland backend) on RPI2 – https://wiki.tizen.org/wiki/How_to_use_Mesa_with_GL/EGL_GPU_acceleration_and_DRM_f or_Tizen_3.0_TV_profile_%28wayland_backend%29_on_RPI2#Installing_a_basic_FS • Porting Tizen to open source hardware devices for beginners (BBB) – http://www.slideshare.net/leonanavi/tdc2014-porting- tizentoopensourcehardwaredevicesforbeginners • How to Build and Load Tizen on Odroid U3 – https://wiki.tizen.org/wiki/How_to_Build_and_Load_Tizen_on_Odroid_U3
  • daeseonkim92

    Aug. 7, 2017
  • raymondcha526

    Nov. 18, 2016
  • unsangkwon

    Feb. 11, 2016
  • engladgut

    Feb. 11, 2016
  • yale2a1

    Feb. 11, 2016
  • KyoungwooWoo

    Feb. 11, 2016
  • JongjuLee

    Feb. 11, 2016
  • DonghoLee1

    Feb. 9, 2016
  • seohoseok14

    Feb. 9, 2016
  • ungijungungi

    Feb. 9, 2016
  • seok0721

    Jan. 30, 2016
  • ssuser15db85

    Jan. 30, 2016
  • yousubae

    Jan. 29, 2016
  • hwiri22

    Jan. 29, 2016
  • nurinamu

    Jan. 29, 2016
  • webispy

    Jan. 28, 2016
  • silverlee2

    Jan. 28, 2016

라즈베라파이에 Tizen 3.0을 직접 올리고, 플렛폼 이미지를 커스터마이징하는 예지입니다.

Views

Total views

4,485

On Slideshare

0

From embeds

0

Number of embeds

111

Actions

Downloads

66

Shares

0

Comments

0

Likes

17

×