From 64f0f60b3fba36ff87fe78ec1e27e6398d206c51 Mon Sep 17 00:00:00 2001 From: Scott Rifenbark Date: Thu, 29 Jun 2017 13:06:27 -0700 Subject: [PATCH] dev-manual, kernel-dev: Moved kernel branch concepts to kernel-dev Fixes [YOCTO #11630] The information in the dev-manual kernel overview area really neeeds to be in the Appendix on kernel structure in the kernel-dev manual. I moved that informtaion to the appendix. Removal of one redundant image was necessary from the dev-manual. The figure was literally repeated in the kernel manual already under a different file name. (From yocto-docs rev: 00ca68e760e41448c225fb1ca4a77f5201434b93) Signed-off-by: Scott Rifenbark Signed-off-by: Richard Purdie --- documentation/Makefile | 4 +- documentation/dev-manual/dev-manual-model.xml | 75 +++--------- .../dev-manual/figures/kernel-overview-1.png | Bin 35839 -> 0 bytes .../kernel-dev/kernel-dev-concepts-appx.xml | 113 +++++++++++------- 4 files changed, 92 insertions(+), 100 deletions(-) delete mode 100644 documentation/dev-manual/figures/kernel-overview-1.png diff --git a/documentation/Makefile b/documentation/Makefile index 3c02a3c2f0..a761c19dba 100644 --- a/documentation/Makefile +++ b/documentation/Makefile @@ -131,7 +131,7 @@ TARFILES = dev-style.css dev-manual.html \ TARFILES = dev-style.css dev-manual.html \ figures/dev-title.png \ figures/kernel-dev-flow.png \ - figures/kernel-overview-1.png figures/kernel-overview-2-generic.png \ + figures/kernel-overview-2-generic.png \ figures/recipe-workflow.png \ figures/devtool-add-flow.png figures/devtool-modify-flow.png \ figures/devtool-upgrade-flow.png \ @@ -205,7 +205,7 @@ TARFILES = mega-manual.html mega-style.css figures/yocto-environment.png \ figures/dev-title.png \ figures/git-workflow.png figures/index-downloads.png \ figures/kernel-dev-flow.png \ - figures/kernel-overview-1.png figures/kernel-overview-2-generic.png \ + figures/kernel-overview-2-generic.png \ figures/source-repos.png figures/yp-download.png \ figures/profile-title.png figures/kernelshark-all.png \ figures/kernelshark-choose-events.png \ diff --git a/documentation/dev-manual/dev-manual-model.xml b/documentation/dev-manual/dev-manual-model.xml index bd6a85b987..05ff369f5d 100644 --- a/documentation/dev-manual/dev-manual-model.xml +++ b/documentation/dev-manual/dev-manual-model.xml @@ -86,67 +86,26 @@ Kernel Overview - The kernels are maintained using the Git revision control system - that structures them using the familiar "tree", "branch", and "leaf" scheme. - Branches represent diversions from general code to more specific code, while leaves - represent the end-points for a complete and unique kernel whose source files, - when gathered from the root of the tree to the leaf, accumulate to create the files - necessary for a specific piece of hardware and its features. - The following figure displays this concept: - - - - - - Within the figure, the "Kernel.org Branch Point" represents the point in the tree - where a supported base kernel is modified from the Linux kernel. - For example, this could be the branch point for the linux-yocto-3.19 - kernel. - Thus, everything further to the right in the structure is based on the - linux-yocto-3.19 kernel. - Branch points to the right in the figure represent where the - linux-yocto-3.19 kernel is modified for specific hardware - or types of kernels, such as real-time kernels. - Each leaf thus represents the end-point for a kernel designed to run on a specific - targeted device. - - - - The overall result is a Git-maintained repository from which all the supported - kernel types can be derived for all the supported devices. - A big advantage to this scheme is the sharing of common features by keeping them in - "larger" branches within the tree. - This practice eliminates redundant storage of similar features shared among kernels. - - - - Keep in mind the figure does not take into account all the supported Yocto - Project kernel types, but rather shows a single generic kernel just for conceptual purposes. - Also keep in mind that this structure represents the Yocto Project source repositories - that are either pulled from during the build or established on the host development system - prior to the build by either cloning a particular kernel's Git repository or by - downloading and unpacking a tarball. - - - - Upstream storage of all the available kernel source code is one thing, while - representing and using the code on your host development system is another. - Conceptually, you can think of the kernel source repositories as all the - source files necessary for all the supported kernels. - As a developer, you are just interested in the source files for the kernel on - which you are working. + Upstream storage of all the available kernel source code is + one thing, while representing and using the code on your host + development system is another. + Conceptually, you can think of the kernel source repositories + as all the source files necessary for all the supported + Yocto Linux kernels. + As a developer, you are just interested in the source files + for the kernel on which you are working. And, furthermore, you need them available on your host system. - Kernel source code is available on your host system a couple of different - ways. - If you are working in the kernel all the time, you probably would want - to set up your own local Git repository of the kernel tree. - If you just need to make some patches to the kernel, you can access - temporary kernel source files that were extracted and used - during a build. + Kernel source code is available on your host system a couple + of different ways. + If you are working in the kernel all the time, you probably + would want to set up your own local Git repository of the + Yocto Linux kernel tree. + If you just need to make some patches to the kernel, you can + access temporary kernel source files that were extracted and + used during a build. We will just talk about working with the temporary source code. For more information on how to get kernel source code onto your host system, see the @@ -164,6 +123,8 @@ Thus, in a sense, the process constructs a local source tree specific to your kernel to generate the new kernel image - a source generator if you will. + + The following figure shows the temporary file structure created on your host system when the build occurs. This diff --git a/documentation/dev-manual/figures/kernel-overview-1.png b/documentation/dev-manual/figures/kernel-overview-1.png deleted file mode 100644 index 116c0b9bd4d10dfe086ef4583a54bcce03996cee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 35839 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 Z>!(55w3zOjVGQu^iTpFUibtj){}-T~(Om!l diff --git a/documentation/kernel-dev/kernel-dev-concepts-appx.xml b/documentation/kernel-dev/kernel-dev-concepts-appx.xml index 3606301cc7..ee40938b5d 100644 --- a/documentation/kernel-dev/kernel-dev-concepts-appx.xml +++ b/documentation/kernel-dev/kernel-dev-concepts-appx.xml @@ -175,74 +175,105 @@
Kernel Architecture + - This section describes the architecture of the kernels available through the - Yocto Project and provides information + This section describes the architecture of the Yocto Linux kernels + available through the Yocto Project and provides information on the mechanisms used to achieve that architecture.
Overview + - As mentioned earlier, a key goal of the Yocto Project is to present the - developer with - a kernel that has a clear and continuous history that is visible to the user. - The architecture and mechanisms used achieve that goal in a manner similar to the - upstream kernel.org. + As mentioned earlier, a key goal of the Yocto Project is + to present the developer with a kernel that has a clear and + continuous history that is visible to the user. + The architecture and mechanisms used achieve that goal in a + manner similar to upstream Linux kernel development in + kernel.org. + - You can think of a Yocto Project kernel as consisting of a baseline Linux kernel with - added features logically structured on top of the baseline. - The features are tagged and organized by way of a branching strategy implemented by the + You can think of a Yocto Linux kernel as consisting of a + baseline Linux kernel with added features logically structured + on top of the baseline. + The features are tagged and organized by way of a branching + strategy implemented by the Yocto Project team using the source code manager (SCM) Git. For information on Git as applied to the Yocto Project, see the - "Git" section in the - Yocto Project Development Manual. + "Git" section + in the Yocto Project Development Manual. + - The result is that the user has the ability to see the added features and - the commits that make up those features. - In addition to being able to see added features, the user can also view the history of what - made up the baseline kernel. - - - The following illustration shows the conceptual Yocto Project kernel. + The result is that the user has the ability to see the added + features and the commits that make up those features. + In addition to being able to see added features, the user + can also view the history of what made up the baseline + Linux kernel. + + The following illustration shows the conceptual Yocto + Linux kernel. + - In the illustration, the "Kernel.org Branch Point" - marks the specific spot (or release) from - which the Yocto Project kernel is created. - From this point "up" in the tree, features and differences are organized and tagged. + In the illustration, the "Kernel.org Branch Point" marks the + specific spot (or Linux kernel release) from which the + Yocto Linux kernel is created. + From this point forward in the tree, features and differences + are organized and tagged. + - The "Yocto Project Baseline Kernel" contains functionality that is common to every kernel - type and BSP that is organized further up the tree. - Placing these common features in the - tree this way means features do not have to be duplicated along individual branches of the - structure. + The "Yocto Project Baseline Kernel" contains functionality that + is common to every kernel type and BSP that is organized + further along in the tree. + Placing these common features in the tree this way means + features do not have to be duplicated along individual + branches of the tree structure. + - From the Yocto Project Baseline Kernel, branch points represent specific functionality - for individual BSPs as well as real-time kernels. - The illustration represents this through three BSP-specific branches and a real-time - kernel branch. - Each branch represents some unique functionality for the BSP or a real-time kernel. + From the Yocto Project Baseline Kernel, branch points represent + specific functionality for individual Board Support Packages + (BSPs) as well as real-time kernels. + The illustration represents this through three BSP-specific + branches and a real-time kernel branch. + Each branch represents some unique functionality for the BSP + or for a real-time Yocto Linux kernel. + - In this example structure, the real-time kernel branch has common features for all - real-time kernels and contains - more branches for individual BSP-specific real-time kernels. + In this example structure, the real-time kernel branch has + common features for all real-time Yocto Linux kernels and + contains more branches for individual BSP-specific real-time + kernels. The illustration shows three branches as an example. - Each branch points the way to specific, unique features for a respective real-time - kernel as they apply to a given BSP. + Each branch points the way to specific, unique features for a + respective real-time kernel as they apply to a given BSP. + - The resulting tree structure presents a clear path of markers (or branches) to the - developer that, for all practical purposes, is the kernel needed for any given set - of requirements. + The resulting tree structure presents a clear path of markers + (or branches) to the developer that, for all practical + purposes, is the Yocto Linux kernel needed for any given set of + requirements. + + Keep in mind the figure does not take into account all the + supported Yocto Linux kernels, but rather shows a single + generic kernel just for conceptual purposes. + Also keep in mind that this structure represents the Yocto + Project + Source Repositories + that are either pulled from during the build or established + on the host development system prior to the build by either + cloning a particular kernel's Git repository or by + downloading and unpacking a tarball. +