Build & Run Emulator for Tizen on Yocto Project (Tizen Distribution)


Tizen on Yocto를 Tizen Distribution으로 준비 중으로 보인다.

아래 사이트를 참조
- https://wiki.tizen.org/wiki/Build_Tizen_with_Yocto_Project#Fetch_the_source

Tizen on Yocto 프로젝트 소스를 다운받아서 Emulator 용도로 빌드 후 실행해 보고자 한다

1. 소스 다운로드
- 아직 완성 단계는 아닌가 보다
- $ giit clone https://github.com/eurogiciel-oss/tizen-Distro.git
- 아래 빌드 및 실행 테스트는 master branch의 아래 commit 상에서 진행하였다
-- commit 9c1557060ef6a49d474f07418c95099c33e8c907
-- Date:   Mon Dec 15 18:02:02 2014 +0100

2. 빌드 환경 구성
- $ cd tizen-Distro
- $ source ./oe-init-build-env ./build_qemu
- conf/local.conf 파일에서 Emulator용도로 빌드하기 위해서 MACHINE 부분을 아래와 같이 수정
-- MACHINE ??= "qemux86"

3. 빌드
- $ bitbake -k tizen-common-core-image-minimal-dev
- 빌드 결과물은 아래와 같이 생성되었다.
-- KERNEL: [tmp-glibc/deploy/images/qemux86/bzImage-qemux86.bin]
-- ROOTFS: [/opt/tizen/tizen_dist/tizen-Distro/build_qemu/tmp-glibc/deploy/images/qemux86/tizen-common-core-image-minimal-dev-qemux86-20141228123222.rootfs.ext3
- 여기서 생성된 커널은 사용하지 않고 이미지만 사용한다
- 위 이미지를 아래와 같이 copy한다 (테스트 용도로)
-- tizen_dist.ext3

4. Emulator로 실행하기 위해서 Emulator 빌드 수행

4-1)  커널을 빌드한다
- $ git clone git://review.tizen.org/sdk/emulator/emulator-kernel
- $ cd emulator-kernel
- $ git checkout tizen
- $ build_x86.sh

4-2) swap 파티션을 만든다
- $ truncate -s 1024 ./swap.x86

4-3). qemu를 빌드한다.
- $ git clone git://review.tizen.org/sdk/emulator/qemu
- $  cd qemu
- $ git checkout tizen
-$ ./configure \
--target-list=i386-softmmu \
--enable-werror --disable-gtk \
--audio-drv-list=alsa \
--disable-vnc --disable-pie \
--enable-sdl --with-sdlabi=1.2 \
--enable-vigs --enable-yagl \
--enable-maru --enable-libpng \
--enable-virtfs
- $ make -C tizen/src build_info && make

5. 빌드된 결과물
- 아래와 같인 빌드 환경이 구성되어 있고 빌드를 마친 상태라고 가정하자
- $ ./tizen_dist.ext3
- $ ./emulator-kernel/arch/x86/boot/bzImage
- $ ./swap.x86
- $ ./qemu/i386-softmmu/qemu-system-i386

6. 실행
- $ ./info.ini 파일을 아래와 같이 생성 (현재 디렉터리 : /opt/tizen 로 가정)
[[QEMU_OPTIONS]]
-M pc
-m 1024
-drive file=/opt/tizen/tizen_dist.ext3,if=virtio,index=1
-drive file=/opt/tizen/swap.x86,if=virtio,index=2
-boot c
-append "console=ttyS0 root=/dev/vda rw video=LVDS-1:640x480-320@60 ip=10.0.2.15::10.0.2.2:255.255.255.0::eth0:none vm_name=tizen sdb_port=26100"
-serial "file://dev/stderr"
-kernel /opt/tizen/emulator-kernel/arch/x86/boot/bzImage
-enable-kvm
-smp 4
-vga none
-vigs-backend gl
-yagl-backend vigs
-enable-vigs
-enable-yagl
-display sdl
-soundhw all
-device virtio-hwkey-pci
-usb
-usbdevice tablet
-net nic
-net user
-redir tcp:22122::22
- 아래와 같이 실행한다
- $ ./qemu/i386-softmmu/qemu-system-i386 -c ./info.ini --resolution 640x480

7. 부팅 실패
- 커널 로그 (시리얼 로그)에 /sbin/init이 없다고 부팅이 실패한다

8. /sbin/init 생성
- 커널을 수정할 수도 있겠으나 그냥 이미지를 수정해서 /sbin/init을 생성한다
- 마운트해서 살펴보니 /usr/sbin/init 만 존재
    - /usr/sbin/init -> /lib/systemd/systemd
- $ mkdir mnt
- $ sudo mount  ./tizen_dist.ext3 mnt
- $ cd ./mnt/sbin
- $ sudo ln -s /lib/systemd/systemd init

9. ssh 접속
- $ ssh -p 22122 root@localhost

10. 화면 출력이 되지 않는다
 - Platform의 wayland를 Emulator용으로 빌드 및 적용이 필요하다

댓글

이 블로그의 인기 게시물

SSH 연결 Delay 해결

[ELK] search guard를 이용한 보안 설정 (사용자 권한)

공공데이터(openapi) 사용법 (특정 정류소, 버스의 남은 좌석 확인 하기)