1*09209eecSAndrew Geissler.. SPDX-License-Identifier: CC-BY-SA-2.0-UK
2*09209eecSAndrew Geissler
3*09209eecSAndrew Geissler=========================
4*09209eecSAndrew GeisslerYocto Project Quick Build
5*09209eecSAndrew Geissler=========================
6*09209eecSAndrew Geissler
7*09209eecSAndrew GeisslerWelcome!
8*09209eecSAndrew Geissler========
9*09209eecSAndrew Geissler
10*09209eecSAndrew GeisslerThis short document steps you through the process for a typical
11*09209eecSAndrew Geisslerimage build using the Yocto Project. The document also introduces how to
12*09209eecSAndrew Geisslerconfigure a build for specific hardware. You will use Yocto Project to
13*09209eecSAndrew Geisslerbuild a reference embedded OS called Poky.
14*09209eecSAndrew Geissler
15*09209eecSAndrew Geissler.. note::
16*09209eecSAndrew Geissler
17*09209eecSAndrew Geissler   -  The examples in this paper assume you are using a native Linux
18*09209eecSAndrew Geissler      system running a recent Ubuntu Linux distribution. If the machine
19*09209eecSAndrew Geissler      you want to use Yocto Project on to build an image
20*09209eecSAndrew Geissler      (:term:`Build Host`) is not
21*09209eecSAndrew Geissler      a native Linux system, you can still perform these steps by using
22*09209eecSAndrew Geissler      CROss PlatformS (CROPS) and setting up a Poky container. See the
23*09209eecSAndrew Geissler      :ref:`dev-manual/start:setting up to use cross platforms (crops)`
24*09209eecSAndrew Geissler      section
25*09209eecSAndrew Geissler      in the Yocto Project Development Tasks Manual for more
26*09209eecSAndrew Geissler      information.
27*09209eecSAndrew Geissler
28*09209eecSAndrew Geissler   -  You may use Windows Subsystem For Linux v2 to set up a build host
29*09209eecSAndrew Geissler      using Windows 10.
30*09209eecSAndrew Geissler
31*09209eecSAndrew Geissler      .. note::
32*09209eecSAndrew Geissler
33*09209eecSAndrew Geissler         The Yocto Project is not compatible with WSLv1, it is
34*09209eecSAndrew Geissler         compatible but not officially supported nor validated with
35*09209eecSAndrew Geissler         WSLv2, if you still decide to use WSL please upgrade to WSLv2.
36*09209eecSAndrew Geissler
37*09209eecSAndrew Geissler      See the :ref:`dev-manual/start:setting up to use windows
38*09209eecSAndrew Geissler      subsystem for linux (wslv2)` section in the Yocto Project Development
39*09209eecSAndrew Geissler      Tasks Manual for more information.
40*09209eecSAndrew Geissler
41*09209eecSAndrew GeisslerIf you want more conceptual or background information on the Yocto
42*09209eecSAndrew GeisslerProject, see the :doc:`/overview-manual/index`.
43*09209eecSAndrew Geissler
44*09209eecSAndrew GeisslerCompatible Linux Distribution
45*09209eecSAndrew Geissler=============================
46*09209eecSAndrew Geissler
47*09209eecSAndrew GeisslerMake sure your :term:`Build Host` meets the
48*09209eecSAndrew Geisslerfollowing requirements:
49*09209eecSAndrew Geissler
50*09209eecSAndrew Geissler-  50 Gbytes of free disk space
51*09209eecSAndrew Geissler
52*09209eecSAndrew Geissler-  Runs a supported Linux distribution (i.e. recent releases of Fedora,
53*09209eecSAndrew Geissler   openSUSE, CentOS, Debian, or Ubuntu). For a list of Linux
54*09209eecSAndrew Geissler   distributions that support the Yocto Project, see the
55*09209eecSAndrew Geissler   :ref:`ref-manual/system-requirements:supported linux distributions`
56*09209eecSAndrew Geissler   section in the Yocto Project Reference Manual. For detailed
57*09209eecSAndrew Geissler   information on preparing your build host, see the
58*09209eecSAndrew Geissler   :ref:`dev-manual/start:preparing the build host`
59*09209eecSAndrew Geissler   section in the Yocto Project Development Tasks Manual.
60*09209eecSAndrew Geissler
61*09209eecSAndrew Geissler-
62*09209eecSAndrew Geissler
63*09209eecSAndrew Geissler   -  Git 1.8.3.1 or greater
64*09209eecSAndrew Geissler   -  tar 1.28 or greater
65*09209eecSAndrew Geissler   -  Python 3.5.0 or greater.
66*09209eecSAndrew Geissler   -  gcc 5.0 or greater.
67*09209eecSAndrew Geissler
68*09209eecSAndrew GeisslerIf your build host does not meet any of these three listed version
69*09209eecSAndrew Geisslerrequirements, you can take steps to prepare the system so that you
70*09209eecSAndrew Geisslercan still use the Yocto Project. See the
71*09209eecSAndrew Geissler:ref:`ref-manual/system-requirements:required git, tar, python and gcc versions`
72*09209eecSAndrew Geisslersection in the Yocto Project Reference Manual for information.
73*09209eecSAndrew Geissler
74*09209eecSAndrew GeisslerBuild Host Packages
75*09209eecSAndrew Geissler===================
76*09209eecSAndrew Geissler
77*09209eecSAndrew GeisslerYou must install essential host packages on your build host. The
78*09209eecSAndrew Geisslerfollowing command installs the host packages based on an Ubuntu
79*09209eecSAndrew Geisslerdistribution:
80*09209eecSAndrew Geissler
81*09209eecSAndrew Geissler.. code-block:: shell
82*09209eecSAndrew Geissler
83*09209eecSAndrew Geissler  $ sudo apt-get install &UBUNTU_HOST_PACKAGES_ESSENTIAL;
84*09209eecSAndrew Geissler
85*09209eecSAndrew Geissler.. note::
86*09209eecSAndrew Geissler
87*09209eecSAndrew Geissler   For host package requirements on all supported Linux distributions,
88*09209eecSAndrew Geissler   see the :ref:`ref-manual/system-requirements:required packages for the build host`
89*09209eecSAndrew Geissler   section in the Yocto Project Reference Manual.
90*09209eecSAndrew Geissler
91*09209eecSAndrew GeisslerUse Git to Clone Poky
92*09209eecSAndrew Geissler=====================
93*09209eecSAndrew Geissler
94*09209eecSAndrew GeisslerOnce you complete the setup instructions for your machine, you need to
95*09209eecSAndrew Geisslerget a copy of the Poky repository on your build host. Use the following
96*09209eecSAndrew Geisslercommands to clone the Poky repository.
97*09209eecSAndrew Geissler
98*09209eecSAndrew Geissler.. code-block:: shell
99*09209eecSAndrew Geissler
100*09209eecSAndrew Geissler   $ git clone git://git.yoctoproject.org/poky
101*09209eecSAndrew Geissler   Cloning into 'poky'...
102*09209eecSAndrew Geissler   remote: Counting
103*09209eecSAndrew Geissler   objects: 432160, done. remote: Compressing objects: 100%
104*09209eecSAndrew Geissler   (102056/102056), done. remote: Total 432160 (delta 323116), reused
105*09209eecSAndrew Geissler   432037 (delta 323000) Receiving objects: 100% (432160/432160), 153.81 MiB | 8.54 MiB/s, done.
106*09209eecSAndrew Geissler   Resolving deltas: 100% (323116/323116), done.
107*09209eecSAndrew Geissler   Checking connectivity... done.
108*09209eecSAndrew Geissler
109*09209eecSAndrew GeisslerMove to the ``poky`` directory and take a look at the tags:
110*09209eecSAndrew Geissler
111*09209eecSAndrew Geissler.. code-block:: shell
112*09209eecSAndrew Geissler
113*09209eecSAndrew Geissler   $ cd poky
114*09209eecSAndrew Geissler   $ git fetch --tags
115*09209eecSAndrew Geissler   $ git tag
116*09209eecSAndrew Geissler   1.1_M1.final
117*09209eecSAndrew Geissler   1.1_M1.rc1
118*09209eecSAndrew Geissler   1.1_M1.rc2
119*09209eecSAndrew Geissler   1.1_M2.final
120*09209eecSAndrew Geissler   1.1_M2.rc1
121*09209eecSAndrew Geissler   .
122*09209eecSAndrew Geissler   .
123*09209eecSAndrew Geissler   .
124*09209eecSAndrew Geissler   yocto-2.5
125*09209eecSAndrew Geissler   yocto-2.5.1
126*09209eecSAndrew Geissler   yocto-2.5.2
127*09209eecSAndrew Geissler   yocto-2.6
128*09209eecSAndrew Geissler   yocto-2.6.1
129*09209eecSAndrew Geissler   yocto-2.6.2
130*09209eecSAndrew Geissler   yocto-2.7
131*09209eecSAndrew Geissler   yocto_1.5_M5.rc8
132*09209eecSAndrew Geissler
133*09209eecSAndrew GeisslerFor this example, check out the branch based on the
134*09209eecSAndrew Geissler``&DISTRO_REL_TAG;`` release:
135*09209eecSAndrew Geissler
136*09209eecSAndrew Geissler.. code-block:: shell
137*09209eecSAndrew Geissler
138*09209eecSAndrew Geissler   $ git checkout tags/&DISTRO_REL_TAG; -b my-&DISTRO_REL_TAG;
139*09209eecSAndrew Geissler   Switched to a new branch 'my-&DISTRO_REL_TAG;'
140*09209eecSAndrew Geissler
141*09209eecSAndrew GeisslerThe previous Git checkout command creates a local branch named
142*09209eecSAndrew Geissler``my-&DISTRO_REL_TAG;``. The files available to you in that branch exactly
143*09209eecSAndrew Geisslermatch the repository's files in the ``&DISTRO_NAME_NO_CAP;`` development
144*09209eecSAndrew Geisslerbranch at the time of the Yocto Project &DISTRO_REL_TAG; release.
145*09209eecSAndrew Geissler
146*09209eecSAndrew GeisslerFor more options and information about accessing Yocto Project related
147*09209eecSAndrew Geisslerrepositories, see the
148*09209eecSAndrew Geissler:ref:`dev-manual/start:locating yocto project source files`
149*09209eecSAndrew Geisslersection in the Yocto Project Development Tasks Manual.
150*09209eecSAndrew Geissler
151*09209eecSAndrew GeisslerBuilding Your Image
152*09209eecSAndrew Geissler===================
153*09209eecSAndrew Geissler
154*09209eecSAndrew GeisslerUse the following steps to build your image. The build process creates
155*09209eecSAndrew Geissleran entire Linux distribution, including the toolchain, from source.
156*09209eecSAndrew Geissler
157*09209eecSAndrew Geissler.. note::
158*09209eecSAndrew Geissler
159*09209eecSAndrew Geissler   -  If you are working behind a firewall and your build host is not
160*09209eecSAndrew Geissler      set up for proxies, you could encounter problems with the build
161*09209eecSAndrew Geissler      process when fetching source code (e.g. fetcher failures or Git
162*09209eecSAndrew Geissler      failures).
163*09209eecSAndrew Geissler
164*09209eecSAndrew Geissler   -  If you do not know your proxy settings, consult your local network
165*09209eecSAndrew Geissler      infrastructure resources and get that information. A good starting
166*09209eecSAndrew Geissler      point could also be to check your web browser settings. Finally,
167*09209eecSAndrew Geissler      you can find more information on the
168*09209eecSAndrew Geissler      ":yocto_wiki:`Working Behind a Network Proxy </Working_Behind_a_Network_Proxy>`"
169*09209eecSAndrew Geissler      page of the Yocto Project Wiki.
170*09209eecSAndrew Geissler
171*09209eecSAndrew Geissler#. **Initialize the Build Environment:** From within the ``poky``
172*09209eecSAndrew Geissler   directory, run the :ref:`ref-manual/structure:\`\`oe-init-build-env\`\``
173*09209eecSAndrew Geissler   environment
174*09209eecSAndrew Geissler   setup script to define Yocto Project's build environment on your
175*09209eecSAndrew Geissler   build host.
176*09209eecSAndrew Geissler
177*09209eecSAndrew Geissler   .. code-block:: shell
178*09209eecSAndrew Geissler
179*09209eecSAndrew Geissler      $ cd ~/poky
180*09209eecSAndrew Geissler      $ source oe-init-build-env
181*09209eecSAndrew Geissler      You had no conf/local.conf file. This configuration file has therefore been
182*09209eecSAndrew Geissler      created for you with some default values. You may wish to edit it to, for
183*09209eecSAndrew Geissler      example, select a different MACHINE (target hardware). See conf/local.conf
184*09209eecSAndrew Geissler      for more information as common configuration options are commented.
185*09209eecSAndrew Geissler
186*09209eecSAndrew Geissler      You had no conf/bblayers.conf file. This configuration file has therefore
187*09209eecSAndrew Geissler      been created for you with some default values. To add additional metadata
188*09209eecSAndrew Geissler      layers into your configuration please add entries to conf/bblayers.conf.
189*09209eecSAndrew Geissler
190*09209eecSAndrew Geissler      The Yocto Project has extensive documentation about OE including a reference
191*09209eecSAndrew Geissler      manual which can be found at:
192*09209eecSAndrew Geissler          http://yoctoproject.org/documentation
193*09209eecSAndrew Geissler
194*09209eecSAndrew Geissler      For more information about OpenEmbedded see their website:
195*09209eecSAndrew Geissler          http://www.openembedded.org/
196*09209eecSAndrew Geissler
197*09209eecSAndrew Geissler      ### Shell environment set up for builds. ###
198*09209eecSAndrew Geissler
199*09209eecSAndrew Geissler      You can now run 'bitbake <target>'
200*09209eecSAndrew Geissler
201*09209eecSAndrew Geissler      Common targets are:
202*09209eecSAndrew Geissler          core-image-minimal
203*09209eecSAndrew Geissler          core-image-sato
204*09209eecSAndrew Geissler          meta-toolchain
205*09209eecSAndrew Geissler          meta-ide-support
206*09209eecSAndrew Geissler
207*09209eecSAndrew Geissler      You can also run generated qemu images with a command like 'runqemu qemux86-64'
208*09209eecSAndrew Geissler
209*09209eecSAndrew Geissler   Among other things, the script creates the :term:`Build Directory`, which is
210*09209eecSAndrew Geissler   ``build`` in this case and is located in the :term:`Source Directory`.  After
211*09209eecSAndrew Geissler   the script runs, your current working directory is set to the Build
212*09209eecSAndrew Geissler   Directory. Later, when the build completes, the Build Directory contains all the
213*09209eecSAndrew Geissler   files created during the build.
214*09209eecSAndrew Geissler
215*09209eecSAndrew Geissler#. **Examine Your Local Configuration File:** When you set up the build
216*09209eecSAndrew Geissler   environment, a local configuration file named ``local.conf`` becomes
217*09209eecSAndrew Geissler   available in a ``conf`` subdirectory of the Build Directory. For this
218*09209eecSAndrew Geissler   example, the defaults are set to build for a ``qemux86`` target,
219*09209eecSAndrew Geissler   which is suitable for emulation. The package manager used is set to
220*09209eecSAndrew Geissler   the RPM package manager.
221*09209eecSAndrew Geissler
222*09209eecSAndrew Geissler   .. tip::
223*09209eecSAndrew Geissler
224*09209eecSAndrew Geissler      You can significantly speed up your build and guard against fetcher
225*09209eecSAndrew Geissler      failures by using mirrors. To use mirrors, add these lines to your
226*09209eecSAndrew Geissler      local.conf file in the Build directory: ::
227*09209eecSAndrew Geissler
228*09209eecSAndrew Geissler         SSTATE_MIRRORS = "\
229*09209eecSAndrew Geissler         file://.* http://sstate.yoctoproject.org/dev/PATH;downloadfilename=PATH \n \
230*09209eecSAndrew Geissler         file://.* http://sstate.yoctoproject.org/&YOCTO_DOC_VERSION_MINUS_ONE;/PATH;downloadfilename=PATH \n \
231*09209eecSAndrew Geissler         file://.* http://sstate.yoctoproject.org/&YOCTO_DOC_VERSION;/PATH;downloadfilename=PATH \n \
232*09209eecSAndrew Geissler         "
233*09209eecSAndrew Geissler
234*09209eecSAndrew Geissler
235*09209eecSAndrew Geissler      The previous examples showed how to add sstate paths for Yocto Project
236*09209eecSAndrew Geissler      &YOCTO_DOC_VERSION_MINUS_ONE;, &YOCTO_DOC_VERSION;, and a development
237*09209eecSAndrew Geissler      area. For a complete index of sstate locations, see http://sstate.yoctoproject.org/.
238*09209eecSAndrew Geissler
239*09209eecSAndrew Geissler#. **Start the Build:** Continue with the following command to build an OS
240*09209eecSAndrew Geissler   image for the target, which is ``core-image-sato`` in this example:
241*09209eecSAndrew Geissler
242*09209eecSAndrew Geissler   .. code-block:: shell
243*09209eecSAndrew Geissler
244*09209eecSAndrew Geissler      $ bitbake core-image-sato
245*09209eecSAndrew Geissler
246*09209eecSAndrew Geissler   For information on using the ``bitbake`` command, see the
247*09209eecSAndrew Geissler   :ref:`overview-manual/concepts:bitbake` section in the Yocto Project Overview and
248*09209eecSAndrew Geissler   Concepts Manual, or see the ":ref:`BitBake Command
249*09209eecSAndrew Geissler   <bitbake:bitbake-user-manual/bitbake-user-manual-intro:the bitbake command>`" section in the BitBake User Manual.
250*09209eecSAndrew Geissler
251*09209eecSAndrew Geissler#. **Simulate Your Image Using QEMU:** Once this particular image is
252*09209eecSAndrew Geissler   built, you can start QEMU, which is a Quick EMUlator that ships with
253*09209eecSAndrew Geissler   the Yocto Project:
254*09209eecSAndrew Geissler
255*09209eecSAndrew Geissler   .. code-block:: shell
256*09209eecSAndrew Geissler
257*09209eecSAndrew Geissler      $ runqemu qemux86-64
258*09209eecSAndrew Geissler
259*09209eecSAndrew Geissler   If you want to learn more about running QEMU, see the
260*09209eecSAndrew Geissler   :ref:`dev-manual/qemu:using the quick emulator (qemu)` chapter in
261*09209eecSAndrew Geissler   the Yocto Project Development Tasks Manual.
262*09209eecSAndrew Geissler
263*09209eecSAndrew Geissler#. **Exit QEMU:** Exit QEMU by either clicking on the shutdown icon or by typing
264*09209eecSAndrew Geissler   ``Ctrl-C`` in the QEMU transcript window from which you evoked QEMU.
265*09209eecSAndrew Geissler
266*09209eecSAndrew GeisslerCustomizing Your Build for Specific Hardware
267*09209eecSAndrew Geissler============================================
268*09209eecSAndrew Geissler
269*09209eecSAndrew GeisslerSo far, all you have done is quickly built an image suitable for
270*09209eecSAndrew Geissleremulation only. This section shows you how to customize your build for
271*09209eecSAndrew Geisslerspecific hardware by adding a hardware layer into the Yocto Project
272*09209eecSAndrew Geisslerdevelopment environment.
273*09209eecSAndrew Geissler
274*09209eecSAndrew GeisslerIn general, layers are repositories that contain related sets of
275*09209eecSAndrew Geisslerinstructions and configurations that tell the Yocto Project what to do.
276*09209eecSAndrew GeisslerIsolating related metadata into functionally specific layers facilitates
277*09209eecSAndrew Geisslermodular development and makes it easier to reuse the layer metadata.
278*09209eecSAndrew Geissler
279*09209eecSAndrew Geissler.. note::
280*09209eecSAndrew Geissler
281*09209eecSAndrew Geissler   By convention, layer names start with the string "meta-".
282*09209eecSAndrew Geissler
283*09209eecSAndrew GeisslerFollow these steps to add a hardware layer:
284*09209eecSAndrew Geissler
285*09209eecSAndrew Geissler#. **Find a Layer:** Lots of hardware layers exist. The Yocto Project
286*09209eecSAndrew Geissler   :yocto_git:`Source Repositories <>` has many hardware layers.
287*09209eecSAndrew Geissler   This example adds the
288*09209eecSAndrew Geissler   `meta-altera <https://github.com/kraj/meta-altera>`__ hardware layer.
289*09209eecSAndrew Geissler
290*09209eecSAndrew Geissler#. **Clone the Layer:** Use Git to make a local copy of the layer on your
291*09209eecSAndrew Geissler   machine. You can put the copy in the top level of the copy of the
292*09209eecSAndrew Geissler   Poky repository created earlier:
293*09209eecSAndrew Geissler
294*09209eecSAndrew Geissler   .. code-block:: shell
295*09209eecSAndrew Geissler
296*09209eecSAndrew Geissler      $ cd ~/poky
297*09209eecSAndrew Geissler      $ git clone https://github.com/kraj/meta-altera.git
298*09209eecSAndrew Geissler      Cloning into 'meta-altera'...
299*09209eecSAndrew Geissler      remote: Counting objects: 25170, done.
300*09209eecSAndrew Geissler      remote: Compressing objects: 100% (350/350), done.
301*09209eecSAndrew Geissler      remote: Total 25170 (delta 645), reused 719 (delta 538), pack-reused 24219
302*09209eecSAndrew Geissler      Receiving objects: 100% (25170/25170), 41.02 MiB | 1.64 MiB/s, done.
303*09209eecSAndrew Geissler      Resolving deltas: 100% (13385/13385), done.
304*09209eecSAndrew Geissler      Checking connectivity... done.
305*09209eecSAndrew Geissler
306*09209eecSAndrew Geissler   The hardware layer now exists
307*09209eecSAndrew Geissler   with other layers inside the Poky reference repository on your build
308*09209eecSAndrew Geissler   host as ``meta-altera`` and contains all the metadata needed to
309*09209eecSAndrew Geissler   support hardware from Altera, which is owned by Intel.
310*09209eecSAndrew Geissler
311*09209eecSAndrew Geissler   .. note::
312*09209eecSAndrew Geissler
313*09209eecSAndrew Geissler      It is recommended for layers to have a branch per Yocto Project release.
314*09209eecSAndrew Geissler      Please make sure to checkout the layer branch supporting the Yocto Project
315*09209eecSAndrew Geissler      release you're using.
316*09209eecSAndrew Geissler
317*09209eecSAndrew Geissler#. **Change the Configuration to Build for a Specific Machine:** The
318*09209eecSAndrew Geissler   :term:`MACHINE` variable in the
319*09209eecSAndrew Geissler   ``local.conf`` file specifies the machine for the build. For this
320*09209eecSAndrew Geissler   example, set the ``MACHINE`` variable to ``cyclone5``. These
321*09209eecSAndrew Geissler   configurations are used:
322*09209eecSAndrew Geissler   https://github.com/kraj/meta-altera/blob/master/conf/machine/cyclone5.conf.
323*09209eecSAndrew Geissler
324*09209eecSAndrew Geissler   .. note::
325*09209eecSAndrew Geissler
326*09209eecSAndrew Geissler      See the "Examine Your Local Configuration File" step earlier for more
327*09209eecSAndrew Geissler      information on configuring the build.
328*09209eecSAndrew Geissler
329*09209eecSAndrew Geissler#. **Add Your Layer to the Layer Configuration File:** Before you can use
330*09209eecSAndrew Geissler   a layer during a build, you must add it to your ``bblayers.conf``
331*09209eecSAndrew Geissler   file, which is found in the
332*09209eecSAndrew Geissler   :term:`Build Directory` ``conf``
333*09209eecSAndrew Geissler   directory.
334*09209eecSAndrew Geissler
335*09209eecSAndrew Geissler   Use the ``bitbake-layers add-layer`` command to add the layer to the
336*09209eecSAndrew Geissler   configuration file:
337*09209eecSAndrew Geissler
338*09209eecSAndrew Geissler   .. code-block:: shell
339*09209eecSAndrew Geissler
340*09209eecSAndrew Geissler      $ cd ~/poky/build
341*09209eecSAndrew Geissler      $ bitbake-layers add-layer ../meta-altera
342*09209eecSAndrew Geissler      NOTE: Starting bitbake server...
343*09209eecSAndrew Geissler      Parsing recipes: 100% |##################################################################| Time: 0:00:32
344*09209eecSAndrew Geissler      Parsing of 918 .bb files complete (0 cached, 918 parsed). 1401 targets,
345*09209eecSAndrew Geissler      123 skipped, 0 masked, 0 errors.
346*09209eecSAndrew Geissler
347*09209eecSAndrew Geissler   You can find
348*09209eecSAndrew Geissler   more information on adding layers in the
349*09209eecSAndrew Geissler   :ref:`dev-manual/common-tasks:adding a layer using the \`\`bitbake-layers\`\` script`
350*09209eecSAndrew Geissler   section.
351*09209eecSAndrew Geissler
352*09209eecSAndrew GeisslerCompleting these steps has added the ``meta-altera`` layer to your Yocto
353*09209eecSAndrew GeisslerProject development environment and configured it to build for the
354*09209eecSAndrew Geissler``cyclone5`` machine.
355*09209eecSAndrew Geissler
356*09209eecSAndrew Geissler.. note::
357*09209eecSAndrew Geissler
358*09209eecSAndrew Geissler   The previous steps are for demonstration purposes only. If you were
359*09209eecSAndrew Geissler   to attempt to build an image for the ``cyclone5`` machine, you should
360*09209eecSAndrew Geissler   read the Altera ``README``.
361*09209eecSAndrew Geissler
362*09209eecSAndrew GeisslerCreating Your Own General Layer
363*09209eecSAndrew Geissler===============================
364*09209eecSAndrew Geissler
365*09209eecSAndrew GeisslerMaybe you have an application or specific set of behaviors you need to
366*09209eecSAndrew Geisslerisolate. You can create your own general layer using the
367*09209eecSAndrew Geissler``bitbake-layers create-layer`` command. The tool automates layer
368*09209eecSAndrew Geisslercreation by setting up a subdirectory with a ``layer.conf``
369*09209eecSAndrew Geisslerconfiguration file, a ``recipes-example`` subdirectory that contains an
370*09209eecSAndrew Geissler``example.bb`` recipe, a licensing file, and a ``README``.
371*09209eecSAndrew Geissler
372*09209eecSAndrew GeisslerThe following commands run the tool to create a layer named
373*09209eecSAndrew Geissler``meta-mylayer`` in the ``poky`` directory:
374*09209eecSAndrew Geissler
375*09209eecSAndrew Geissler.. code-block:: shell
376*09209eecSAndrew Geissler
377*09209eecSAndrew Geissler   $ cd ~/poky
378*09209eecSAndrew Geissler   $ bitbake-layers create-layer meta-mylayer
379*09209eecSAndrew Geissler   NOTE: Starting bitbake server...
380*09209eecSAndrew Geissler   Add your new layer with 'bitbake-layers add-layer meta-mylayer'
381*09209eecSAndrew Geissler
382*09209eecSAndrew GeisslerFor more information
383*09209eecSAndrew Geissleron layers and how to create them, see the
384*09209eecSAndrew Geissler:ref:`dev-manual/common-tasks:creating a general layer using the \`\`bitbake-layers\`\` script`
385*09209eecSAndrew Geisslersection in the Yocto Project Development Tasks Manual.
386*09209eecSAndrew Geissler
387*09209eecSAndrew GeisslerWhere To Go Next
388*09209eecSAndrew Geissler================
389*09209eecSAndrew Geissler
390*09209eecSAndrew GeisslerNow that you have experienced using the Yocto Project, you might be
391*09209eecSAndrew Geisslerasking yourself "What now?". The Yocto Project has many sources of
392*09209eecSAndrew Geisslerinformation including the website, wiki pages, and user manuals:
393*09209eecSAndrew Geissler
394*09209eecSAndrew Geissler-  **Website:** The :yocto_home:`Yocto Project Website <>` provides
395*09209eecSAndrew Geissler   background information, the latest builds, breaking news, full
396*09209eecSAndrew Geissler   development documentation, and access to a rich Yocto Project
397*09209eecSAndrew Geissler   Development Community into which you can tap.
398*09209eecSAndrew Geissler
399*09209eecSAndrew Geissler-  **Developer Screencast:** The `Getting Started with the Yocto Project -
400*09209eecSAndrew Geissler   New Developer Screencast Tutorial <http://vimeo.com/36450321>`__
401*09209eecSAndrew Geissler   provides a 30-minute video created for users unfamiliar with the
402*09209eecSAndrew Geissler   Yocto Project but familiar with Linux build hosts. While this
403*09209eecSAndrew Geissler   screencast is somewhat dated, the introductory and fundamental
404*09209eecSAndrew Geissler   concepts are useful for the beginner.
405*09209eecSAndrew Geissler
406*09209eecSAndrew Geissler-  **Yocto Project Overview and Concepts Manual:** The
407*09209eecSAndrew Geissler   :doc:`/overview-manual/index` is a great
408*09209eecSAndrew Geissler   place to start to learn about the Yocto Project. This manual
409*09209eecSAndrew Geissler   introduces you to the Yocto Project and its development environment.
410*09209eecSAndrew Geissler   The manual also provides conceptual information for various aspects
411*09209eecSAndrew Geissler   of the Yocto Project.
412*09209eecSAndrew Geissler
413*09209eecSAndrew Geissler-  **Yocto Project Wiki:** The :yocto_wiki:`Yocto Project Wiki <>`
414*09209eecSAndrew Geissler   provides additional information on where to go next when ramping up
415*09209eecSAndrew Geissler   with the Yocto Project, release information, project planning, and QA
416*09209eecSAndrew Geissler   information.
417*09209eecSAndrew Geissler
418*09209eecSAndrew Geissler-  **Yocto Project Mailing Lists:** Related mailing lists provide a forum
419*09209eecSAndrew Geissler   for discussion, patch submission and announcements. Several mailing
420*09209eecSAndrew Geissler   lists exist and are grouped according to areas of concern. See the
421*09209eecSAndrew Geissler   :ref:`ref-manual/resources:mailing lists`
422*09209eecSAndrew Geissler   section in the Yocto Project Reference Manual for a complete list of
423*09209eecSAndrew Geissler   Yocto Project mailing lists.
424*09209eecSAndrew Geissler
425*09209eecSAndrew Geissler-  **Comprehensive List of Links and Other Documentation:** The
426*09209eecSAndrew Geissler   :ref:`ref-manual/resources:links and related documentation`
427*09209eecSAndrew Geissler   section in the Yocto Project Reference Manual provides a
428*09209eecSAndrew Geissler   comprehensive list of all related links and other user documentation.
429*09209eecSAndrew Geissler
430*09209eecSAndrew Geissler.. include:: /boilerplate.rst
431