SlideShare a Scribd company logo
1 of 44
Download to read offline
바닥서부터 만들어보는 타이젠
우 상정
이번 시간에는 …
이번 시간에 우리는
• 릴리즈된 타이젠 플렛폼 설치하기
– 파티션 생성
– 부트로더, 펌웨어 설치
– 커널 컴파일 및 설치
– 다운로드한 타이젠 플렛폼 설치
• 타이젠 플렛폼 입맛에 맞게 만들기
– 최신 코드로 특정 패키지 교체
– 내가 만든 패키지 추가
– 불필요한 패키지 제거
준비물
우분투 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 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
개발 환경 설정
• 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
파티션 생성
• 가정
– 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
파티션 생성
• 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)
파티션 생성
• 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
파티션 생성
• 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
파티션 생성
• 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
파티션 생성
• 생성한 파티션 확인 및 저장
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!
파티션 생성
• 파일시스템 생성
$ 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
부트로더 & 펌웨어
• 설치할 바이너리 파일
– 라즈베리파이 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 설정 파일
부트로더 & 펌웨어
• 라즈베리파이 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
리눅스 커널
• 라즈베리파이용 타이젠 커널 Download
– 그래픽 관련 patch 적용 및 defconfig 정의
• 라즈베리파이 툴 Download
– 부트로더에서 커널 이미지 호환성을 체크하기 때문에,
mkknlimg로 Tagging 필요
$ git clone https://github.com/krzk/tizen-tv-rpi-linux.git
$ git clone https://github.com/raspberrypi/tools
리눅스 커널
• 커널 컴파일
– 결과물
• 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
리눅스 커널
• 커널 설치
• 설치된 파일 확인
$ 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
리눅스 커널
• 필수 커널 옵션 (참고사항)
– System 관련
• EPOLL, INOTIFY_USER, SIGNALFD, TIMERFD
• CGROUP_*
• SYSFS, PROC_FS, DEVTMPFS
• FHANDLE
– Security 관련
• SECURITY_SMACK_*
타이젠 플렛폼
• 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
타이젠 플렛폼
• 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
타이젠 플렛폼
• 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
타이젠 플렛폼
• 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:~#
타이젠 플렛폼
• Booting 결과 확인
- 동영상 URL: https://youtu.be/5qjGo29SNcA
타이젠 플렛폼
• GPU 가속화 및
DRM 활성화
– libdrm package 수정
– mesa package 수정
– efl package 수정
• Tizen Wiki 참조
• Booting된 화면
타이젠 플렛폼 이미지 생성
• 내 입맛에 맞는 최적화 가능
– 특정 package 교체
• sdbd 최신 코드를 git repo에서 받아 빌드 및 교체
– 신규 모듈을 Tizen 이미지에 추가
• sample daemon을 개발 및 추가
– 필요 없는 모듈 제거
특정 패키지 교체
• SDB (Smart Development Bridge)
– 개발용 디바이스 관리 도구
– Target의 명령어 실행, 파일 전송, 디버깅
– sdbd는 Target에서 수행하는 daemon process
• GBS (Git Build System)
– Tizen 패키지 개발 도구
– Git 기반으로 관리되는 코드를 개발 PC에서 빌드,
원격 빌드 시스템에 반영
특정 패키지 교체
• 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/
특정 패키지 교체
• 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
신규 패키지 추가
• Sample project 개발
– 기본 동작
• 1초에 1번씩 "sample daemon is alive" 메시지와 count를 출력
• Tizen booting 후, 자동으로 실행
• 비정상 종료 시, 자동으로 재실행
– Files
├── CMakeLists.txt
├── packaging
│ └── sample_proj.spec
├── sample_proj.c
└── sample_proj.service
신규 패키지 추가
• 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);
…
}
신규 패키지 추가
• 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
신규 패키지 추가
• 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
신규 패키지 추가
• 빌드 및 결과물 확인
$ 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
타이젠 플렛폼 이미지 생성
• 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
타이젠 플렛폼 이미지 생성
• 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
타이젠 플렛폼 이미지 생성
• 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 신규 추가
타이젠 플렛폼 이미지 생성
• 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
타이젠 플렛폼 이미지 생성
• 동작 확인
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
타이젠 플렛폼 이미지 생성
• 동작 확인
- 동영상 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://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

More Related Content

What's hot

망고100 보드로 놀아보자 9
망고100 보드로 놀아보자 9망고100 보드로 놀아보자 9
망고100 보드로 놀아보자 9종인 전
 
제로부터시작하는Git
제로부터시작하는Git제로부터시작하는Git
제로부터시작하는GitMario Cho
 
성미급한 사람들을 위한 아파치 설치
성미급한 사람들을 위한 아파치 설치성미급한 사람들을 위한 아파치 설치
성미급한 사람들을 위한 아파치 설치경민 남
 
Linux 강의자료 ed10
Linux 강의자료 ed10Linux 강의자료 ed10
Linux 강의자료 ed10hungrok
 
제로부터시작하는 Git 두번째 이야기
제로부터시작하는 Git 두번째 이야기제로부터시작하는 Git 두번째 이야기
제로부터시작하는 Git 두번째 이야기Mario Cho
 
Introduction to Linux #1
Introduction to Linux #1Introduction to Linux #1
Introduction to Linux #1UNIST
 
Go 1.설치와 세팅
Go 1.설치와 세팅Go 1.설치와 세팅
Go 1.설치와 세팅재봉 이
 
git 간단한 사용방법
git 간단한 사용방법git 간단한 사용방법
git 간단한 사용방법Oh Dongju
 
Devon 2011-o-3-kde 어제 오늘 그리고 내일
Devon 2011-o-3-kde 어제 오늘 그리고 내일Devon 2011-o-3-kde 어제 오늘 그리고 내일
Devon 2011-o-3-kde 어제 오늘 그리고 내일Daum DNA
 
OpenCR 아두이노 펌웨어개발
OpenCR 아두이노 펌웨어개발OpenCR 아두이노 펌웨어개발
OpenCR 아두이노 펌웨어개발chcbaram
 
강분도 - 나만의 우분투 배포판 만들기 (2011Y06M25D)
강분도 - 나만의 우분투 배포판 만들기 (2011Y06M25D)강분도 - 나만의 우분투 배포판 만들기 (2011Y06M25D)
강분도 - 나만의 우분투 배포판 만들기 (2011Y06M25D)Ubuntu Korea Community
 
3.ubuntu custom
3.ubuntu custom3.ubuntu custom
3.ubuntu customsprdd
 
Git branch stregagy & case study
Git branch stregagy & case studyGit branch stregagy & case study
Git branch stregagy & case studyWoo Jin Kim
 
이것이 리눅스다 - 김종욱
이것이 리눅스다 - 김종욱이것이 리눅스다 - 김종욱
이것이 리눅스다 - 김종욱Jong Wook Kim
 
1주차 리눅스의 이해 및 설치, 파티션과 파일 시스템, 부팅매니져
1주차   리눅스의 이해 및 설치, 파티션과 파일 시스템, 부팅매니져1주차   리눅스의 이해 및 설치, 파티션과 파일 시스템, 부팅매니져
1주차 리눅스의 이해 및 설치, 파티션과 파일 시스템, 부팅매니져Chulgyu Shin
 

What's hot (17)

Linux tutorial
Linux tutorialLinux tutorial
Linux tutorial
 
망고100 보드로 놀아보자 9
망고100 보드로 놀아보자 9망고100 보드로 놀아보자 9
망고100 보드로 놀아보자 9
 
제로부터시작하는Git
제로부터시작하는Git제로부터시작하는Git
제로부터시작하는Git
 
성미급한 사람들을 위한 아파치 설치
성미급한 사람들을 위한 아파치 설치성미급한 사람들을 위한 아파치 설치
성미급한 사람들을 위한 아파치 설치
 
Linux 강의자료 ed10
Linux 강의자료 ed10Linux 강의자료 ed10
Linux 강의자료 ed10
 
제로부터시작하는 Git 두번째 이야기
제로부터시작하는 Git 두번째 이야기제로부터시작하는 Git 두번째 이야기
제로부터시작하는 Git 두번째 이야기
 
Introduction to Linux #1
Introduction to Linux #1Introduction to Linux #1
Introduction to Linux #1
 
Go 1.설치와 세팅
Go 1.설치와 세팅Go 1.설치와 세팅
Go 1.설치와 세팅
 
git 간단한 사용방법
git 간단한 사용방법git 간단한 사용방법
git 간단한 사용방법
 
Devon 2011-o-3-kde 어제 오늘 그리고 내일
Devon 2011-o-3-kde 어제 오늘 그리고 내일Devon 2011-o-3-kde 어제 오늘 그리고 내일
Devon 2011-o-3-kde 어제 오늘 그리고 내일
 
OpenCR 아두이노 펌웨어개발
OpenCR 아두이노 펌웨어개발OpenCR 아두이노 펌웨어개발
OpenCR 아두이노 펌웨어개발
 
강분도 - 나만의 우분투 배포판 만들기 (2011Y06M25D)
강분도 - 나만의 우분투 배포판 만들기 (2011Y06M25D)강분도 - 나만의 우분투 배포판 만들기 (2011Y06M25D)
강분도 - 나만의 우분투 배포판 만들기 (2011Y06M25D)
 
3.ubuntu custom
3.ubuntu custom3.ubuntu custom
3.ubuntu custom
 
Git branch stregagy & case study
Git branch stregagy & case studyGit branch stregagy & case study
Git branch stregagy & case study
 
Maker 오해와 진실
Maker 오해와 진실Maker 오해와 진실
Maker 오해와 진실
 
이것이 리눅스다 - 김종욱
이것이 리눅스다 - 김종욱이것이 리눅스다 - 김종욱
이것이 리눅스다 - 김종욱
 
1주차 리눅스의 이해 및 설치, 파티션과 파일 시스템, 부팅매니져
1주차   리눅스의 이해 및 설치, 파티션과 파일 시스템, 부팅매니져1주차   리눅스의 이해 및 설치, 파티션과 파일 시스템, 부팅매니져
1주차 리눅스의 이해 및 설치, 파티션과 파일 시스템, 부팅매니져
 

Viewers also liked

Porting Tizen to open source hardware devices for beginners
Porting Tizen to open source hardware devices for beginnersPorting Tizen to open source hardware devices for beginners
Porting Tizen to open source hardware devices for beginnersLeon Anavi
 
Tizen gbs (git build-system)
Tizen gbs (git build-system)Tizen gbs (git build-system)
Tizen gbs (git build-system)Yuya Adachi
 
Developing Tizen Operating System Based Solutions - IDF2013 Beijing
Developing Tizen Operating System Based Solutions - IDF2013 BeijingDeveloping Tizen Operating System Based Solutions - IDF2013 Beijing
Developing Tizen Operating System Based Solutions - IDF2013 BeijingRyo Jin
 
Tizen application inside out
Tizen application inside outTizen application inside out
Tizen application inside outEun Young Lee
 
Cross compile
Cross compileCross compile
Cross compilecri fan
 
How to be a Tizen Committer
How to be a Tizen CommitterHow to be a Tizen Committer
How to be a Tizen CommitterEun Young Lee
 
Open Governance for Tizen 3.0
Open Governance for Tizen 3.0Open Governance for Tizen 3.0
Open Governance for Tizen 3.0Ryo Jin
 
HR 기업 * 컨설턴트를 위한 스마트워크 방안 알아보기
HR 기업 * 컨설턴트를 위한 스마트워크 방안 알아보기HR 기업 * 컨설턴트를 위한 스마트워크 방안 알아보기
HR 기업 * 컨설턴트를 위한 스마트워크 방안 알아보기(주)고우아이티
 
[임팩트투자 디파티] 크리에이트립(creatrip) 임혜민 대표_D.CAMP_201607
[임팩트투자 디파티] 크리에이트립(creatrip) 임혜민 대표_D.CAMP_201607[임팩트투자 디파티] 크리에이트립(creatrip) 임혜민 대표_D.CAMP_201607
[임팩트투자 디파티] 크리에이트립(creatrip) 임혜민 대표_D.CAMP_201607D.CAMP
 
Sync space 톡프리
Sync space 톡프리Sync space 톡프리
Sync space 톡프리승현 피
 
스마트창작터 피칭Deck
스마트창작터 피칭Deck스마트창작터 피칭Deck
스마트창작터 피칭Deckwscic
 
Linux Process & CF scheduling
Linux Process & CF schedulingLinux Process & CF scheduling
Linux Process & CF schedulingSangJung Woo
 
Porting Tizen-IVI 3.0 to an ARM based SoC Platform
Porting Tizen-IVI 3.0 to an ARM based SoC PlatformPorting Tizen-IVI 3.0 to an ARM based SoC Platform
Porting Tizen-IVI 3.0 to an ARM based SoC PlatformRyo Jin
 
오픈 플랫폼 타이젠과 컨트리부션하기(연세대 오픈소스 미니콘서트)
오픈 플랫폼 타이젠과 컨트리부션하기(연세대 오픈소스 미니콘서트)오픈 플랫폼 타이젠과 컨트리부션하기(연세대 오픈소스 미니콘서트)
오픈 플랫폼 타이젠과 컨트리부션하기(연세대 오픈소스 미니콘서트)Yoonsoo Kim
 

Viewers also liked (20)

Git & G
Git & GGit & G
Git & G
 
Tizen Window System
Tizen Window SystemTizen Window System
Tizen Window System
 
Porting Tizen to open source hardware devices for beginners
Porting Tizen to open source hardware devices for beginnersPorting Tizen to open source hardware devices for beginners
Porting Tizen to open source hardware devices for beginners
 
Tizen gbs (git build-system)
Tizen gbs (git build-system)Tizen gbs (git build-system)
Tizen gbs (git build-system)
 
Developing Tizen Operating System Based Solutions - IDF2013 Beijing
Developing Tizen Operating System Based Solutions - IDF2013 BeijingDeveloping Tizen Operating System Based Solutions - IDF2013 Beijing
Developing Tizen Operating System Based Solutions - IDF2013 Beijing
 
Tizen UIFW - EFL
Tizen UIFW - EFLTizen UIFW - EFL
Tizen UIFW - EFL
 
Tizen application inside out
Tizen application inside outTizen application inside out
Tizen application inside out
 
Cross compile
Cross compileCross compile
Cross compile
 
How to be a Tizen Committer
How to be a Tizen CommitterHow to be a Tizen Committer
How to be a Tizen Committer
 
Bringing Tizen to a Raspberry Pi 2 Near You
Bringing Tizen to a Raspberry Pi 2 Near YouBringing Tizen to a Raspberry Pi 2 Near You
Bringing Tizen to a Raspberry Pi 2 Near You
 
Open Governance for Tizen 3.0
Open Governance for Tizen 3.0Open Governance for Tizen 3.0
Open Governance for Tizen 3.0
 
HR 기업 * 컨설턴트를 위한 스마트워크 방안 알아보기
HR 기업 * 컨설턴트를 위한 스마트워크 방안 알아보기HR 기업 * 컨설턴트를 위한 스마트워크 방안 알아보기
HR 기업 * 컨설턴트를 위한 스마트워크 방안 알아보기
 
[임팩트투자 디파티] 크리에이트립(creatrip) 임혜민 대표_D.CAMP_201607
[임팩트투자 디파티] 크리에이트립(creatrip) 임혜민 대표_D.CAMP_201607[임팩트투자 디파티] 크리에이트립(creatrip) 임혜민 대표_D.CAMP_201607
[임팩트투자 디파티] 크리에이트립(creatrip) 임혜민 대표_D.CAMP_201607
 
Sync space 톡프리
Sync space 톡프리Sync space 톡프리
Sync space 톡프리
 
스마트창작터 피칭Deck
스마트창작터 피칭Deck스마트창작터 피칭Deck
스마트창작터 피칭Deck
 
Syslog
SyslogSyslog
Syslog
 
Linux Process & CF scheduling
Linux Process & CF schedulingLinux Process & CF scheduling
Linux Process & CF scheduling
 
Git & GitHub
Git & GitHubGit & GitHub
Git & GitHub
 
Porting Tizen-IVI 3.0 to an ARM based SoC Platform
Porting Tizen-IVI 3.0 to an ARM based SoC PlatformPorting Tizen-IVI 3.0 to an ARM based SoC Platform
Porting Tizen-IVI 3.0 to an ARM based SoC Platform
 
오픈 플랫폼 타이젠과 컨트리부션하기(연세대 오픈소스 미니콘서트)
오픈 플랫폼 타이젠과 컨트리부션하기(연세대 오픈소스 미니콘서트)오픈 플랫폼 타이젠과 컨트리부션하기(연세대 오픈소스 미니콘서트)
오픈 플랫폼 타이젠과 컨트리부션하기(연세대 오픈소스 미니콘서트)
 

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

Deploying Hyperledger Fabric on Kubernetes.pptx
Deploying Hyperledger Fabric on Kubernetes.pptxDeploying Hyperledger Fabric on Kubernetes.pptx
Deploying Hyperledger Fabric on Kubernetes.pptxwonyong hwang
 
안드로이드 플랫폼 설명
안드로이드 플랫폼 설명안드로이드 플랫폼 설명
안드로이드 플랫폼 설명Peter YoungSik Yun
 
(111217) #fitalk rootkit tools and debugger
(111217) #fitalk   rootkit tools and debugger(111217) #fitalk   rootkit tools and debugger
(111217) #fitalk rootkit tools and debuggerINSIGHT FORENSIC
 
Linux in Visual Studio
Linux in Visual StudioLinux in Visual Studio
Linux in Visual StudioHeecheol Yang
 
20170713 tech day_7th_pxe 부팅-김주한
20170713 tech day_7th_pxe 부팅-김주한20170713 tech day_7th_pxe 부팅-김주한
20170713 tech day_7th_pxe 부팅-김주한ymtech
 
Hyperledger fabric practice(pdf)
Hyperledger fabric practice(pdf)Hyperledger fabric practice(pdf)
Hyperledger fabric practice(pdf)wonyong hwang
 
리얼리눅스 제 1 회 세미나: "리눅스, 제대로 알고 코딩하자!"
리얼리눅스 제 1 회 세미나: "리눅스, 제대로 알고 코딩하자!"리얼리눅스 제 1 회 세미나: "리눅스, 제대로 알고 코딩하자!"
리얼리눅스 제 1 회 세미나: "리눅스, 제대로 알고 코딩하자!"리얼리눅스
 
[오픈소스컨설팅] Docker를 활용한 Gitlab CI/CD 구성 테스트
[오픈소스컨설팅] Docker를 활용한 Gitlab CI/CD 구성 테스트[오픈소스컨설팅] Docker를 활용한 Gitlab CI/CD 구성 테스트
[오픈소스컨설팅] Docker를 활용한 Gitlab CI/CD 구성 테스트Ji-Woong Choi
 
Git basic2 chaos
Git basic2 chaosGit basic2 chaos
Git basic2 chaosYunkyu Choi
 
20141029 하둡2.5와 hive설치 및 예제
20141029 하둡2.5와 hive설치 및 예제20141029 하둡2.5와 hive설치 및 예제
20141029 하둡2.5와 hive설치 및 예제Tae Young Lee
 
Kernel 2.6 makefile_분석(송형주)
Kernel 2.6 makefile_분석(송형주)Kernel 2.6 makefile_분석(송형주)
Kernel 2.6 makefile_분석(송형주)iamhjoo (송형주)
 
Linux Kernel Boot Process , SOSCON 2015, By Mario Cho
Linux Kernel Boot Process , SOSCON 2015, By Mario ChoLinux Kernel Boot Process , SOSCON 2015, By Mario Cho
Linux Kernel Boot Process , SOSCON 2015, By Mario ChoMario Cho
 
XECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 Docker
XECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 DockerXECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 Docker
XECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 DockerXpressEngine
 
android stuff1
android stuff1android stuff1
android stuff1Jin Jiu
 
(망고210& Gingerbread) u-boot 컴파일 및 다운로드
(망고210& Gingerbread) u-boot 컴파일 및 다운로드(망고210& Gingerbread) u-boot 컴파일 및 다운로드
(망고210& Gingerbread) u-boot 컴파일 및 다운로드종인 전
 
IoT 개발자를 위한 Embedded C에서 TDD를 해보자
IoT 개발자를 위한 Embedded C에서 TDD를 해보자IoT 개발자를 위한 Embedded C에서 TDD를 해보자
IoT 개발자를 위한 Embedded C에서 TDD를 해보자Taeyeop Kim
 
postgres_빌드_및_디버깅.pdf
postgres_빌드_및_디버깅.pdfpostgres_빌드_및_디버깅.pdf
postgres_빌드_및_디버깅.pdfLee Dong Wook
 
Hm10 Research sheets
Hm10 Research sheetsHm10 Research sheets
Hm10 Research sheetsyyooooon
 
(130907) #fitalk generating volatility linux profile
(130907) #fitalk   generating volatility linux profile(130907) #fitalk   generating volatility linux profile
(130907) #fitalk generating volatility linux profileINSIGHT FORENSIC
 

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

Deploying Hyperledger Fabric on Kubernetes.pptx
Deploying Hyperledger Fabric on Kubernetes.pptxDeploying Hyperledger Fabric on Kubernetes.pptx
Deploying Hyperledger Fabric on Kubernetes.pptx
 
안드로이드 플랫폼 설명
안드로이드 플랫폼 설명안드로이드 플랫폼 설명
안드로이드 플랫폼 설명
 
(111217) #fitalk rootkit tools and debugger
(111217) #fitalk   rootkit tools and debugger(111217) #fitalk   rootkit tools and debugger
(111217) #fitalk rootkit tools and debugger
 
Linux in Visual Studio
Linux in Visual StudioLinux in Visual Studio
Linux in Visual Studio
 
20170713 tech day_7th_pxe 부팅-김주한
20170713 tech day_7th_pxe 부팅-김주한20170713 tech day_7th_pxe 부팅-김주한
20170713 tech day_7th_pxe 부팅-김주한
 
Hyperledger fabric practice(pdf)
Hyperledger fabric practice(pdf)Hyperledger fabric practice(pdf)
Hyperledger fabric practice(pdf)
 
리얼리눅스 제 1 회 세미나: "리눅스, 제대로 알고 코딩하자!"
리얼리눅스 제 1 회 세미나: "리눅스, 제대로 알고 코딩하자!"리얼리눅스 제 1 회 세미나: "리눅스, 제대로 알고 코딩하자!"
리얼리눅스 제 1 회 세미나: "리눅스, 제대로 알고 코딩하자!"
 
[오픈소스컨설팅] Docker를 활용한 Gitlab CI/CD 구성 테스트
[오픈소스컨설팅] Docker를 활용한 Gitlab CI/CD 구성 테스트[오픈소스컨설팅] Docker를 활용한 Gitlab CI/CD 구성 테스트
[오픈소스컨설팅] Docker를 활용한 Gitlab CI/CD 구성 테스트
 
Git basic2 chaos
Git basic2 chaosGit basic2 chaos
Git basic2 chaos
 
20141029 하둡2.5와 hive설치 및 예제
20141029 하둡2.5와 hive설치 및 예제20141029 하둡2.5와 hive설치 및 예제
20141029 하둡2.5와 hive설치 및 예제
 
Kernel 2.6 makefile_분석(송형주)
Kernel 2.6 makefile_분석(송형주)Kernel 2.6 makefile_분석(송형주)
Kernel 2.6 makefile_분석(송형주)
 
Linux Kernel Boot Process , SOSCON 2015, By Mario Cho
Linux Kernel Boot Process , SOSCON 2015, By Mario ChoLinux Kernel Boot Process , SOSCON 2015, By Mario Cho
Linux Kernel Boot Process , SOSCON 2015, By Mario Cho
 
XECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 Docker
XECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 DockerXECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 Docker
XECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 Docker
 
android stuff1
android stuff1android stuff1
android stuff1
 
(망고210& Gingerbread) u-boot 컴파일 및 다운로드
(망고210& Gingerbread) u-boot 컴파일 및 다운로드(망고210& Gingerbread) u-boot 컴파일 및 다운로드
(망고210& Gingerbread) u-boot 컴파일 및 다운로드
 
JetsonTX2 Python
 JetsonTX2 Python  JetsonTX2 Python
JetsonTX2 Python
 
IoT 개발자를 위한 Embedded C에서 TDD를 해보자
IoT 개발자를 위한 Embedded C에서 TDD를 해보자IoT 개발자를 위한 Embedded C에서 TDD를 해보자
IoT 개발자를 위한 Embedded C에서 TDD를 해보자
 
postgres_빌드_및_디버깅.pdf
postgres_빌드_및_디버깅.pdfpostgres_빌드_및_디버깅.pdf
postgres_빌드_및_디버깅.pdf
 
Hm10 Research sheets
Hm10 Research sheetsHm10 Research sheets
Hm10 Research sheets
 
(130907) #fitalk generating volatility linux profile
(130907) #fitalk   generating volatility linux profile(130907) #fitalk   generating volatility linux profile
(130907) #fitalk generating volatility linux profile
 

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

  • 3. 이번 시간에 우리는 • 릴리즈된 타이젠 플렛폼 설치하기 – 파티션 생성 – 부트로더, 펌웨어 설치 – 커널 컴파일 및 설치 – 다운로드한 타이젠 플렛폼 설치 • 타이젠 플렛폼 입맛에 맞게 만들기 – 최신 코드로 특정 패키지 교체 – 내가 만든 패키지 추가 – 불필요한 패키지 제거
  • 4. 준비물 우분투 14.04 LTS - 인터넷 사용 가능 - 10G 정도 공간
  • 5. 준비물 우분투 14.04 LTS - 인터넷 사용 가능 - 10G 정도 공간 라즈베리파이2 (Mobel B) - 8G MicroSD - USB to Serial Cable
  • 6. 준비물 우분투 14.04 LTS - 인터넷 사용 가능 - 10G 정도 공간 라즈베리파이2 (Mobel B) - 8G MicroSD - USB to Serial Cable 여러분의 손 - 하고자 하는 의지 - 반나절 정도의 잉여 시간 - 여친 / 와이프 / 남친 / 서방의 무관심
  • 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. 개발 환경 설정 • 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. 파티션 생성 • 가정 – 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. 파티션 생성 • 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. 파티션 생성 • 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. 파티션 생성 • 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. 파티션 생성 • 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. 파티션 생성 • 생성한 파티션 확인 및 저장 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. 파티션 생성 • 파일시스템 생성 $ 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. 부트로더 & 펌웨어 • 설치할 바이너리 파일 – 라즈베리파이 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. 부트로더 & 펌웨어 • 라즈베리파이 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. 리눅스 커널 • 라즈베리파이용 타이젠 커널 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. 리눅스 커널 • 커널 컴파일 – 결과물 • 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. 리눅스 커널 • 커널 설치 • 설치된 파일 확인 $ 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. 리눅스 커널 • 필수 커널 옵션 (참고사항) – System 관련 • EPOLL, INOTIFY_USER, SIGNALFD, TIMERFD • CGROUP_* • SYSFS, PROC_FS, DEVTMPFS • FHANDLE – Security 관련 • SECURITY_SMACK_*
  • 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. 타이젠 플렛폼 • 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. 타이젠 플렛폼 • 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. 타이젠 플렛폼 • 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. 타이젠 플렛폼 • Booting 결과 확인 - 동영상 URL: https://youtu.be/5qjGo29SNcA
  • 27. 타이젠 플렛폼 • GPU 가속화 및 DRM 활성화 – libdrm package 수정 – mesa package 수정 – efl package 수정 • Tizen Wiki 참조 • Booting된 화면
  • 28. 타이젠 플렛폼 이미지 생성 • 내 입맛에 맞는 최적화 가능 – 특정 package 교체 • sdbd 최신 코드를 git repo에서 받아 빌드 및 교체 – 신규 모듈을 Tizen 이미지에 추가 • sample daemon을 개발 및 추가 – 필요 없는 모듈 제거
  • 29. 특정 패키지 교체 • SDB (Smart Development Bridge) – 개발용 디바이스 관리 도구 – Target의 명령어 실행, 파일 전송, 디버깅 – sdbd는 Target에서 수행하는 daemon process • GBS (Git Build System) – Tizen 패키지 개발 도구 – Git 기반으로 관리되는 코드를 개발 PC에서 빌드, 원격 빌드 시스템에 반영
  • 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. 특정 패키지 교체 • 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. 신규 패키지 추가 • 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. 신규 패키지 추가 • 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. 신규 패키지 추가 • 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. 신규 패키지 추가 • 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. 신규 패키지 추가 • 빌드 및 결과물 확인 $ 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. 타이젠 플렛폼 이미지 생성 • 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. 타이젠 플렛폼 이미지 생성 • 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. 타이젠 플렛폼 이미지 생성 • 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. 타이젠 플렛폼 이미지 생성 • 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. 타이젠 플렛폼 이미지 생성 • 동작 확인 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. 타이젠 플렛폼 이미지 생성 • 동작 확인 - 동영상 URL: https://youtu.be/HEzSQi0Lvco
  • 43. 마무리 • 이번 시간에 한 일 – 릴리즈된 타이젠 플렛폼 설치하기 – 타이젠 플렛폼 입맛에 맞게 만들기 • 다음 시간에는…
  • 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