12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058 |
- <!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
- "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd"
- [<!ENTITY % poky SYSTEM "../poky.ent"> %poky; ] >
- <article id='yocto-project-qs-intro'>
- <articleinfo>
- <title>Yocto Project Quick Start</title>
- <copyright>
- <year>©RIGHT_YEAR;</year>
- <holder>Linux Foundation</holder>
- </copyright>
- <legalnotice>
- <para>
- Permission is granted to copy, distribute and/or modify this document under
- the terms of the <ulink type="http" url="http://creativecommons.org/licenses/by-sa/2.0/uk/">Creative Commons Attribution-Share Alike 2.0 UK: England & Wales</ulink> as published by Creative Commons.
- </para>
- <note><title>Manual Notes</title>
- <itemizedlist>
- <listitem><para>
- For the latest version of the Yocto Project Quick
- Start associated with this Yocto Project release
- (version &YOCTO_DOC_VERSION;),
- see the Yocto Project Quick Start from the
- <ulink url='&YOCTO_HOME_URL;/documentation'>Yocto Project documentation page</ulink>.
- </para></listitem>
- <listitem><para>
- This version of the manual is version
- &YOCTO_DOC_VERSION;.
- For later releases of the Yocto Project (if they exist),
- go to the
- <ulink url='&YOCTO_HOME_URL;/documentation'>Yocto Project documentation page</ulink>
- and use the drop-down "Active Releases" button
- and choose the Yocto Project version for which you want
- the manual.
- </para></listitem>
- <listitem><para>
- For an in-development version of the Yocto Project
- Quick Start, see
- <ulink url='&YOCTO_DOCS_URL;/latest/yocto-project-qs/yocto-project-qs.html'></ulink>.
- </para></listitem>
- </itemizedlist>
- </note>
- </legalnotice>
- <abstract>
- <imagedata fileref="figures/yocto-project-transp.png"
- width="6in" depth="1in"
- align="right" scale="25" />
- </abstract>
- </articleinfo>
- <section id='welcome'>
- <title>Welcome!</title>
- <para>
- Welcome to the Yocto Project!
- The Yocto Project is an open-source collaboration project whose
- focus is developers of embedded Linux systems.
- Among other things, the Yocto Project uses a build host based
- on the OpenEmbedded (OE) project, which uses the
- <ulink url='&YOCTO_DOCS_REF_URL;#bitbake-term'>BitBake</ulink>
- tool, to construct complete Linux images.
- The BitBake and OE components combine together to form
- a reference build host, historically known as
- <ulink url='&YOCTO_DOCS_REF_URL;#poky'>Poky</ulink>
- (<emphasis>Pah</emphasis>-kee).
- </para>
- <para>
- This quick start is written so that you can quickly get a
- build host set up to use the Yocto Project and then build some
- Linux images.
- Rather than go into great detail about the Yocto Project and its
- many capabilities, this quick start provides the minimal
- information you need to try out the Yocto Project using either a
- supported Linux build host or a build host set up to use
- <ulink url='https://git.yoctoproject.org/cgit/cgit.cgi/crops/about/'>CROPS</ulink>,
- which leverages
- <ulink url='https://www.docker.com/'>Docker Containers</ulink>.
- </para>
- <para>
- Reading and using the quick start should result in you having a
- basic understanding of what the Yocto Project is and how to use
- some of its core components.
- You will also have worked through steps to produce two images:
- one that runs on the emulator (QEMU) and one that boots on actual
- hardware (i.e. MinnowBoard Turbot).
- The examples highlight the ease with which you can use the
- Yocto Project to create images for multiple types of hardware.
- </para>
- <para>
- The following list directs you to key sections of this
- quick start:
- <itemizedlist>
- <listitem><para>
- <ulink url='http://www.yoctoproject.org/docs/2.4/yocto-project-qs/yocto-project-qs.html#yp-resources'>Setting Up to Use the Yocto Project</ulink>
- </para></listitem>
- <listitem><para>
- <ulink url='http://www.yoctoproject.org/docs/2.4/yocto-project-qs/yocto-project-qs.html#building-an-image-for-emulation'>Building an Image for Emulation</ulink>
- </para></listitem>
- <listitem><para>
- <ulink url='http://www.yoctoproject.org/docs/2.4/yocto-project-qs/yocto-project-qs.html#building-an-image-for-hardware'>Building an Image for Hardware</ulink>
- </para></listitem>
- </itemizedlist>
- <!--
- <note>
- If you do not have a system that runs Linux and you want to give
- the Yocto Project a test run, you might consider using the Yocto
- Project Build Appliance.
- The Build Appliance allows you to build and boot a custom
- embedded Linux image with the Yocto Project using a non-Linux
- development system.
- See the
- <ulink url='https://www.yoctoproject.org/tools-resources/projects/build-appliance'>Yocto Project Build Appliance</ulink>
- for more information.
- </note>
- -->
- </para>
- <para>
- For more detailed information on the Yocto Project, you can
- reference these resources:
- <itemizedlist>
- <listitem><para>
- <emphasis>Website:</emphasis>
- The
- <ulink url='&YOCTO_HOME_URL;'>Yocto Project Website</ulink>
- provides bacground information, the latest builds, breaking
- news, full development documentation, and access to a rich
- Yocto Project Development Community into which you can tap.
- </para></listitem>
- <listitem><para>
- <emphasis>Yocto Project Development Environment Overview:</emphasis>
- The
- "<ulink url='&YOCTO_DOCS_REF_URL;#yp-intro'>Introducing the Yocto Project Development Environment</ulink>"
- section presents an overview of the Yocto Project
- development environment.
- </para></listitem>
- <listitem><para>
- <emphasis>FAQs:</emphasis>
- Lists commonly asked Yocto Project questions and answers.
- You can find two FAQs:
- <ulink url='&YOCTO_WIKI_URL;/wiki/FAQ'>Yocto Project FAQ</ulink>
- on a wiki, and the
- "<ulink url='&YOCTO_DOCS_REF_URL;#faq'>FAQ</ulink>"
- chapter in the Yocto Project Reference Manual.
- </para></listitem>
- <listitem><para>
- <emphasis>Developer Screencast:</emphasis>
- The
- <ulink url='http://vimeo.com/36450321'>Getting Started with the Yocto Project - New Developer Screencast Tutorial</ulink>
- provides a 30-minute video created for users unfamiliar
- with the Yocto Project but familiar with Linux build
- hosts.
- While this screencast is somewhat dated, the introductory
- and fundamental concepts are useful for the beginner.
- </para></listitem>
- <listitem><para>
- <emphasis>Comprehensive List of Links and Other Documentation:</emphasis>
- The
- "<ulink url='&YOCTO_DOCS_REF_URL;#resources-links-and-related-documentation'>Links and Related Documentation</ulink>"
- section in the Yocto Project Reference Manual provides a
- comprehensive list of related links and documentation.
- </para></listitem>
- </itemizedlist>
- </para>
- </section>
- <section id='yp-resources'>
- <title>Setting Up to Use the Yocto Project</title>
- <para>
- Setting up to use the Yocto Project involves getting your build
- host ready.
- If you have a native Linux machine that runs a Yocto Project
- supported distribution as described by the
- "<ulink url='&YOCTO_DOCS_REF_URL;#detailed-supported-distros'>Supported Linux Distributions</ulink>"
- section in the Yocto Project Reference Manual, you can prepare
- that machine as your build host.
- See the
- "<link linkend='qs-native-linux-build-host'>Using a Native Linux Machine</link>"
- section for more information.
- </para>
- <para>
- If you do not want to use the Yocto Project on a native Linux
- machine, you can prepare your build host to use
- <ulink url='https://git.yoctoproject.org/cgit/cgit.cgi/crops/about/'>CROPS</ulink>,
- which leverages
- <ulink url='https://www.docker.com/'>Docker Containers</ulink>.
- You can set up a build host for Windows, Mac, and Linux
- machines.
- See the
- "<link linkend='qs-crops-build-host'>Using CROPS and Containers</link>"
- section for more information.
- </para>
- <section id='qs-crops-build-host'>
- <title>Using CROPS and Containers</title>
- <para>
- Follow these steps to get your build host set up with a
- Poky container that you can use to complete the build
- examples further down in the Quick Start:
- <orderedlist>
- <listitem><para>
- <emphasis>Set Up to use CROss PlatformS (CROPS):</emphasis>
- Work through the first six steps of the procedure
- in the
- "<ulink url='&YOCTO_DOCS_DEV_URL;#setting-up-to-use-crops'>Setting Up to Use CROss PlatformS (CROPS)</ulink>"
- section of the Yocto Project Development Tasks Manual.
- </para></listitem>
- <listitem><para>
- <emphasis>Set Up the Poky Container to Use the Yocto Project:</emphasis>
- Go to
- <ulink url='https://github.com/crops/poky-container/blob/master/README.md'></ulink>
- and follow the directions to set up the Poky container
- on your build host.</para>
- <para>Once you complete the setup instructions for your
- machine, you need to get a copy of the
- <filename>poky</filename> repository on your build
- host.
- See the
- "<link linkend='releases'>Yocto Project Release</link>"
- section to continue.
- </para></listitem>
- </orderedlist>
- </para>
- </section>
- <section id='qs-native-linux-build-host'>
- <title>Using a Native Linux Machine</title>
- <para>
- The following list shows what you need in order to use a
- Linux-based build host to use the Yocto Project to build images:
- </para>
- <itemizedlist>
- <listitem><para><emphasis>Build Host</emphasis>
- A build host with a minimum of 50 Gbytes of free disk
- space that is running a supported Linux distribution (i.e.
- recent releases of Fedora, openSUSE, CentOS, Debian, or
- Ubuntu).
- </para></listitem>
- <listitem><para><emphasis>Build Host Packages</emphasis>
- Appropriate packages installed on the build host.
- </para></listitem>
- </itemizedlist>
- <section id='the-linux-distro'>
- <title>The Linux Distribution</title>
- <para>
- The Yocto Project team verifies each release against recent
- versions of the most popular Linux distributions that
- provide stable releases.
- In general, if you have the current release minus one of the
- following distributions, you should have no problems.
- <itemizedlist>
- <listitem><para>
- Ubuntu
- </para></listitem>
- <listitem><para>
- Fedora
- </para></listitem>
- <listitem><para>
- openSUSE
- </para></listitem>
- <listitem><para>
- CentOS
- </para></listitem>
- <listitem><para>
- Debian
- </para></listitem>
- </itemizedlist>
- For a more detailed list of distributions that support the
- Yocto Project, see the
- "<ulink url='&YOCTO_DOCS_REF_URL;#detailed-supported-distros'>Supported Linux Distributions</ulink>"
- section in the Yocto Project Reference Manual.
- </para>
- <para>
- The OpenEmbedded build system should be able to run on any
- modern distribution that has the following versions for
- Git, tar, and Python.
- <itemizedlist>
- <listitem><para>
- Git 1.8.3.1 or greater
- </para></listitem>
- <listitem><para>
- tar 1.27 or greater
- </para></listitem>
- <listitem><para>
- Python 3.4.0 or greater.
- </para></listitem>
- </itemizedlist>
- If your build host does not meet any of these three listed
- version requirements, you can take steps to prepare the
- system so that you can still use the Yocto Project.
- See the
- "<ulink url='&YOCTO_DOCS_REF_URL;#required-git-tar-and-python-versions'>Required Git, tar, and Python Versions</ulink>"
- section in the Yocto Project Reference Manual for information.
- </para>
- </section>
- <section id='packages'>
- <title>The Build Host Packages</title>
- <para>
- Required build host packages vary depending on your
- build machine and what you want to do with the Yocto Project.
- For example, if you want to build an image that can run
- on QEMU in graphical mode (a minimal, basic build
- requirement), then the build host package requirements
- are different than if you want to build an image on a headless
- system or build out the Yocto Project documentation set.
- </para>
- <para>
- Collectively, the number of required packages is large
- if you want to be able to cover all cases.
- <note>
- In general, you need to have root access and then install
- the required packages.
- Thus, the commands in the following section may or may
- not work depending on whether or not your Linux
- distribution has <filename>sudo</filename> installed.
- </note>
- </para>
- <para>
- The following list shows the required packages needed to build
- an image that runs on QEMU in graphical mode (e.g. essential
- plus graphics support).
- For lists of required packages for other scenarios, see the
- "<ulink url='&YOCTO_DOCS_REF_URL;#required-packages-for-the-host-development-system'>Required Packages for the Host Development System</ulink>"
- section in the Yocto Project Reference Manual.
- <itemizedlist>
- <listitem><para><emphasis>Ubuntu and Debian</emphasis>
- <literallayout class='monospaced'>
- $ sudo apt-get install &UBUNTU_HOST_PACKAGES_ESSENTIAL; libsdl1.2-dev xterm
- </literallayout>
- </para></listitem>
- <listitem><para><emphasis>Fedora</emphasis>
- <literallayout class='monospaced'>
- $ sudo dnf install &FEDORA_HOST_PACKAGES_ESSENTIAL; SDL-devel xterm
- </literallayout>
- </para></listitem>
- <listitem><para><emphasis>OpenSUSE</emphasis>
- <literallayout class='monospaced'>
- $ sudo zypper install &OPENSUSE_HOST_PACKAGES_ESSENTIAL; libSDL-devel xterm
- </literallayout>
- </para></listitem>
- <listitem><para><emphasis>CentOS</emphasis>
- <literallayout class='monospaced'>
- $ sudo yum install &CENTOS_HOST_PACKAGES_ESSENTIAL; SDL-devel xterm
- </literallayout>
- <note><title>Notes</title>
- <itemizedlist>
- <listitem><para>
- CentOS 6.x users need to ensure that the
- required versions of Git, tar and Python
- are available.
- For details, See the
- "<ulink url='&YOCTO_DOCS_REF_URL;#required-git-tar-and-python-versions'>Required Git, tar, and Python Versions</ulink>"
- section in the Yocto Project Reference
- Manual for information.
- </para></listitem>
- <listitem><para>
- Extra Packages for Enterprise Linux
- (i.e. <filename>epel-release</filename>)
- is a collection of packages from Fedora
- built on RHEL/CentOS for easy installation
- of packages not included in enterprise
- Linux by default.
- You need to install these packages
- separately.
- </para></listitem>
- <listitem><para>
- The <filename>makecache</filename> command
- consumes additional Metadata from
- <filename>epel-release</filename>.
- </para></listitem>
- </itemizedlist>
- </note>
- </para></listitem>
- </itemizedlist>
- </para>
- </section>
- <para>
- Once you complete the setup instructions for your
- machine, you need to get a copy of the
- <filename>poky</filename> repository on your build
- host.
- Continue with the
- "<link linkend='releases'>Yocto Project Release</link>"
- section.
- </para>
- </section>
- <section id='releases'>
- <title>Yocto Project Release</title>
- <para>
- Now that your build host has the right packages (native
- Linux machine) or you have the Poky container set up
- (CROPS), you need to get a copy of the Yocto Project.
- It is recommended that you get the latest Yocto Project release
- by setting up (cloning in
- <ulink url='&YOCTO_DOCS_REF_URL;#git'>Git</ulink> terms) a
- local copy of the <filename>poky</filename> Git repository on
- your build host and then checking out the latest release.
- Doing so allows you to easily update to newer Yocto Project
- releases as well as contribute back to the Yocto Project.
- </para>
- <para>
- Here is an example from a native Linux machine that is
- running Ubuntu.
- <note>
- If your build host is using a Poky container, you can
- use the same Git commands.
- </note>
- The example clones the <filename>poky</filename> repository
- and then checks out the latest Yocto Project Release by tag
- (i.e. <filename>&DISTRO_REL_TAG;</filename>):
- <literallayout class='monospaced'>
- $ git clone git://git.yoctoproject.org/poky
- Cloning into 'poky'...
- remote: Counting objects: 361782, done.
- remote: Compressing objects: 100% (87100/87100), done.
- remote: Total 361782 (delta 268619), reused 361439 (delta 268277)
- Receiving objects: 100% (361782/361782), 131.94 MiB | 6.88 MiB/s, done.
- Resolving deltas: 100% (268619/268619), done.
- Checking connectivity... done.
- $ git checkout tags/&DISTRO_REL_TAG; -b poky_&DISTRO;
- </literallayout>
- </para>
- <para>
- The previous Git <filename>checkout</filename> command
- creates a local branch named
- <filename>poky_&DISTRO;</filename>.
- The files available to you in that branch exactly match the
- repository's files in the
- <filename>&DISTRO_NAME_NO_CAP;</filename>
- development branch at the time of the Yocto Project &DISTRO;
- release.
- <note>
- Rather than checking out the entire development branch
- of a release (i.e. the tip), which could be continuously
- changing while you are doing your development, you would
- check out a branch based on a release tag. Doing so
- provides you with an unchanging, stable set of files.
- </note>
- </para>
- <para>
- For more options and information about accessing Yocto
- Project related repositories, see the
- "<ulink url='&YOCTO_DOCS_DEV_URL;#working-with-yocto-project-source-files'>Working With Yocto Project Source Files</ulink>"
- section in the Yocto Project Development Tasks Manual.
- </para>
- </section>
- </section>
- <section id='qs-building-images'>
- <title>Building Images</title>
- <para>
- You are now ready to give the Yocto Project a try.
- For this example, you will be using the command line to build
- your images.
- <note>
- A graphical user interface to the Yocto Project is available
- through Toaster.
- See the
- <ulink url='&YOCTO_DOCS_TOAST_URL;'>Toaster User Manual</ulink>
- for more information.
- </note>
- </para>
- <para>
- The remainder of this quick start steps you through the
- following:
- <itemizedlist>
- <listitem><para>
- Build a <filename>qemux86</filename> reference image
- and run it in the QEMU emulator.
- </para></listitem>
- <listitem><para>
- Easily change configurations so that you can quickly
- create a second image that you can load onto bootable
- media and actually boot target hardware.
- This example uses the MinnowBoard
- Turbot-compatible boards.
- </para></listitem>
- </itemizedlist>
- <note>
- The steps in the following two sections do not provide detail,
- but rather provide minimal, working commands and examples
- designed to just get you started.
- For more details, see the appropriate manuals in the
- <ulink url='&YOCTO_HOME_URL;/documentation'>Yocto Project manual set</ulink>.
- </note>
- </para>
- <section id='building-an-image-for-emulation'>
- <title>Building an Image for Emulation</title>
- <para>
- Use the following commands to build your image.
- The OpenEmbedded build system creates an entire Linux
- distribution, including the toolchain, from source.
- <note><title>Note about Network Proxies</title>
- <para>
- By default, the build process searches for source code
- using a pre-determined order through a set of
- locations.
- If you are working behind a firewall and your build
- host is not set up for proxies, you could encounter
- problems with the build process when fetching source
- code (e.g. fetcher failures or Git failures).
- </para>
- <para>
- If you do not know your proxy settings, consult your
- local network infrastructure resources and get that
- information.
- A good starting point could also be to check your web
- browser settings.
- Finally, you can find more information on using the
- Yocto Project behind a firewall in the Yocto Project
- Reference Manual
- <ulink url='&YOCTO_DOCS_REF_URL;#how-does-the-yocto-project-obtain-source-code-and-will-it-work-behind-my-firewall-or-proxy-server'>FAQ</ulink>
- and on the
- "<ulink url='https://wiki.yoctoproject.org/wiki/Working_Behind_a_Network_Proxy'>Working Behind a Network Proxy</ulink>"
- wiki page.
- </para>
- </note>
- </para>
- <para>
- <orderedlist>
- <listitem><para>
- <emphasis>Be Sure Your Build Host is Set Up:</emphasis>
- The steps to build an image in this section depend on
- your build host being properly set up.
- Be sure you have worked through the requirements
- described in the
- "<link linkend='yp-resources'>Setting Up to Use the Yocto Project</link>"
- section.
- </para></listitem>
- <listitem><para>
- <emphasis>Check Out Your Branch:</emphasis>
- Be sure you are in the
- <ulink url='&YOCTO_DOCS_REF_URL;#source-directory'>Source Directory</ulink>
- (e.g. <filename>poky</filename>) and then check out
- the branch associated with the latest Yocto Project
- Release:
- <literallayout class='monospaced'>
- $ cd ~/poky
- $ git checkout -b &DISTRO_NAME_NO_CAP; origin/&DISTRO_NAME_NO_CAP;
- </literallayout>
- Git's <filename>checkout</filename> command checks out
- the current Yocto Project release into a local branch
- whose name matches the release (i.e.
- <filename>&DISTRO_NAME_NO_CAP;</filename>).
- The local branch tracks the upstream branch of the
- same name.
- Creating your own branch based on the released
- branch ensures you are using the latest files for
- that release.
- </para></listitem>
- <listitem><para>
- <emphasis>Initialize the Build Environment:</emphasis>
- Run the
- <ulink url='&YOCTO_DOCS_REF_URL;#structure-core-script'><filename>&OE_INIT_FILE;</filename></ulink>
- environment setup script to define the OpenEmbedded
- build environment on your build host.
- <literallayout class='monospaced'>
- $ source &OE_INIT_FILE;
- </literallayout>
- Among other things, the script creates the
- <ulink url='&YOCTO_DOCS_REF_URL;#build-directory'>Build Directory</ulink>,
- which is <filename>build</filename> in this case
- and is located in the
- <ulink url='&YOCTO_DOCS_REF_URL;#source-directory'>Source Directory</ulink>.
- After the script runs, your current working directory
- is set to the Build Directory.
- Later, when the build completes, the Build Directory
- contains all the files created during the build.
- </para></listitem>
- <listitem><para>
- <emphasis>Examine Your Local Configuration File:</emphasis>
- When you set up the build environment, a local
- configuration file named
- <filename>local.conf</filename> becomes available in
- a <filename>conf</filename> subdirectory of the
- Build Directory.
- Before using BitBake to start the build, you can
- look at this file and be sure your general
- configurations are how you want them:
- <itemizedlist>
- <listitem><para>
- To help conserve disk space during builds,
- you can add the following statement to your
- project's configuration file, which for this
- example is
- <filename>poky/build/conf/local.conf</filename>.
- Adding this statement deletes the work
- directory used for building a recipe once the
- recipe is built.
- <literallayout class='monospaced'>
- INHERIT += "rm_work"
- </literallayout>
- </para></listitem>
- <listitem><para>
- By default, the target machine for the build is
- <filename>qemux86</filename>,
- which produces an image that can be used in
- the QEMU emulator and is targeted at an
- <trademark class='registered'>Intel</trademark>
- 32-bit based architecture.
- Further on in this example, this default is
- easily changed through the
- <ulink url='&YOCTO_DOCS_REF_URL;#var-MACHINE'><filename>MACHINE</filename></ulink>
- variable so that you can quickly
- build an image for a different machine.
- </para></listitem>
- <listitem><para>
- Another consideration before you build is the
- package manager used when creating the image.
- The default <filename>local.conf</filename>
- file selects the RPM package manager.
- You can control this configuration by using the
- <filename><ulink url='&YOCTO_DOCS_REF_URL;#var-PACKAGE_CLASSES'><filename>PACKAGE_CLASSES</filename></ulink></filename>
- variable.</para>
- <para>Selection of the package manager is separate
- from whether package management is used at runtime
- in the target image.</para>
- <para>For additional package manager selection
- information, see the
- "<ulink url='&YOCTO_DOCS_REF_URL;#ref-classes-package'><filename>package.bbclass</filename></ulink>"
- section in the Yocto Project Reference Manual.
- </para></listitem>
- </itemizedlist>
- </para></listitem>
- <listitem><para>
- <emphasis>Start the Build:</emphasis>
- Continue with the following command to build an OS image
- for the target, which is
- <filename>core-image-sato</filename> in this example:
- <note>
- Depending on the number of processors and cores, the
- amount of RAM, the speed of your Internet connection
- and other factors, the build process could take
- several hours the first time you run it.
- Subsequent builds run much faster since parts of the
- build are cached.
- </note>
- <literallayout class='monospaced'>
- $ bitbake core-image-sato
- </literallayout>
- <note>
- <para>
- If you experience a build error due to resources
- temporarily being unavailable and it appears you
- should not be having this issue, it might be due
- to the combination of a 4.3+ Linux kernel and
- <filename>systemd</filename> version 228+
- (i.e. see this
- <ulink url='http://unix.stackexchange.com/questions/253903/creating-threads-fails-with-resource-temporarily-unavailable-with-4-3-kernel'>link</ulink>
- for information).
- </para>
- <para>
- To work around this issue, you can try either
- of the following:
- <itemizedlist>
- <listitem><para>
- Try the build again.
- </para></listitem>
- <listitem><para>
- Modify the "DefaultTasksMax"
- <filename>systemd</filename> parameter
- by uncommenting it and setting it to
- "infinity".
- You can find this parameter in the
- <filename>system.conf</filename> file
- located in
- <filename>/etc/systemd</filename>
- on most systems.
- </para></listitem>
- </itemizedlist>
- </para>
- </note>
- For information on using the
- <filename>bitbake</filename> command, see the
- "<ulink url='&YOCTO_DOCS_REF_URL;#usingpoky-components-bitbake'>BitBake</ulink>"
- section in the Yocto Project Reference Manual, or see the
- "<ulink url='&YOCTO_DOCS_BB_URL;#bitbake-user-manual-command'>BitBake Command</ulink>"
- section in the BitBake User Manual.
- For information on other targets, see the
- "<ulink url='&YOCTO_DOCS_REF_URL;#ref-images'>Images</ulink>"
- chapter in the Yocto Project Reference Manual.
- </para></listitem>
- <listitem><para>
- <emphasis>Simulate Your Image Using QEMU:</emphasis>
- Once this particular image is built, you can start QEMU
- and run the image:
- <literallayout class='monospaced'>
- $ runqemu qemux86
- </literallayout>
- If you want to learn more about running QEMU, see the
- "<ulink url="&YOCTO_DOCS_DEV_URL;#dev-manual-qemu">Using the Quick EMUlator (QEMU)</ulink>"
- chapter in the Yocto Project Development Tasks Manual.
- </para></listitem>
- <listitem><para>
- <emphasis>Exit QEMU:</emphasis>
- Exit QEMU by either clicking on the shutdown icon or by
- typing <filename>Ctrl-C</filename> in the QEMU
- transcript window from which you evoked QEMU.
- </para></listitem>
- </orderedlist>
- </para>
- </section>
- <section id='building-an-image-for-hardware'>
- <title>Building an Image for Hardware</title>
- <para id='qs-minnowboard-example'>
- The following steps show how easy it is to set up to build an
- image for a new machine.
- These steps build an image for the MinnowBoard Turbot, which is
- supported by the Yocto Project and the
- <filename>meta-intel</filename> <filename>intel-corei7-64</filename>
- and <filename>intel-core2-32</filename> Board Support Packages
- (BSPs).
- <note>
- The MinnowBoard Turbot ships with 64-bit firmware.
- If you want to use the board in 32-bit mode, you must
- download the
- <ulink url='http://firmware.intel.com/projects/minnowboard-max'>32-bit firmware</ulink>.
- </note>
- </para>
- <para>
- <orderedlist>
- <listitem><para>
- <emphasis>Create a Local Copy of the
- <filename>meta-intel</filename> Repository:</emphasis>
- Building an image for the MinnowBoard Turbot requires
- the
- <filename>meta-intel</filename> layer.
- Use the <filename>git clone</filename> command to create
- a local copy of the repository inside your
- <ulink url='&YOCTO_DOCS_REF_URL;#source-directory'>Source Directory</ulink>,
- which is <filename>poky</filename> in this example:
- <literallayout class='monospaced'>
- $ cd $HOME/poky
- $ git clone git://git.yoctoproject.org/meta-intel
- Cloning into 'meta-intel'...
- remote: Counting objects: 14039, done.
- remote: Compressing objects: 100% (4471/4471), done.
- remote: Total 14039 (delta 8130), reused 13837 (delta 7947)
- Receiving objects: 100% (14039/14039), 4.27 MiB | 3.98 MiB/s, done.
- Resolving deltas: 100% (8130/8130), done.
- Checking connectivity... done.
- </literallayout>
- By default when you clone a Git repository, the
- "master" branch is checked out.
- Before you build your image that uses the
- <filename>meta-intel</filename> layer, you must be
- sure that both repositories
- (<filename>meta-intel</filename> and
- <filename>poky</filename>) are using the same releases.
- Because you used the <filename>&DISTRO_REL_TAG;</filename>
- tag when you checked out the <filename>poky</filename>
- repository by tag, you should use a
- <filename>meta-intel</filename>
- tag that corresponds with the release you used for
- <filename>poky</filename>.
- Consequently, you need to checkout out the
- "<filename>&METAINTELVERSION;-&DISTRO_NAME_NO_CAP;-&YOCTO_DOC_VERSION;</filename>"
- branch after cloning <filename>meta-intel</filename>:
- <literallayout class='monospaced'>
- $ cd $HOME/poky/meta-intel
- $ git checkout tags/&METAINTELVERSION;-&DISTRO_NAME_NO_CAP;-&YOCTO_DOC_VERSION; -b meta-intel-&DISTRO_NAME_NO_CAP;-&YOCTO_DOC_VERSION;
- Switched to a new branch 'meta-intel-&DISTRO_NAME_NO_CAP;-&YOCTO_DOC_VERSION;'
- </literallayout>
- The previous Git <filename>checkout</filename> command
- creates a local branch named
- <filename>meta-intel-&DISTRO_NAME_NO_CAP;-&YOCTO_DOC_VERSION;</filename>.
- You have the option to name your local branch whatever
- you want by providing any name you like for
- "meta-intel-&DISTRO_NAME_NO_CAP;-&YOCTO_DOC_VERSION;"
- in the above example.
- </para></listitem>
- <listitem><para>
- <emphasis>Configure the Build:</emphasis>
- To configure the build, you edit the
- <filename>bblayers.conf</filename> and
- <filename>local.conf</filename> files, both of which are
- located in the <filename>build/conf</filename> directory.
- </para>
- <para>Here is a quick way to make the edits.
- The first command uses the
- <filename>bitbake-layers add-layer</filename> command
- to add the <filename>meta-intel</filename>
- layer, which contains the <filename>intel-core*</filename>
- BSPs to the build.
- The second command selects the BSP by setting the
- <ulink url='&YOCTO_DOCS_REF_URL;#var-MACHINE'><filename>MACHINE</filename></ulink>
- variable.
- <literallayout class='monospaced'>
- $ cd $HOME/poky/build
- $ bitbake-layers add-layer "$HOME/poky/meta-intel"
- $ echo 'MACHINE = "intel-corei7-64"' >> conf/local.conf
- </literallayout>
- <note><title>Notes</title>
- <para>
- If you want a 64-bit build, use the following:
- <literallayout class='monospaced'>
- $ echo 'MACHINE = "intel-corei7-64"' >> conf/local.conf
- </literallayout>
- </para>
- <para>
- If you want 32-bit images, use the following:
- <literallayout class='monospaced'>
- $ echo 'MACHINE = "intel-core2-32"' >> conf/local.conf
- </literallayout>
- </para>
- </note>
- </para></listitem>
- <listitem><para>
- <emphasis>Build an Image for MinnowBoard
- Turbot:</emphasis>
- The type of image you build depends on your goals.
- For example, the previous build created a
- <filename>core-image-sato</filename> image, which is an
- image with Sato support.
- It is possible to build many image types for the
- MinnowBoard Turbot.
- Some possibilities are <filename>core-image-base</filename>,
- which is a console-only image.
- Another choice could be a
- <filename>core-image-full-cmdline</filename>, which is
- another console-only image but has more full-features
- Linux system functionality installed.
- For types of images you can build using the Yocto
- Project, see the
- "<ulink url='&YOCTO_DOCS_REF_URL;#ref-images'>Images</ulink>"
- chapter in the Yocto Project Reference Manual.</para>
- <para>Because configuration changes are minimal to set up
- for this second build, the OpenEmbedded build system can
- re-use files from previous builds as much as possible.
- Re-using files means this second build will be much faster
- than an initial build.
- For this example, the <filename>core-image-base</filename>
- image is built:
- <literallayout class='monospaced'>
- $ bitbake core-image-base
- </literallayout>
- <note>
- <para>
- If you experience a build error due to resources
- temporarily being unavailable and it appears you
- should not be having this issue, it might be due
- to the combination of a 4.3+ Linux kernel and
- <filename>systemd</filename> version 228+
- (i.e. see this
- <ulink url='http://unix.stackexchange.com/questions/253903/creating-threads-fails-with-resource-temporarily-unavailable-with-4-3-kernel'>link</ulink>
- for information).
- </para>
- <para>
- To work around this issue, you can try either
- of the following:
- <itemizedlist>
- <listitem><para>
- Try the build again.
- </para></listitem>
- <listitem><para>
- Modify the "DefaultTasksMax"
- <filename>systemd</filename> parameter
- by uncommenting it and setting it to
- "infinity".
- You can find this parameter in the
- <filename>system.conf</filename> file
- located in
- <filename>/etc/systemd</filename>
- on most systems.
- </para></listitem>
- </itemizedlist>
- </para>
- </note>
- Once the build completes, the resulting console-only image
- is located in the Build Directory here:
- <literallayout class='monospaced'>
- tmp/deploy/images/intel-corei7-64/core-image-base-intel-corei7-64.wic
- </literallayout>
- </para></listitem>
- <listitem><para>
- <emphasis>Write the Image:</emphasis>
- You can write the image just built to a bootable media
- (e.g. a USB key, SATA drive, SD card, etc.) using the
- <filename>dd</filename> utility:
- <literallayout class='monospaced'>
- $ sudo dd if=tmp/deploy/images/intel-corei7-64/core-image-base-intel-corei7-64.wic of=TARGET_DEVICE
- </literallayout>
- In the previous command, the
- <filename>TARGET_DEVICE</filename> is the device node in
- the host machine (e.g. <filename>/dev/sdc</filename>, which
- is most likely a USB stick, or
- <filename>/dev/mmcblk0</filename>, which is most likely an
- SD card).
- </para></listitem>
- <listitem><para>
- <emphasis>Boot the Hardware:</emphasis>
- With the boot device provisioned, you can insert the
- media into the MinnowBoard Turbot and boot the hardware.
- The board should automatically detect the media and boot to
- the bootloader and subsequently the operating system.
- </para>
- <para>If the board does not boot automatically, you can
- boot it manually from the EFI shell as follows:
- <literallayout class='monospaced'>
- Shell> connect -r
- Shell> map -r
- Shell> fs0:
- Shell> bootx64
- </literallayout>
- <note>
- For a 32-bit image use the following:
- <literallayout class='monospaced'>
- Shell> bootia32
- </literallayout>
- </note>
- </para></listitem>
- </orderedlist>
- </para>
- </section>
- </section>
- <section id='qs-next-steps'>
- <title>Next Steps</title>
- <para>
- If you completed all the steps in the previous section then
- congratulations!
- What now?
- </para>
- <para>
- Depending on what you primary interests are with the Yocto Project,
- you could consider any of the following:
- <itemizedlist>
- <listitem><para>
- <emphasis>Visit the Yocto Project Web Site:</emphasis>
- The official
- <ulink url='&YOCTO_HOME_URL;'>Yocto Project</ulink>
- web site contains information on the entire project.
- Visiting this site is a good way to familiarize yourself
- with the overall project.
- </para></listitem>
- <listitem><para>
- <emphasis>Look Through the
- <ulink url='&YOCTO_DOCS_DEV_URL;#dev-manual-intro'>Yocto Project Development Tasks Manual</ulink>:</emphasis>
- This manual contains procedural information grouped to
- help you get set up, work with layers, customize images,
- write new recipes, work with libraries, and use QEMU.
- The information is task-based and spans the breadth of the
- Yocto Project.
- </para></listitem>
- <listitem><para>
- <emphasis>Look Through the
- <ulink url='&YOCTO_DOCS_SDK_URL;#sdk-intro'>Yocto Project Software Development Kit (SDK) Developer's Guide</ulink>:</emphasis>
- This manual describes how to use both the
- <ulink url='&YOCTO_DOCS_SDK_URL;#sdk-using-the-standard-sdk'>standard SDK</ulink>
- and the
- <ulink url='&YOCTO_DOCS_SDK_URL;#sdk-extensible'>extensible SDK</ulink>,
- which are used primarily for application development.
- This manual also provides example workflows
- that use the popular <trademark class='trade'>Eclipse</trademark>
- development environment and that use <filename>devtool</filename>.
- See the
- "<ulink url='&YOCTO_DOCS_SDK_URL;#workflow-using-eclipse'>Workflow using Eclipse™</ulink>"
- and
- "<ulink url='&YOCTO_DOCS_SDK_URL;#using-devtool-in-your-sdk-workflow'>Using <filename>devtool</filename> in your SDK Workflow</ulink>"
- sections for more information.
- </para></listitem>
- <listitem><para>
- <emphasis>Learn About Kernel Development:</emphasis>
- If you want to see how to work with the kernel and
- understand Yocto Linux kernels, see the
- <ulink url='&YOCTO_DOCS_KERNEL_DEV_URL;#kernel-dev-intro'>Yocto Project Linux Kernel Development Manual</ulink>.
- This manual provides information on how to patch the
- kernel, modify kernel recipes, and configure the kernel.
- </para></listitem>
- <listitem><para>
- <emphasis>Learn About Board Support Packages (BSPs):</emphasis>
- If you want to learn about BSPs, see the
- <ulink url='&YOCTO_DOCS_BSP_URL;#bsp'>Yocto Project Board Support Packages (BSP) Developer's Guide</ulink>.
- This manual also provides an example BSP creation workflow.
- See the
- <ulink url='&YOCTO_DOCS_BSP_URL;#developing-a-board-support-package-bsp'>"Developing a Board Support Package (BSP)</ulink>"
- section.
- </para></listitem>
- <listitem><para>
- <emphasis>Learn About Toaster:</emphasis>
- Toaster is a web interface to the Yocto Project's
- OpenEmbedded build system.
- If you are interested in using this type of interface to
- create images, see the
- <ulink url='&YOCTO_DOCS_TOAST_URL;#toaster-manual-intro'>Toaster User Manual</ulink>.
- </para></listitem>
- <listitem><para>
- <emphasis>Have Available the
- <ulink url='&YOCTO_DOCS_REF_URL;#ref-manual-intro'>Yocto Project Reference Manual:</ulink></emphasis>
- Unlike the rest of the Yocto Project manual set, this manual
- is comprised of material suited for reference rather than
- procedures.
- You can get
- <ulink url='&YOCTO_DOCS_REF_URL;#usingpoky'>build details</ulink>,
- a
- <ulink url='&YOCTO_DOCS_REF_URL;#development-concepts'>closer look</ulink>
- at how the pieces of the Yocto Project development
- environment work together, information on various
- <ulink url='&YOCTO_DOCS_REF_URL;#technical-details'>technical details</ulink>,
- guidance on
- <ulink url='&YOCTO_DOCS_REF_URL;#migration'>migrating to a newer Yocto Project release</ulink>,
- reference material on the
- <ulink url='&YOCTO_DOCS_REF_URL;#ref-structure'>directory structure</ulink>,
- <ulink url='&YOCTO_DOCS_REF_URL;#ref-classes'>classes</ulink>,
- and
- <ulink url='&YOCTO_DOCS_REF_URL;#ref-tasks'>tasks</ulink>.
- The Yocto Project Reference Manual also contains a fairly
- comprehensive
- <ulink url='&YOCTO_DOCS_REF_URL;#ref-variables-glossary'>glossary of variables</ulink>
- used within the Yocto Project.
- </para></listitem>
- </itemizedlist>
- </para>
- </section>
- </article>
- <!--
- vim: expandtab tw=80 ts=4
- -->
|