2016년 2월 11일 목요일

VirtualBox + UBuntu 14.04 환경에 Yocto 설치

UBuntu 14.04 VirtualBox 설치된 환경에 Yocto 설치 과정 설명


Yocto 빌드는 초기에는 시간이 많이 소요되므로 되도록 전용 머신을 권고하고 있지만 yocto만을 위해 장비를 따로 두기도 어렵고해서 VirtualBox환경에서 빌드를 진행하기로 함. 사실 느릴거라는 걱정외에 다른 문제가 있을것이라고는 생각되지 않기도 하고.. 

몇몇 machine type 테스트 결과 "문제없이 잘되더라"가 지금까지 테스트 결과. 
뭐.. 좀더 해보다 보면 문제를 만날수도 있을것 같은데 지금까지는 문제 없이 잘되고 있음 확인. 머신따로 없어도 될것같아 다행 ㅎㅎ

실행 명령어 목록 및 설명 - 기본사양
1. tool 설치
$ cd ~
$ sudo apt-get update
$ sudo apt-get install git tar python
$ sudo apt-get install gawk wget git-core diffstat unzip texinfo gcc-multilib build-essential chrpath socat libsdl1.2-dev xterm

2. 디렉토리 생성및 최신 버전 다운로드
$ mkdir yocto
$ cd yocto
$ git clone git://git.yoctoproject.org/poky
$ cd poky
$ git checkout -b jethro origin/jethro

3. 빌드환경 초기화.  x86용 빌드디렉토리(qemux86) 생성
$ source oe-init-build-env qemux86

4. 빌드. 여러 이미지를 선택가능하나 그중 GUI가 그럴듯한 core-image-sato 선택.  나의 환경에서는 4시간 소요. 
$ bitbake core-image-sato

5. 실행. 
$ runqemu qemux86

qemu 실행 이미지.  




한번 빌드가 되면 이후 동일한 machine type( 경우는 x86) 이미지 빌드는 소요시간이 대폭적으로 단축됨

$ bitbake core-image-minimal 같이 간단한것은 10 이내로 단축됨

ARM 빌드
빌드 디렉토리에 대한 특별한 룰은 없으나 machine type 따라 빌드 디렉토리를 따로 관리하는것이 좋다고 "Embedded Linux Projects Using Yocto cookbook"에서는 권고하고 있어 ARM 빌드용 디렉토리를 따로 만듬.

1. 빌드환경 초기화 디렉토리(qemuarm) 생성
$ cd ~/yocto/poky
$ source oe-init-build-env qemuarm  

2. 빌드.  이번에는 간단한 core-image-minimal로 빌드. 1시간 정도 소요.
$ MACHINE=qemuarm bitbake core-image-minimal

MACHINE는 machine type을 의미하며 conf/local.conf에 설정 값이 있다. 
conf/local.conf를 에디팅해서 MACHINE=qemuarm로 했다면 bitbake 명령 서두에 굳이 MACHINE=qemuarm을 추가 하지 않아도 된다.

3. 실행.  간단한 text 콘솔화면을 볼수 있음. 
$ runqemu qemuarm core-image-minimal


테스트로 x86 이미지를 빌드했으나 문제 없이 잘됨. 책에서 말한것은 어디까지나 권고사항 이었음..


$ MACHINE=qemux86 bitbake core-image-minimal

생성된 이미지들은 tmp/deploy/images 아래에 생성됨. 따라서 qemuarm qemux86 디렉토리가 생성되었음을 확인할수 있다
아래 그림과 같이 폴더내에는 image 종류에 따라 빌드된 이미지들이 들어 있음을 확인할 있다.

참고로 아래 3가지 이미지가 생성되었음을 확인 할 수 있다. 
- core-image-minimal
- core-image-minimal-dev
- core-image-sato

Default images are: 이미지 종류
  • core-image-minimal : This is the smallest BusyBox-, sysvinit-, and udev-based console-only image
  • core-image-full-cmdline : This is the BusyBox-based console-only image with full hardware support and a more complete Linux system, including bash
  • core-image-lsb : This is a console-only image that is based on Linux Standard Base compliance
  • core-image-x11 : This is the basic X11 Windows-system-based image with a graphical terminal
  • core-image-sato : This is the X11 Window-system-based image with a SATO theme and a GNOME Mobile desktop environment
  • core-image-weston : This is a Wayland protocol and Weston reference compositorbased image


You will also find images with the following suffixes:
  • dev : These images are suitable for development work, as they contain headers and libraries.
  • sdk : These images include a complete SDK that can be used for development on the target.
  • initramfs : This is an image that can be used for a RAM-RAM-based root filesystem, which can optionally be embedded with the Linux kernel.

댓글 3개:

  1. 2008년 구입한 저의 Core i5 16Gb ram 1Tb hdd로는 최초 빌드하니 2시간이 넘게 걸리네요 ssd를 windows로 돌리고 있어서 ssd에는 못해봤는데.. 오늘 새로 ssd 주문했으니 ssd에 올려놓고 다시 해봐야겠습니다

    답글삭제
  2. 작성자가 댓글을 삭제했습니다.

    답글삭제
  3. 어제 밤 주문한 ssd가 도착하여 ssd에 소스 받고 빌드하였는데 결과가 대동소이합니다 약 2시간. ssd에 리눅스를 설치하고 빌드하면 어떻게 결과가 나올지는 잘 모르겠지만 아마도 큰 차이가 없을 것 같습니다 저의 1차 결론은 빌드 과정에서 안드로이드처럼 io가 많은 것이 아니라 compile time 자체가 많거나 build process가 아직 최적화되지 않은 것으로 추측됩니다 일례로 빌드 중간에 cpu를 하나만 사용하고 있는 시간이 많습니다

    답글삭제