brief-yoctoprojectqs.html 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>My First Yocto Project Build</title><link rel="stylesheet" type="text/css" href="brief-yoctoprojectqs-style.css" /><meta name="generator" content="DocBook XSL Stylesheets V1.76.1" /><meta name="description" content="" /></head><body><div class="article" title="My First Yocto Project Build"><div xmlns="" class="titlepage"><div><div><table xmlns="http://www.w3.org/1999/xhtml" border="0" summary="manufactured viewport for HTML img" cellspacing="0" cellpadding="0" width="540"><tr style="height: 90px"><td align="right"><img src="figures/yocto-project-transp.png" align="right" width="135" /></td></tr></table></div><div><h2 xmlns="http://www.w3.org/1999/xhtml" class="title"><a id="brief-yocto-project-qs-intro"></a>My First Yocto Project Build<span class="permalink"><a alt="Permalink" title="Permalink" href="#brief-yocto-project-qs-intro">¶</a></span></h2></div><div><p xmlns="http://www.w3.org/1999/xhtml" class="copyright">Copyright © 2010-2018 Linux Foundation</p></div><div><div xmlns="http://www.w3.org/1999/xhtml" class="legalnotice" title="Legal Notice"><a id="idm45250776346368"></a><p>
  3. Permission is granted to copy, distribute and/or modify this document under
  4. the terms of the <a class="ulink" href="http://creativecommons.org/licenses/by-sa/2.0/uk/" target="_top">Creative Commons Attribution-Share Alike 2.0 UK: England &amp; Wales</a> as published by Creative Commons.
  5. </p><div class="note" title="Manual Notes" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Manual Notes</h3><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
  6. For the latest version of this document associated with
  7. this Yocto Project release
  8. (version 2.5), see the "My First
  9. Yocto Project Build" from the
  10. <a class="ulink" href="http://www.yoctoproject.org/documentation" target="_top">Yocto Project documentation page</a>.
  11. </p></li><li class="listitem"><p>
  12. This version of the manual is version
  13. 2.5.
  14. For later releases of the Yocto Project (if they exist),
  15. go to the
  16. <a class="ulink" href="http://www.yoctoproject.org/documentation" target="_top">Yocto Project documentation page</a>
  17. and use the drop-down "Active Releases" button
  18. and choose the Yocto Project version for which you want
  19. the manual.
  20. </p></li></ul></div></div></div></div></div><hr /></div><div class="section" title="1. Welcome!"><div xmlns="" class="titlepage"><div><div><h2 xmlns="http://www.w3.org/1999/xhtml" class="title" style="clear: both"><a id="brief-welcome"></a>1. Welcome!<span class="permalink"><a alt="Permalink" title="Permalink" href="#brief-welcome">¶</a></span></h2></div></div></div><p>
  21. Welcome!
  22. This short document steps you through the process for a typical
  23. image build using the Yocto Project.
  24. The build uses Poky, which is the reference embedded OS that is
  25. completely specified.
  26. </p><div class="note" title="Note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3>
  27. The examples in this paper assume you are using a native Linux
  28. system running a recent Ubuntu Linux distribution.
  29. If the machine you want to use
  30. Yocto Project on to build an image is not a native Linux
  31. system, you can still perform these steps by using CROss
  32. PlatformS (CROPS) and setting up a Poky container.
  33. See the
  34. <a class="ulink" href="http://www.yoctoproject.org/docs/2.5/dev-manual/dev-manual.html#setting-up-to-use-crops" target="_top">Setting Up to Use CROss PlatformS (CROPS)</a>"
  35. section in the Yocto Project Development Tasks Manual for more
  36. information.
  37. </div><p>
  38. </p><p>
  39. If you want more conceptual or background information on the
  40. Yocto Project, see the
  41. <a class="ulink" href="http://www.yoctoproject.org/docs/2.5/getting-started/getting-started.html" target="_top">Getting Started With Yocto Project Manual</a>.
  42. </p></div><div class="section" title="2. Compatible Linux Distribution"><div xmlns="" class="titlepage"><div><div><h2 xmlns="http://www.w3.org/1999/xhtml" class="title" style="clear: both"><a id="brief-compatible-distro"></a>2. Compatible Linux Distribution<span class="permalink"><a alt="Permalink" title="Permalink" href="#brief-compatible-distro">¶</a></span></h2></div></div></div><p>
  43. Make sure your build system meets the following requirements:
  44. </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
  45. 50 Gbytes of free disk space
  46. </p></li><li class="listitem"><p>
  47. Runs a supported Linux distribution (i.e. recent releases of
  48. Fedora, openSUSE, CentOS, Debian, or Ubuntu). For a list of
  49. Linux distributions that support the Yocto Project, see the
  50. "<a class="ulink" href="http://www.yoctoproject.org/docs/2.5/ref-manual/ref-manual.html#detailed-supported-distros" target="_top">Supported Linux Distributions</a>"
  51. section in the Yocto Project Reference Manual.
  52. </p></li><li class="listitem"><p>
  53. </p><div class="itemizedlist"><ul class="itemizedlist" type="circle"><li class="listitem"><p>
  54. Git 1.8.3.1 or greater
  55. </p></li><li class="listitem"><p>
  56. tar 1.27 or greater
  57. </p></li><li class="listitem"><p>
  58. Python 3.4.0 or greater.
  59. </p></li></ul></div><p>
  60. If your build host does not meet any of these three listed
  61. version requirements, you can take steps to prepare the
  62. system so that you can still use the Yocto Project.
  63. See the
  64. "<a class="ulink" href="http://www.yoctoproject.org/docs/2.5/ref-manual/ref-manual.html#required-git-tar-and-python-versions" target="_top">Required Git, tar, and Python Versions</a>"
  65. section in the Yocto Project Reference Manual for information.
  66. </p></li></ul></div><p>
  67. </p></div><div class="section" title="3. Build System Packages"><div xmlns="" class="titlepage"><div><div><h2 xmlns="http://www.w3.org/1999/xhtml" class="title" style="clear: both"><a id="brief-build-system-packages"></a>3. Build System Packages<span class="permalink"><a alt="Permalink" title="Permalink" href="#brief-build-system-packages">¶</a></span></h2></div></div></div><p>
  68. You must install essential host packages on your
  69. development host.
  70. The following command installs the host packages based on an
  71. Ubuntu distribution:
  72. </p><div class="note" title="Note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3>
  73. For host package requirements on all supported Linux
  74. distributions, see the
  75. "<a class="ulink" href="http://www.yoctoproject.org/docs/2.5/ref-manual/ref-manual.html#required-packages-for-the-host-development-system" target="_top">Required Packages for the Host Development System</a>"
  76. section in the Yocto Project Reference Manual.
  77. </div><p>
  78. </p><pre class="literallayout">
  79. $ sudo apt-get install gawk wget git-core diffstat unzip texinfo gcc-multilib \
  80. build-essential chrpath socat cpio python python3 python3-pip python3-pexpect \
  81. xz-utils debianutils iputils-ping libsdl1.2-dev xterm
  82. </pre><p>
  83. </p></div><div class="section" title="4. Use Git to Clone Poky"><div xmlns="" class="titlepage"><div><div><h2 xmlns="http://www.w3.org/1999/xhtml" class="title" style="clear: both"><a id="brief-use-git-to-clone-poky"></a>4. Use Git to Clone Poky<span class="permalink"><a alt="Permalink" title="Permalink" href="#brief-use-git-to-clone-poky">¶</a></span></h2></div></div></div><p>
  84. Once you complete the setup instructions for your machine,
  85. you need to get a copy of the Poky repository on your build
  86. system.
  87. Use the following commands to clone the Poky
  88. repository and then checkout the yocto-2.5 release:
  89. </p><pre class="literallayout">
  90. $ git clone git://git.yoctoproject.org/poky
  91. Cloning into 'poky'...
  92. remote: Counting objects: 361782, done.
  93. remote: Compressing objects: 100% (87100/87100), done.
  94. remote: Total 361782 (delta 268619), reused 361439 (delta 268277)
  95. Receiving objects: 100% (361782/361782), 131.94 MiB | 6.88 MiB/s, done.
  96. Resolving deltas: 100% (268619/268619), done.
  97. Checking connectivity... done.
  98. $ git checkout tags/yocto-2.5 -b my-yocto-2.5
  99. </pre><p>
  100. The previous Git checkout command creates a local branch
  101. named my-yocto-2.5. The files available to you in that
  102. branch exactly match the repository's files in the
  103. "sumo" development branch at the time of the
  104. Yocto Project 2.5 release.
  105. </p><p>
  106. For more options and information about accessing Yocto
  107. Project related repositories, see the
  108. "<a class="ulink" href="http://www.yoctoproject.org/docs/2.5/dev-manual/dev-manual.html#working-with-yocto-project-source-files" target="_top">Working With Yocto Project Source Files</a>"
  109. section in the Yocto Project Development Tasks Manual.
  110. </p></div><div class="section" title="5. Building Your Image"><div xmlns="" class="titlepage"><div><div><h2 xmlns="http://www.w3.org/1999/xhtml" class="title" style="clear: both"><a id="brief-building-your-image"></a>5. Building Your Image<span class="permalink"><a alt="Permalink" title="Permalink" href="#brief-building-your-image">¶</a></span></h2></div></div></div><p>
  111. Use the following steps to build your image.
  112. The OpenEmbedded build system creates an entire Linux
  113. distribution, including the toolchain, from source.
  114. </p><div class="note" title="Note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
  115. If you are working behind a firewall and your build
  116. host is not set up for proxies, you could encounter
  117. problems with the build process when fetching source
  118. code (e.g. fetcher failures or Git failures).
  119. </p></li><li class="listitem"><p>
  120. If you do not know your proxy settings, consult your
  121. local network infrastructure resources and get that
  122. information.
  123. A good starting point could also be to check your
  124. web browser settings.
  125. Finally, you can find more information on the
  126. "<a class="ulink" href="https://wiki.yoctoproject.org/wiki/Working_Behind_a_Network_Proxy" target="_top">Working Behind a Network Proxy</a>"
  127. wiki page.
  128. </p></li></ul></div></div><p>
  129. </p><p>
  130. </p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p>
  131. <span class="emphasis"><em>Initialize the Build Environment:</em></span>
  132. Run the
  133. <a class="ulink" href="http://www.yoctoproject.org/docs/2.5/ref-manual/ref-manual.html#structure-core-script" target="_top"><code class="filename">oe-init-build-env</code></a>
  134. environment setup script to define the OpenEmbedded
  135. build environment on your build host.
  136. </p><pre class="literallayout">
  137. $ source oe-init-build-env
  138. </pre><p>
  139. Among other things, the script creates the
  140. <a class="ulink" href="http://www.yoctoproject.org/docs/2.5/ref-manual/ref-manual.html#build-directory" target="_top">Build Directory</a>,
  141. which is <code class="filename">build</code> in this case
  142. and is located in the
  143. <a class="ulink" href="http://www.yoctoproject.org/docs/2.5/ref-manual/ref-manual.html#source-directory" target="_top">Source Directory</a>.
  144. After the script runs, your current working directory
  145. is set to the Build Directory.
  146. Later, when the build completes, the Build Directory
  147. contains all the files created during the build.
  148. </p></li><li class="listitem"><p>
  149. <span class="emphasis"><em>Examine Your Local Configuration File:</em></span>
  150. When you set up the build environment, a local
  151. configuration file named
  152. <code class="filename">local.conf</code> becomes available in
  153. a <code class="filename">conf</code> subdirectory of the
  154. Build Directory.
  155. For this quick start, the defaults are set to build
  156. for a <code class="filename">qemux86</code> target, which is
  157. suitable for emulation.
  158. The package manager used is set to the RPM package
  159. manager.
  160. </p></li><li class="listitem"><p>
  161. <span class="emphasis"><em>Start the Build:</em></span>
  162. Continue with the following command to build an OS image
  163. for the target, which is
  164. <code class="filename">core-image-sato</code> in this example:
  165. </p><pre class="literallayout">
  166. $ bitbake core-image-sato
  167. </pre><p>
  168. For information on using the
  169. <code class="filename">bitbake</code> command, see the
  170. "<a class="ulink" href="http://www.yoctoproject.org/docs/2.5/overview-manual/overview-manual.html#usingpoky-components-bitbake" target="_top">BitBake</a>"
  171. section in the Yocto Project Overview Manual, or
  172. see the
  173. "<a class="ulink" href="http://www.yoctoproject.org/docs/2.5/bitbake-user-manual/bitbake-user-manual.html#bitbake-user-manual-command" target="_top">BitBake Command</a>"
  174. section in the BitBake User Manual.
  175. </p></li><li class="listitem"><p>
  176. <span class="emphasis"><em>Simulate Your Image Using QEMU:</em></span>
  177. Once this particular image is built, you can start
  178. QEMU, which is a Quick EMUlator that ships with
  179. the Yocto Project:
  180. </p><pre class="literallayout">
  181. $ runqemu qemux86
  182. </pre><p>
  183. If you want to learn more about running QEMU, see the
  184. "<a class="ulink" href="http://www.yoctoproject.org/docs/2.5/dev-manual/dev-manual.html#dev-manual-qemu" target="_top">Using the Quick EMUlator (QEMU)</a>"
  185. chapter in the Yocto Project Development Tasks Manual.
  186. </p></li><li class="listitem"><p>
  187. <span class="emphasis"><em>Exit QEMU:</em></span>
  188. Exit QEMU by either clicking on the shutdown icon or by
  189. typing <code class="filename">Ctrl-C</code> in the QEMU
  190. transcript window from which you evoked QEMU.
  191. </p></li></ol></div><p>
  192. </p></div><div class="section" title="6. Where To Go Next"><div xmlns="" class="titlepage"><div><div><h2 xmlns="http://www.w3.org/1999/xhtml" class="title" style="clear: both"><a id="brief-where-to-go-next"></a>6. Where To Go Next<span class="permalink"><a alt="Permalink" title="Permalink" href="#brief-where-to-go-next">¶</a></span></h2></div></div></div><p>
  193. Now that you have experienced using the Yocto Project, you might
  194. be asking yourself "What now?"
  195. The Yocto Project has many sources of information including
  196. the website, wiki pages, and user manuals:
  197. </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
  198. <span class="emphasis"><em>Website:</em></span>
  199. The
  200. <a class="ulink" href="http://www.yoctoproject.org" target="_top">Yocto Project Website</a>
  201. provides background information, the latest builds,
  202. breaking news, full development documentation, and
  203. access to a rich Yocto Project Development Community
  204. into which you can tap.
  205. </p></li><li class="listitem"><p>
  206. <span class="emphasis"><em>Developer Screencast:</em></span>
  207. The
  208. <a class="ulink" href="http://vimeo.com/36450321" target="_top">Getting Started with the Yocto Project - New Developer Screencast Tutorial</a>
  209. provides a 30-minute video created for users unfamiliar
  210. with the Yocto Project but familiar with Linux build
  211. hosts.
  212. While this screencast is somewhat dated, the
  213. introductory and fundamental concepts are useful for
  214. the beginner.
  215. </p></li><li class="listitem"><p>
  216. <span class="emphasis"><em>Yocto Project Wiki:</em></span>
  217. The
  218. <a class="ulink" href="https://wiki.yoctoproject.org" target="_top">Yocto Project Wiki</a>
  219. provides additional information on where to go next
  220. when ramping up with the Yocto Project, release
  221. information, project planning, and QA information.
  222. </p></li><li class="listitem"><p>
  223. <span class="emphasis"><em>Yocto Project Mailing Lists:</em></span>
  224. Related mailing lists provide a forum for discussion,
  225. patch submission and announcements.
  226. Several mailing lists exist and are grouped according
  227. to areas of concern.
  228. See the
  229. "<a class="ulink" href="http://www.yoctoproject.org/docs/2.5/ref-manual/ref-manual.html#resources-mailinglist" target="_top">Mailing lists</a>"
  230. section in the Yocto Project Reference Manual for a
  231. complete list of Yocto Project mailing lists.
  232. </p></li><li class="listitem"><p>
  233. <span class="emphasis"><em>Comprehensive List of Links and Other Documentation:</em></span>
  234. The
  235. "<a class="ulink" href="http://www.yoctoproject.org/docs/2.5/ref-manual/ref-manual.html#resources-links-and-related-documentation" target="_top">Links and Related Documentation</a>"
  236. section in the Yocto Project Reference Manual provides a
  237. comprehensive list of all related links and other
  238. user documentation.
  239. </p></li></ul></div><p>
  240. </p></div></div></body></html>