Build Appliance Design

From Yocto Project
Jump to: navigation, search

This page holds the design for the Yocto Project build appliance.


Usage Model

This feature is designed to make the Yocto Project much more appealing to the developer who wants to check Yocto out but may not have a recent (and supported) Linux distro installed with all of the proxies set up correctly.

The developer will download a virtual image and boot it. This image is a Linux OS which will allow the user to do a build, boot the resulting Linux in an emulator. This gives a quick experience with the system without fear of dependencies being missing. (This is needed because of the general difficulty in having something as complex as the Yocto Project be totally compatible with every conceivable Linux system.

It is a non-goal that a developer would continue to use this appliance for all day-to-day development tasks.


  1. Preferred: Total size of the image must not exceed 100 Mbytes, to make it feasible to download the image.
  2. Preferred: Have a second, larger image which includes all source and sstate-cache preinstalled, but may be much larger.
  3. Preferred: VMWare ESX image. VMWare is known to correctly build whereas recent versions of Virtual Box and others are not.
  4. Required: Must have Linux plus all prerequisite packages installed to make a build work.
  5. Preferred: Generate the OS in the appliance with Yocto. (Thus, make it a self-hosted build appliance)
  6. Preferred: When the image boots, it boots up Hob and also has a terminal for launching QEMU or deploying the image
  7. Preferred: In addition to Hob, there is GUI support for deploying the image on a board and / or boot it into QEMU

Design Notes

First step is to build a non-graphical image that can provide a user with the needed tools to correctly build an image

Provide a simple X-Desktop with the HOB (pyGTK based) and a terminal (X-Term)

Create an APP or extend HOB to support deployment of images,

- this could be to a USB Device
  - HDD
  - USB Mem Stick
  - SD Card or similar
- Burn a CD/DVD is available
- Other deployment option 
  - Network to real hardware (talk to Darren/Tom)?


1. Build an qemu image, in which "bitbake core-image-minimal" work

  • [P1][D2] check saul's branch to see how close it meet the goal - Dexuan/Edwin
  • [P1][D3, depends on checking result] identify required host recipes and port them to yocto including

bitbake, wegt... Dexuan/Edwin Use n450 to speed up debug process, and nfs for source/sstate at this stage

2. Improve self-hosted performance - done on KVM except pass-through, lower priority as vmware performance is acceptable

  • [P2][D2] pre-install another disk image for source/sstate - Edwin
  • [P2][D5] build performance improvement/test: enabling KVM, SMP, virtio or device pass-through for network/disk - Dexuan

3. Integrate hob - patch already in poky master

  • [P1][D5] minimal X system and required LIB to start terminal - Edwin
  • [P1][D5] integrate hob - Edwin

4. Transfer to vmware image - done

  • [P2][D2] try vmware workstation - Dexuan
  • [P2][D3] disk image format translating from qemu to vmware - Dexuan

5. Reduce image size - image size is low priority, performance is the key

  • [P2][D5] identify and remove unnecessary recipes - Edwin
  • [P2][D5] tune features for big recipes, like kernel/glibc to reduce image size & improve performance - Edwin

6. Deploying image - done

  • [P1][D10] creating live hdd image/or ISO - Dexuan
  • [P2][D10] extend HOB to deploy image - Dexuan

7 Documentation

  • [P2][D2] Readme also include instructions to setup sstate image - Edwin

8 Others

  • [P2][D2] one recipe to install source in the the self-hosted-image.(build from another new disk image) - done by Dexuan and Saul
  • [P2] Fix "Multiple X provider" - done by RP
  • [P2] Fix the PATH issue to find all utility - done
  • [P2] hicolor issue - done by Dexuan
  • [P2] check the disk pass-through in vmware, ask for ESC license to check performance - Edwin

KVM Performance

See the following Page for details: BKM:_improve_qemu_performance

Personal tools