| Patrick Williams | c124f4f | 2015-09-15 14:41:29 -0500 | [diff] [blame] | 1 | <!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN" | 
 | 2 | "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" | 
 | 3 | [<!ENTITY % poky SYSTEM "../poky.ent"> %poky; ] > | 
 | 4 |  | 
 | 5 | <chapter id='dev-manual-start'> | 
 | 6 |  | 
 | 7 | <title>Getting Started with the Yocto Project</title> | 
 | 8 |  | 
 | 9 | <para> | 
 | 10 |     This chapter introduces the Yocto Project and gives you an idea of what you need to get started. | 
 | 11 |     You can find enough information to set up your development host and build or use images for | 
 | 12 |     hardware supported by the Yocto Project by reading the | 
 | 13 |     <ulink url='&YOCTO_DOCS_QS_URL;'>Yocto Project Quick Start</ulink>. | 
 | 14 | </para> | 
 | 15 |  | 
 | 16 | <para> | 
 | 17 |     The remainder of this chapter summarizes what is in the Yocto Project Quick Start and provides | 
 | 18 |     some higher-level concepts you might want to consider. | 
 | 19 | </para> | 
 | 20 |  | 
 | 21 | <section id='introducing-the-yocto-project'> | 
 | 22 |     <title>Introducing the Yocto Project</title> | 
 | 23 |  | 
 | 24 |     <para> | 
 | 25 |         The Yocto Project is an open-source collaboration project focused on embedded Linux development. | 
 | 26 |         The project currently provides a build system that is | 
 | 27 |         referred to as the | 
 | 28 |         <link linkend='build-system-term'>OpenEmbedded build system</link> | 
 | 29 |         in the Yocto Project documentation. | 
 | 30 |         The Yocto Project provides various ancillary tools for the embedded developer | 
 | 31 |         and also features the Sato reference User Interface, which is optimized for | 
 | 32 |         stylus-driven, low-resolution screens. | 
 | 33 |     </para> | 
 | 34 |  | 
 | 35 |     <para> | 
 | 36 |         You can use the OpenEmbedded build system, which uses | 
 | 37 |         <link linkend='bitbake-term'>BitBake</link>, to develop complete Linux | 
 | 38 |         images and associated user-space applications for architectures based | 
 | 39 |         on ARM, MIPS, PowerPC, x86 and x86-64. | 
 | 40 |         <note> | 
 | 41 |             By default, using the Yocto Project creates a Poky distribution. | 
 | 42 |             However, you can create your own distribution by providing key | 
 | 43 |             <link linkend='metadata'>Metadata</link>. | 
 | 44 |             See the "<link linkend='creating-your-own-distribution'>Creating Your Own Distribution</link>" | 
 | 45 |             section for more information. | 
 | 46 |         </note> | 
 | 47 |         While the Yocto Project does not provide a strict testing framework, | 
 | 48 |         it does provide or generate for you artifacts that let you perform target-level and | 
 | 49 |         emulated testing and debugging. | 
 | 50 |         Additionally, if you are an <trademark class='trade'>Eclipse</trademark> | 
 | 51 |         IDE user, you can install an Eclipse Yocto Plug-in to allow you to | 
 | 52 |         develop within that familiar environment. | 
 | 53 |     </para> | 
 | 54 | </section> | 
 | 55 |  | 
 | 56 | <section id='getting-setup'> | 
 | 57 |     <title>Getting Set Up</title> | 
 | 58 |  | 
 | 59 |     <para> | 
 | 60 |         Here is what you need to use the Yocto Project: | 
 | 61 |         <itemizedlist> | 
 | 62 |             <listitem><para><emphasis>Host System:</emphasis>  You should have a reasonably current | 
 | 63 |                 Linux-based host system. | 
 | 64 |                 You will have the best results with a recent release of Fedora, | 
 | 65 |                 openSUSE, Debian, Ubuntu, or CentOS as these releases are frequently tested against the Yocto Project | 
 | 66 |                 and officially supported. | 
 | 67 |                 For a list of the distributions under validation and their status, see the | 
 | 68 |                 "<ulink url='&YOCTO_DOCS_REF_URL;#detailed-supported-distros'>Supported Linux Distributions</ulink>" section | 
 | 69 |                 in the Yocto Project Reference Manual and the wiki page at | 
 | 70 |                 <ulink url='&YOCTO_WIKI_URL;/wiki/Distribution_Support'>Distribution Support</ulink>.</para> | 
 | 71 |                 <para> | 
 | 72 |                 You should also have about 50 Gbytes of free disk space for building images. | 
 | 73 |                 </para></listitem> | 
 | 74 |             <listitem><para><emphasis>Packages:</emphasis>  The OpenEmbedded build system | 
 | 75 |                 requires that certain packages exist on your development system (e.g. Python 2.7). | 
 | 76 |                 See "<ulink url='&YOCTO_DOCS_QS_URL;#packages'>The Build Host Packages</ulink>" | 
 | 77 |                 section in the Yocto Project Quick Start and the | 
 | 78 |                 "<ulink url='&YOCTO_DOCS_REF_URL;#required-packages-for-the-host-development-system'>Required Packages for the Host Development System</ulink>" | 
 | 79 |                 section in the Yocto Project Reference Manual for the exact | 
 | 80 |                 package requirements and the installation commands to install | 
 | 81 |                 them for the supported distributions. | 
 | 82 |                 </para></listitem> | 
 | 83 |             <listitem id='local-yp-release'><para><emphasis>Yocto Project Release:</emphasis> | 
 | 84 |                 You need a release of the Yocto Project locally installed on | 
 | 85 |                 your development system. | 
 | 86 |                 The documentation refers to this set of locally installed files | 
 | 87 |                 as the <link linkend='source-directory'>Source Directory</link>. | 
 | 88 |                 You create your Source Directory by using | 
 | 89 |                 <link linkend='git'>Git</link> to clone a local copy | 
 | 90 |                 of the upstream <filename>poky</filename> repository, | 
 | 91 |                 or by downloading and unpacking a tarball of an official | 
 | 92 |                 Yocto Project release. | 
 | 93 |                 The preferred method is to create a clone of the repository. | 
 | 94 |                 </para> | 
 | 95 |                 <para>Working from a copy of the upstream repository allows you | 
 | 96 |                 to contribute back into the Yocto Project or simply work with | 
 | 97 |                 the latest software on a development branch. | 
 | 98 |                 Because Git maintains and creates an upstream repository with | 
 | 99 |                 a complete history of changes and you are working with a local | 
 | 100 |                 clone of that repository, you have access to all the Yocto | 
 | 101 |                 Project development branches and tag names used in the upstream | 
 | 102 |                 repository.</para> | 
 | 103 |                 <note>You can view the Yocto Project Source Repositories at | 
 | 104 |                     <ulink url='&YOCTO_GIT_URL;/cgit.cgi'></ulink> | 
 | 105 |                 </note> | 
 | 106 |                 <para>The following transcript shows how to clone the | 
 | 107 |                 <filename>poky</filename> Git repository into the current | 
 | 108 |                 working directory. | 
 | 109 |                 The command creates the local repository in a directory | 
 | 110 |                 named <filename>poky</filename>. | 
 | 111 |                 For information on Git used within the Yocto Project, see | 
 | 112 |                 the "<link linkend='git'>Git</link>" section. | 
 | 113 |                 <literallayout class='monospaced'> | 
 | 114 |      $ git clone git://git.yoctoproject.org/poky | 
 | 115 |      Cloning into 'poky'... | 
 | 116 |      remote: Counting objects: 226790, done. | 
 | 117 |      remote: Compressing objects: 100% (57465/57465), done. | 
 | 118 |      remote: Total 226790 (delta 165212), reused 225887 (delta 164327) | 
 | 119 |      Receiving objects: 100% (226790/226790), 100.98 MiB | 263 KiB/s, done. | 
 | 120 |      Resolving deltas: 100% (165212/165212), done. | 
 | 121 |                 </literallayout></para> | 
 | 122 |                 <para>For another example of how to set up your own local Git | 
 | 123 |                 repositories, see this | 
 | 124 |                 <ulink url='&YOCTO_WIKI_URL;/wiki/Transcript:_from_git_checkout_to_meta-intel_BSP'> | 
 | 125 |                 wiki page</ulink>, which describes how to create local | 
 | 126 |                 Git repositories for both | 
 | 127 |                 <filename>poky</filename> and <filename>meta-intel</filename>. | 
 | 128 |                 </para> | 
 | 129 |                 <para> | 
 | 130 |                 You can also get the Yocto Project Files by downloading | 
 | 131 |                 Yocto Project releases from the | 
 | 132 |                 <ulink url="&YOCTO_HOME_URL;">Yocto Project website</ulink>. | 
 | 133 |                 From the website, you just click "Downloads" in the navigation | 
 | 134 |                 pane to the left to display all Yocto Project downloads. | 
 | 135 |                 Current and archived releases are available for download. | 
 | 136 |                 Nightly and developmental builds are also maintained at | 
 | 137 |                 <ulink url="&YOCTO_AB_NIGHTLY_URL;"></ulink>. | 
 | 138 |                 One final site you can visit for information on Yocto Project | 
 | 139 |                 releases is the | 
 | 140 |                 <ulink url='&YOCTO_WIKI_URL;/wiki/Releases'>Releases</ulink> | 
 | 141 |                 wiki. | 
 | 142 |                 </para></listitem> | 
 | 143 |             <listitem id='local-kernel-files'><para><emphasis>Yocto Project Kernel:</emphasis> | 
 | 144 |                 If you are going to be making modifications to a supported Yocto Project kernel, you | 
 | 145 |                 need to establish local copies of the source. | 
 | 146 |                 You can find Git repositories of supported Yocto Project kernels organized under | 
 | 147 |                 "Yocto Linux Kernel" in the Yocto Project Source Repositories at | 
 | 148 |                 <ulink url='&YOCTO_GIT_URL;/cgit.cgi'></ulink>.</para> | 
 | 149 |                 <para>This setup can involve creating a bare clone of the Yocto Project kernel and then | 
 | 150 |                 copying that cloned repository. | 
 | 151 |                 You can create the bare clone and the copy of the bare clone anywhere you like. | 
 | 152 |                 For simplicity, it is recommended that you create these structures outside of the | 
 | 153 |                 Source Directory, which is usually named <filename>poky</filename>.</para> | 
 | 154 |                 <para>As an example, the following transcript shows how to create the bare clone | 
 | 155 |                 of the <filename>linux-yocto-3.19</filename> kernel and then create a copy of | 
 | 156 |                 that clone. | 
 | 157 |                 <note>When you have a local Yocto Project kernel Git repository, you can | 
 | 158 |                 reference that repository rather than the upstream Git repository as | 
 | 159 |                 part of the <filename>clone</filename> command. | 
 | 160 |                 Doing so can speed up the process.</note></para> | 
 | 161 |                 <para>In the following example, the bare clone is named | 
 | 162 |                 <filename>linux-yocto-3.19.git</filename>, while the | 
 | 163 |                 copy is named <filename>my-linux-yocto-3.19-work</filename>: | 
 | 164 |                 <literallayout class='monospaced'> | 
 | 165 |      $ git clone --bare git://git.yoctoproject.org/linux-yocto-3.19 linux-yocto-3.19.git | 
 | 166 |      Cloning into bare repository 'linux-yocto-3.19.git'... | 
 | 167 |      remote: Counting objects: 3983256, done. | 
 | 168 |      remote: Compressing objects: 100% (605006/605006), done. | 
 | 169 |      remote: Total 3983256 (delta 3352832), reused 3974503 (delta 3344079) | 
 | 170 |      Receiving objects: 100% (3983256/3983256), 843.66 MiB | 1.07 MiB/s, done. | 
 | 171 |      Resolving deltas: 100% (3352832/3352832), done. | 
 | 172 |      Checking connectivity... done. | 
 | 173 |                 </literallayout></para> | 
 | 174 |                 <para>Now create a clone of the bare clone just created: | 
 | 175 |                 <literallayout class='monospaced'> | 
 | 176 |      $ git clone linux-yocto-3.19.git my-linux-yocto-3.19-work | 
 | 177 |      Cloning into 'my-linux-yocto-3.19-work'... | 
 | 178 |      done. | 
 | 179 |      Checking out files: 100% (48440/48440), done. | 
 | 180 |                 </literallayout></para></listitem> | 
 | 181 |             <listitem id='meta-yocto-kernel-extras-repo'><para><emphasis> | 
 | 182 |                 The <filename>meta-yocto-kernel-extras</filename> Git Repository</emphasis>: | 
 | 183 |                 The <filename>meta-yocto-kernel-extras</filename> Git repository contains Metadata needed | 
 | 184 |                 only if you are modifying and building the kernel image. | 
 | 185 |                 In particular, it contains the kernel BitBake append (<filename>.bbappend</filename>) | 
 | 186 |                 files that you | 
 | 187 |                 edit to point to your locally modified kernel source files and to build the kernel | 
 | 188 |                 image. | 
 | 189 |                 Pointing to these local files is much more efficient than requiring a download of the | 
 | 190 |                 kernel's source files from upstream each time you make changes to the kernel.</para> | 
 | 191 |                 <para>You can find the <filename>meta-yocto-kernel-extras</filename> Git Repository in the | 
 | 192 |                 "Yocto Metadata Layers" area of the Yocto Project Source Repositories at | 
 | 193 |                 <ulink url='&YOCTO_GIT_URL;/cgit.cgi'></ulink>. | 
 | 194 |                 It is good practice to create this Git repository inside the Source Directory.</para> | 
 | 195 |                 <para>Following is an example that creates the <filename>meta-yocto-kernel-extras</filename> Git | 
 | 196 |                 repository inside the Source Directory, which is named <filename>poky</filename> | 
 | 197 |                 in this case: | 
 | 198 |                 <literallayout class='monospaced'> | 
 | 199 |      $ cd ~/poky | 
 | 200 |      $ git clone git://git.yoctoproject.org/meta-yocto-kernel-extras meta-yocto-kernel-extras | 
 | 201 |      Cloning into 'meta-yocto-kernel-extras'... | 
 | 202 |      remote: Counting objects: 727, done. | 
 | 203 |      remote: Compressing objects: 100% (452/452), done. | 
 | 204 |      remote: Total 727 (delta 260), reused 719 (delta 252) | 
 | 205 |      Receiving objects: 100% (727/727), 536.36 KiB | 240 KiB/s, done. | 
 | 206 |      Resolving deltas: 100% (260/260), done. | 
 | 207 |                </literallayout></para></listitem> | 
 | 208 |            <listitem><para id='supported-board-support-packages-(bsps)'><emphasis>Supported Board Support Packages (BSPs):</emphasis> | 
 | 209 |                 The Yocto Project supports many BSPs, which are maintained in | 
 | 210 |                 their own layers or in layers designed to contain several | 
 | 211 |                 BSPs. | 
 | 212 |                 To get an idea of machine support through BSP layers, you can | 
 | 213 |                 look at the | 
 | 214 |                 <ulink url='&YOCTO_RELEASE_DL_URL;/machines'>index of machines</ulink> | 
 | 215 |                 for the release.</para> | 
 | 216 |  | 
 | 217 |                 <para>The Yocto Project uses the following BSP layer naming | 
 | 218 |                 scheme: | 
 | 219 |                 <literallayout class='monospaced'> | 
 | 220 |      meta-<replaceable>bsp_name</replaceable> | 
 | 221 |                 </literallayout> | 
 | 222 |                 where <replaceable>bsp_name</replaceable> is the recognized | 
 | 223 |                 BSP name. | 
| Patrick Williams | d8c66bc | 2016-06-20 12:57:21 -0500 | [diff] [blame] | 224 |                 Here is an example: | 
| Patrick Williams | c124f4f | 2015-09-15 14:41:29 -0500 | [diff] [blame] | 225 |                 <literallayout class='monospaced'> | 
| Patrick Williams | c124f4f | 2015-09-15 14:41:29 -0500 | [diff] [blame] | 226 |      meta-raspberrypi | 
 | 227 |                 </literallayout> | 
 | 228 |                 See the | 
 | 229 |                 "<ulink url='&YOCTO_DOCS_BSP_URL;#bsp-layers'>BSP Layers</ulink>" | 
 | 230 |                 section in the Yocto Project Board Support Package (BSP) | 
 | 231 |                 Developer's Guide for more information on BSP Layers.</para> | 
 | 232 |  | 
 | 233 |                 <para>A useful Git repository released with the Yocto | 
 | 234 |                 Project is <filename>meta-intel</filename>, which is a | 
 | 235 |                 parent layer that contains many supported | 
 | 236 |                 <ulink url='&YOCTO_DOCS_BSP_URL;#bsp-layers'>BSP Layers</ulink>. | 
 | 237 |                 You can locate the <filename>meta-intel</filename> Git | 
 | 238 |                 repository in the "Yocto Metadata Layers" area of the Yocto | 
 | 239 |                 Project Source Repositories at | 
 | 240 |                 <ulink url='&YOCTO_GIT_URL;/cgit.cgi'></ulink>.</para> | 
 | 241 |  | 
 | 242 |                 <para>Using | 
 | 243 |                 <link linkend='git'>Git</link> to create a local clone of the | 
 | 244 |                 upstream repository can be helpful if you are working with | 
 | 245 |                 BSPs. | 
 | 246 |                 Typically, you set up the <filename>meta-intel</filename> | 
 | 247 |                 Git repository inside the Source Directory. | 
 | 248 |                 For example, the following transcript shows the steps to clone | 
 | 249 |                 <filename>meta-intel</filename>. | 
 | 250 |                 <note> | 
 | 251 |                     Be sure to work in the <filename>meta-intel</filename> | 
 | 252 |                     branch that matches your | 
 | 253 |                     <link linkend='source-directory'>Source Directory</link> | 
 | 254 |                     (i.e. <filename>poky</filename>) branch. | 
 | 255 |                     For example, if you have checked out the "master" branch | 
 | 256 |                     of <filename>poky</filename> and you are going to use | 
 | 257 |                     <filename>meta-intel</filename>, be sure to checkout the | 
 | 258 |                     "master" branch of <filename>meta-intel</filename>. | 
 | 259 |                 </note> | 
 | 260 |                 <literallayout class='monospaced'> | 
 | 261 |      $ cd ~/poky | 
 | 262 |      $ git clone git://git.yoctoproject.org/meta-intel.git | 
 | 263 |      Cloning into 'meta-intel'... | 
| Patrick Williams | d8c66bc | 2016-06-20 12:57:21 -0500 | [diff] [blame] | 264 |      remote: Counting objects: 11917, done. | 
 | 265 |      remote: Compressing objects: 100% (3842/3842), done. | 
 | 266 |      remote: Total 11917 (delta 6840), reused 11699 (delta 6622) | 
 | 267 |      Receiving objects: 100% (11917/11917), 2.92 MiB | 2.88 MiB/s, done. | 
 | 268 |      Resolving deltas: 100% (6840/6840), done. | 
 | 269 |      Checking connectivity... done. | 
| Patrick Williams | c124f4f | 2015-09-15 14:41:29 -0500 | [diff] [blame] | 270 |                 </literallayout></para> | 
 | 271 |  | 
 | 272 |                 <para>The same | 
 | 273 |                 <ulink url='&YOCTO_WIKI_URL;/wiki/Transcript:_from_git_checkout_to_meta-intel_BSP'>wiki page</ulink> | 
 | 274 |                 referenced earlier covers how to set up the | 
 | 275 |                 <filename>meta-intel</filename> Git repository. | 
 | 276 |                 </para></listitem> | 
 | 277 |             <listitem><para><emphasis>Eclipse Yocto Plug-in:</emphasis>  If you are developing | 
 | 278 |                 applications using the Eclipse Integrated Development Environment (IDE), | 
 | 279 |                 you will need this plug-in. | 
 | 280 |                 See the | 
| Patrick Williams | d8c66bc | 2016-06-20 12:57:21 -0500 | [diff] [blame] | 281 |                 "<ulink url='&YOCTO_DOCS_SDK_URL;#setting-up-the-eclipse-ide'>Setting up the Eclipse IDE</ulink>" | 
 | 282 |                 section in the Yocto Project Software Development Kit (SDK) | 
 | 283 |                 Developer's Guide for more information.</para></listitem> | 
| Patrick Williams | c124f4f | 2015-09-15 14:41:29 -0500 | [diff] [blame] | 284 |         </itemizedlist> | 
 | 285 |     </para> | 
 | 286 | </section> | 
 | 287 |  | 
 | 288 | <section id='building-images'> | 
 | 289 |     <title>Building Images</title> | 
 | 290 |  | 
 | 291 |     <para> | 
 | 292 |         The build process creates an entire Linux distribution, including the toolchain, from source. | 
 | 293 |         For more information on this topic, see the | 
 | 294 |         "<ulink url='&YOCTO_DOCS_QS_URL;#qs-building-images'>Building Images</ulink>" | 
 | 295 |         section in the Yocto Project Quick Start. | 
 | 296 |     </para> | 
 | 297 |  | 
 | 298 |     <para> | 
 | 299 |         The build process is as follows: | 
 | 300 |         <orderedlist> | 
 | 301 |             <listitem><para>Make sure you have set up the Source Directory described in the | 
 | 302 |                 previous section.</para></listitem> | 
 | 303 |             <listitem><para>Initialize the build environment by sourcing a build | 
 | 304 |                 environment script (i.e. | 
 | 305 |                 <ulink url='&YOCTO_DOCS_REF_URL;#structure-core-script'><filename>&OE_INIT_FILE;</filename></ulink> | 
 | 306 |                 or | 
 | 307 |                 <ulink url='&YOCTO_DOCS_REF_URL;#structure-memres-core-script'><filename>oe-init-build-env-memres</filename></ulink>). | 
 | 308 |                 </para></listitem> | 
 | 309 |             <listitem><para>Optionally ensure the <filename>conf/local.conf</filename> configuration file, | 
 | 310 |                 which is found in the | 
 | 311 |                 <link linkend='build-directory'>Build Directory</link>, | 
 | 312 |                 is set up how you want it. | 
 | 313 |                 This file defines many aspects of the build environment including | 
 | 314 |                 the target machine architecture through the | 
 | 315 |                 <filename><ulink url='&YOCTO_DOCS_REF_URL;#var-MACHINE'>MACHINE</ulink></filename> variable, | 
 | 316 |                 the packaging format used during the build | 
 | 317 |                 (<ulink url='&YOCTO_DOCS_REF_URL;#var-PACKAGE_CLASSES'><filename>PACKAGE_CLASSES</filename></ulink>), | 
 | 318 |                 and a centralized tarball download directory through the | 
 | 319 |                 <filename><ulink url='&YOCTO_DOCS_REF_URL;#var-DL_DIR'>DL_DIR</ulink></filename> variable.</para></listitem> | 
 | 320 |             <listitem><para> | 
 | 321 |                 Build the image using the <filename>bitbake</filename> command. | 
 | 322 |                 If you want information on BitBake, see the | 
 | 323 |                 <ulink url='&YOCTO_DOCS_BB_URL;'>BitBake User Manual</ulink>. | 
 | 324 |                 </para></listitem> | 
 | 325 |             <listitem><para>Run the image either on the actual hardware or using the QEMU | 
 | 326 |                 emulator.</para></listitem> | 
 | 327 |         </orderedlist> | 
 | 328 |     </para> | 
 | 329 | </section> | 
 | 330 |  | 
 | 331 | <section id='using-pre-built-binaries-and-qemu'> | 
 | 332 |     <title>Using Pre-Built Binaries and QEMU</title> | 
 | 333 |  | 
 | 334 |     <para> | 
 | 335 |         Another option you have to get started is to use pre-built binaries. | 
 | 336 |         The Yocto Project provides many types of binaries with each release. | 
 | 337 |         See the "<ulink url='&YOCTO_DOCS_REF_URL;#ref-images'>Images</ulink>" | 
 | 338 |         chapter in the Yocto Project Reference Manual | 
 | 339 |         for descriptions of the types of binaries that ship with a Yocto Project | 
 | 340 |         release. | 
 | 341 |     </para> | 
 | 342 |  | 
 | 343 |     <para> | 
| Patrick Williams | d8c66bc | 2016-06-20 12:57:21 -0500 | [diff] [blame] | 344 |         Using a pre-built binary is ideal for developing software | 
 | 345 |         applications to run on your target hardware. | 
 | 346 |         To do this, you need to be able to access the appropriate | 
 | 347 |         cross-toolchain tarball for the architecture on which you are | 
 | 348 |         developing. | 
 | 349 |         If you are using an SDK type image, the image ships with the complete | 
 | 350 |         toolchain native to the architecture (i.e. a toolchain designed to | 
 | 351 |         run on the | 
 | 352 |         <ulink url='&YOCTO_DOCS_REF_URL;#var-SDKMACHINE'><filename>SDKMACHINE</filename></ulink>). | 
 | 353 |         If you are not using an SDK type image, you need to separately download | 
 | 354 |         and install the stand-alone Yocto Project cross-toolchain tarball. | 
| Patrick Williams | c124f4f | 2015-09-15 14:41:29 -0500 | [diff] [blame] | 355 |     </para> | 
 | 356 |  | 
 | 357 |     <para> | 
 | 358 |         Regardless of the type of image you are using, you need to download the pre-built kernel | 
 | 359 |         that you will boot in the QEMU emulator and then download and extract the target root | 
 | 360 |         filesystem for your target machine’s architecture. | 
 | 361 |         You can get architecture-specific binaries and file systems from | 
 | 362 |         <ulink url='&YOCTO_MACHINES_DL_URL;'>machines</ulink>. | 
 | 363 |         You can get installation scripts for stand-alone toolchains from | 
 | 364 |         <ulink url='&YOCTO_TOOLCHAIN_DL_URL;'>toolchains</ulink>. | 
 | 365 |         Once you have all your files, you set up the environment to emulate the hardware | 
 | 366 |         by sourcing an environment setup script. | 
 | 367 |         Finally, you start the QEMU emulator. | 
 | 368 |         You can find details on all these steps in the | 
| Patrick Williams | d8c66bc | 2016-06-20 12:57:21 -0500 | [diff] [blame] | 369 |         <ulink url='&YOCTO_DOCS_SDK_URL;#sdk-manual'>Yocto Project Software Development Kit (SDK) Developer's Guide</ulink>. | 
| Patrick Williams | c124f4f | 2015-09-15 14:41:29 -0500 | [diff] [blame] | 370 |         You can learn more about using QEMU with the Yocto Project in the | 
 | 371 |         "<link linkend='dev-manual-qemu'>Using the Quick EMUlator (QEMU)</link>" | 
 | 372 |         section. | 
 | 373 |     </para> | 
 | 374 |  | 
 | 375 |     <para> | 
 | 376 |         Using QEMU to emulate your hardware can result in speed issues | 
 | 377 |         depending on the target and host architecture mix. | 
 | 378 |         For example, using the <filename>qemux86</filename> image in the emulator | 
 | 379 |         on an Intel-based 32-bit (x86) host machine is fast because the target and | 
 | 380 |         host architectures match. | 
 | 381 |         On the other hand, using the <filename>qemuarm</filename> image on the same Intel-based | 
 | 382 |         host can be slower. | 
 | 383 |         But, you still achieve faithful emulation of ARM-specific issues. | 
 | 384 |     </para> | 
 | 385 |  | 
 | 386 |     <para> | 
 | 387 |         To speed things up, the QEMU images support using <filename>distcc</filename> | 
 | 388 |         to call a cross-compiler outside the emulated system. | 
 | 389 |         If you used <filename>runqemu</filename> to start QEMU, and the | 
 | 390 |         <filename>distccd</filename> application is present on the host system, any | 
 | 391 |         BitBake cross-compiling toolchain available from the build system is automatically | 
 | 392 |         used from within QEMU simply by calling <filename>distcc</filename>. | 
 | 393 |         You can accomplish this by defining the cross-compiler variable | 
 | 394 |         (e.g. <filename>export CC="distcc"</filename>). | 
 | 395 |         Alternatively, if you are using a suitable SDK image or the appropriate | 
 | 396 |         stand-alone toolchain is present, | 
 | 397 |         the toolchain is also automatically used. | 
 | 398 |     </para> | 
 | 399 |  | 
 | 400 |     <note> | 
 | 401 |         Several mechanisms exist that let you connect to the system running on the | 
 | 402 |         QEMU emulator: | 
 | 403 |         <itemizedlist> | 
 | 404 |             <listitem><para>QEMU provides a framebuffer interface that makes standard | 
 | 405 |                 consoles available.</para></listitem> | 
 | 406 |             <listitem><para>Generally, headless embedded devices have a serial port. | 
 | 407 |                 If so, you can configure the operating system of the running image | 
 | 408 |                 to use that port to run a console. | 
 | 409 |                 The connection uses standard IP networking.</para></listitem> | 
 | 410 |             <listitem><para> | 
 | 411 |                 SSH servers exist in some QEMU images. | 
 | 412 |                 The <filename>core-image-sato</filename> QEMU image has a | 
 | 413 |                 Dropbear secure shell (SSH) server that runs with the root | 
 | 414 |                 password disabled. | 
 | 415 |                 The <filename>core-image-full-cmdline</filename> and | 
 | 416 |                 <filename>core-image-lsb</filename> QEMU images | 
 | 417 |                 have OpenSSH instead of Dropbear. | 
 | 418 |                 Including these SSH servers allow you to use standard | 
 | 419 |                 <filename>ssh</filename> and <filename>scp</filename> commands. | 
 | 420 |                 The <filename>core-image-minimal</filename> QEMU image, | 
 | 421 |                 however, contains no SSH server. | 
 | 422 |                 </para></listitem> | 
 | 423 |             <listitem><para>You can use a provided, user-space NFS server to boot the QEMU session | 
 | 424 |                 using a local copy of the root filesystem on the host. | 
 | 425 |                 In order to make this connection, you must extract a root filesystem tarball by using the | 
 | 426 |                 <filename>runqemu-extract-sdk</filename> command. | 
 | 427 |                 After running the command, you must then point the <filename>runqemu</filename> | 
 | 428 |                 script to the extracted directory instead of a root filesystem image file.</para></listitem> | 
 | 429 |         </itemizedlist> | 
 | 430 |     </note> | 
 | 431 | </section> | 
 | 432 | </chapter> | 
 | 433 | <!-- | 
 | 434 | vim: expandtab tw=80 ts=4 | 
 | 435 | --> |