kernel-dev, dev-manual: Moved Kernel prep steps

The dev-manual had a place-holder section for getting the
build host ready for using YP and then doing kernel
development.  This stuff is better suited for the actual
kernel development manual.  I moved the section.  Moving
created several broken links in the manual set that had to
be fixed.

In the dev-manual, I updated the introductory list to include
the newly moved kernel stuff.

(From yocto-docs rev: 2e21260bb5f84e9e30eb353ec841d5962e8a7642)

Signed-off-by: Scott Rifenbark <srifenbark@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Scott Rifenbark
2017-08-18 15:12:33 -07:00
committed by Richard Purdie
parent 25aacfe1da
commit a64831cad7
6 changed files with 206 additions and 141 deletions

View File

@@ -474,15 +474,15 @@
</para>
<para>
The example assumes a clean build exists for the <filename>qemux86</filename>
machine in a
The example builds an extensible SDK, which is then used to
build, using <filename>devtool</filename>, a clean image for the
default <filename>qemux86</filename> machine in a
<ulink url='&YOCTO_DOCS_REF_URL;#source-directory'>Source Directory</ulink>
named <filename>poky</filename>.
Furthermore, the
In the example, the
<ulink url='&YOCTO_DOCS_REF_URL;#build-directory'>Build Directory</ulink>
is <filename>build</filename> and is located in
<filename>poky</filename> and the kernel is based on the
Linux 3.4 kernel.
is <filename>build</filename> and is located in the default
<filename>poky_sdk</filename> directory.
</para>
<para>
@@ -491,12 +491,74 @@
section.
</para>
<section id='patch-kernel-set-up-the-build-host'>
<title>Set Up the Build Host</title>
<para>
Prior to creating any actual patches for your kernel, you
need to prepare the build host.
This example builds an extensible SDK.
Follow these steps:
<itemizedlist>
<listitem><para>
<emphasis>Set Up the Build Environment:</emphasis>
Be sure you are set up to use BitBake in a shell.
See the
"<ulink url='&YOCTO_DOCS_DEV_URL;#setting-up-the-development-host-to-use-the-yocto-project'>Setting Up the Development Host to Use the Yocto Project</ulink>"
section in the Yocto Project Development Manual for information
on how to get a build host ready that is either a native
Linux machine or a machine that uses CROPS.
</para></listitem>
<listitem><para>
<emphasis>Clone the <filename>poky</filename> Repository:</emphasis>
You need to have a local copy of the Yocto Project
<ulink url='&YOCTO_DOCS_REF_URL;#source-directory'>Source Directory</ulink>
(i.e. a local <filename>poky</filename> repository).
See the
"<ulink url='&YOCTO_DOCS_DEV_URL;#cloning-the-poky-repository'>Cloning the <filename>poky</filename> Repository</ulink>"
and possibly the
"<ulink url='&YOCTO_DOCS_DEV_URL;#checking-out-by-branch-in-poky'>Checking Out by Branch in Poky</ulink>"
and
"<ulink url='&YOCTO_DOCS_DEV_URL;#checkout-out-by-tag-in-poky'>Checking Out by Tag in Poky</ulink>"
sections all in the Yocto Project Development Manual for
information on how to clone the <filename>poky</filename>
repository and check out the appropriate branch for your work.
</para></listitem>
<listitem><para>
<emphasis>Initialize the Build Environment:</emphasis>
While in the root directory of the Source Directory (i.e.
<filename>poky</filename>), 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 <filename>build</filename> directory.
<note>
For information on running a memory-resident
<ulink url='&YOCTO_DOCS_REF_URL;#usingpoky-components-bitbake'>BitBake</ulink>,
see the
<ulink url='&YOCTO_DOCS_REF_URL;#structure-memres-core-script'><filename>oe-init-build-env-memres</filename></ulink>
setup script.
</note>
</para></listitem>
</itemizedlist>
</para>
</section>
<section id='create-a-layer-for-your-changes'>
<title>Create a Layer for your Changes</title>
<para>
The first step is to create a layer so you can isolate your
changes.
changes to the kernel.
Rather than use the <filename>yocto-layer</filename> script
to create the layer, this example steps through the process
by hand.

View File

@@ -416,8 +416,8 @@
Yocto Linux kernel tree.
For information on how to clone a Yocto Linux kernel
Git repository, see the
"<ulink url='&YOCTO_DOCS_DEV_URL;#local-kernel-files'>Setting Up to Work On a Kernel</ulink>"
section in the Yocto Project Development Manual.
"<link linkend='preparing-the-build-host-to-work-on-the-kernel'>Preparing the Build Host to Work on the Kernel</link>"
section.
</para></listitem>
<listitem><para>
<emphasis>Temporary Source Files from a Build:</emphasis>

View File

@@ -51,10 +51,10 @@
<literallayout class='monospaced'>
$ git clone git://git.yoctoproject.org/linux-yocto-3.4
</literallayout>
For another example of how to set up a local Git repository of the Yocto Project
kernel files, see the
"<ulink url='&YOCTO_DOCS_DEV_URL;#local-kernel-files'>Yocto Project Kernel</ulink>" bulleted
item in the Yocto Project Development Manual.
For more information on how to set up a local Git repository of the
Yocto Project kernel files, see the
"<link linkend='preparing-the-build-host-to-work-on-the-kernel'>Preparing the Build Host to Work on the Kernel</link>"
section.
</para>
<para>
Once you have cloned the kernel Git repository on your local machine, you can

View File

@@ -90,6 +90,130 @@
</para>
</section>
<section id='preparing-the-build-host-to-work-on-the-kernel'>
<title>Preparing the Build Host to Work on the Kernel</title>
<para>
Kernel development is best accomplished using
<ulink url='&YOCTO_DOCS_SDK_URL;#using-devtool-in-your-sdk-workflow'><filename>devtool</filename></ulink>
and not through traditional kernel workflow methods.
This section provides information for both scenarios.
</para>
<section id='getting-ready-to-develop-using-devtool'>
<title>Getting Ready to Develop using <filename>devtool</filename></title>
<para role='writernotes'>
Need the updated wiki stuff here
</para>
</section>
<section id='getting-ready-for-traditional-kernel-development'>
<title>Getting Ready for Traditional Kernel Development</title>
<para>
For traditional kernel development using the Yocto
Project, you need to establish local copies of the
kernel source.
You can find Git repositories of supported Yocto Project
kernels organized under "Yocto Linux Kernel" in the Yocto
Project Source Repositories at
<ulink url='&YOCTO_GIT_URL;/cgit.cgi'></ulink>.
</para>
<para>
This setup can involve creating a bare clone of the
Yocto Project kernel and then copying that cloned
repository.
You can create the bare clone and the copy of the bare
clone anywhere you like.
For simplicity, it is recommended that you create these
structures outside of the
<ulink url='&YOCTO_DOCS_REF_URL;source-directory'>Source Directory</ulink>,
which is usually named <filename>poky</filename>.
</para>
<para>
The following steps show how to create a bare clone of the
<filename>linux-yocto-4.4</filename> kernel and then
create a copy of that clone:
<note>
When you have a local Yocto Project kernel Git
repository, you can reference that repository rather than
the upstream Git repository as part of the
<filename>clone</filename> command.
Doing so can speed up the process.
</note>
<orderedlist>
<listitem><para>
<emphasis>Create the Bare Clone:</emphasis>
In the following example, the bare clone is named
<filename>linux-yocto-4.4.git</filename>:
<literallayout class='monospaced'>
$ git clone &dash;&dash;bare git://git.yoctoproject.org/linux-yocto-4.4 linux-yocto-4.4.git
Cloning into bare repository 'linux-yocto-4.4.git'...
remote: Counting objects: 4543903, done.
remote: Compressing objects: 100% (695618/695618), done.
remote: Total 4543903 (delta 3818435), reused 4541724 (delta 3816256)
Receiving objects: 100% (4543903/4543903), 801.08 MiB | 6.55 MiB/s, done.
Resolving deltas: 100% (3818435/3818435), done.
Checking connectivity... done.
</literallayout>
</para></listitem>
<listitem><para>
<emphasis>Create the Copy of the Bare Clone:</emphasis>
In the following command, the copy of the bare clone
is named <filename>my-linux-yocto-4.4-work</filename>:
<literallayout class='monospaced'>
$ git clone linux-yocto-4.4.git my-linux-yocto-4.4-work
Cloning into 'my-linux-yocto-4.4-work'...
done.
Checking out files: 100% (52221/52221), done.
</literallayout>
</para></listitem>
<listitem><para>
<emphasis>Cloning the <filename>meta-yocto-kernel-extras</filename> Repository:</emphasis>
The <filename>meta-yocto-kernel-extras</filename> Git
repository contains Metadata needed only if you are
modifying and building the kernel image.
In particular, it contains the kernel BitBake append
(<filename>.bbappend</filename>) files that you edit to
point to your locally modified kernel source files and
to build the kernel image.
Pointing to these local files is much more efficient
than requiring a download of the kernel's source files
from upstream each time you make changes to the kernel.
</para>
<para>You can find the
<filename>meta-yocto-kernel-extras</filename> Git
Repository in the "Yocto Metadata Layers" area of the
Yocto Project Source Repositories at
<ulink url='&YOCTO_GIT_URL;/cgit.cgi'></ulink>.
It is good practice to create this Git repository
inside the Source Directory.</para>
<para>Following is an example that creates the
<filename>meta-yocto-kernel-extras</filename> Git
repository inside the Source Directory, which is named
<filename>poky</filename>, in this case:
<literallayout class='monospaced'>
$ cd ~/poky
$ git clone git://git.yoctoproject.org/meta-yocto-kernel-extras meta-yocto-kernel-extras
Cloning into 'meta-yocto-kernel-extras'...
remote: Counting objects: 727, done.
remote: Compressing objects: 100% (452/452), done.
remote: Total 727 (delta 260), reused 719 (delta 252)
Receiving objects: 100% (727/727), 536.36 KiB | 0 bytes/s, done.
Resolving deltas: 100% (260/260), done.
Checking connectivity... done.
</literallayout>
</para></listitem>
</orderedlist>
</para>
</section>
</section>
<section id='kernel-modification-workflow'>
<title>Kernel Modification Workflow</title>

View File

@@ -34,10 +34,10 @@
<literallayout class='monospaced'>
$ git clone git://git.yoctoproject.org/linux-yocto-3.19
</literallayout>
For another example of how to set up a local Git repository of the Yocto Project
kernel files, see the
"<ulink url='&YOCTO_DOCS_DEV_URL;#local-kernel-files'>Yocto Project Kernel</ulink>" bulleted
item in the Yocto Project Development Manual.
For more information on how to set up a local Git repository of
the Yocto Project kernel files, see the
"<link linkend='preparing-the-build-host-to-work-on-the-kernel'>Preparing the Build Host to Work on the Kernel</link>"
section.
</para>
<para>
Once you have cloned the kernel Git repository on your local machine, you can