Muutke küpsiste eelistusi

E-raamat: Embedded Linux Systems with the Yocto Project

Teised raamatud teemal:
  • Formaat - PDF+DRM
  • Hind: 31,58 €*
  • * hind on lõplik, st. muud allahindlused enam ei rakendu
  • Lisa ostukorvi
  • Lisa soovinimekirja
  • See e-raamat on mõeldud ainult isiklikuks kasutamiseks. E-raamatuid ei saa tagastada.
Teised raamatud teemal:

DRM piirangud

  • Kopeerimine (copy/paste):

    ei ole lubatud

  • Printimine:

    ei ole lubatud

  • Kasutamine:

    Digitaalõiguste kaitse (DRM)
    Kirjastus on väljastanud selle e-raamatu krüpteeritud kujul, mis tähendab, et selle lugemiseks peate installeerima spetsiaalse tarkvara. Samuti peate looma endale  Adobe ID Rohkem infot siin. E-raamatut saab lugeda 1 kasutaja ning alla laadida kuni 6'de seadmesse (kõik autoriseeritud sama Adobe ID-ga).

    Vajalik tarkvara
    Mobiilsetes seadmetes (telefon või tahvelarvuti) lugemiseks peate installeerima selle tasuta rakenduse: PocketBook Reader (iOS / Android)

    PC või Mac seadmes lugemiseks peate installima Adobe Digital Editionsi (Seeon tasuta rakendus spetsiaalselt e-raamatute lugemiseks. Seda ei tohi segamini ajada Adober Reader'iga, mis tõenäoliselt on juba teie arvutisse installeeritud )

    Seda e-raamatut ei saa lugeda Amazon Kindle's. 

As embedded systems grow more complex, developers are integrating full-fledged operating systems into them. Linux is an especially attractive option: it supports virtually all hardware architectures and many peripherals, scales well, offers full source code, and requires no royalty payments. However, building custom versions of Linux for new embedded systems has traditionally been difficult. The Yocto Project simplifies and streamlines every step of the process -- and this expert primer will help you make the most of it. An indispensable companion to the official documentation, it offers "in the trenches" insights you won't find anywhere else.

Leading embedded systems developer Rudolf Streif gives you a solid grounding in the basics, then guides you through more advanced topics -- ranging from building board support packages to managing compliance. You'll master the Yocto Project toolbox by working through the entire development lifecycle on a realistic project: a distributed home automation system consisting of multiple embedded devices with diverse functionality, all communicating via networking infrastructure. As you use Poky and the OpenEmbedded Core metadata layer to create a custom embedded Linux distribution, you'll master all this, and more:

  • Setting up your build environment
  • Using Application Development Toolkit (ADT) to integrate with the powerful Eclipse development workbench
  • Utilizing the Poky Build System and its HOB graphical frontend
  • Laying out system components, including structure, directories, and files
  • Using Bitbake Task Executor and its recipes to build entire Linux distros, including toolchains
  • Running basic builds for emulated targets
  • Custoimizing Linux systems, adding packages, configuring kernels, and developing board support packages (BSP)
  • Including your own software packages with image targets
  • Maintaining a common software base while supporting different CPU architectures and hardware configurations
  • Managing licensing and compliance, including tracking licenses, filtering non-conformant licenses, and enabling commercial code
Foreword xv
Preface xvii
Acknowledgments xxi
About the Author xxiii
1 Linux for Embedded Systems 1(14)
1.1 Why Linux for Embedded Systems?
1(2)
1.2 Embedded Linux Landscape
3(5)
1.2.1 Embedded Linux Distributions
3(2)
1.2.2 Embedded Linux Development Tools
5(3)
1.3 A Custom Linux Distribution-Why Is It Hard?
8(1)
1.4 A Word about Open Source Licensing
9(2)
1.5 Organizations, Relevant Bodies, and Standards
11(2)
1.5.1 The Linux Foundation
11(1)
1.5.2 The Apache Software Foundation
11(1)
1.5.3 Eclipse Foundation
12(1)
1.5.4 Linux Standard Base
12(1)
1.5.5 Consumer Electronics Workgroup
13(1)
1.6 Summary
13(1)
1.7 References
14(1)
2 The Yocto Project 15(20)
2.1 Jumpstarting Your First Yocto Project Build
15(11)
2.1.1 Prerequisites
16(1)
2.1.2 Obtaining the Yocto Project Tools
17(1)
2.1.3 Setting Up the Build Host
18(2)
2.1.4 Configuring a Build Environment
20(3)
2.1.5 Launching the Build
23(1)
2.1.6 Verifying the Build Results
24(1)
2.1.7 Yocto Project Build Appliance
24(2)
2.2 The Yocto Project Family
26(2)
2.3 A Little Bit of History
28(3)
2.3.1 OpenEmbedded
29(1)
2.3.2 BitBake
29(1)
2.3.3 Poky Linux
29(1)
2.3.4 The Yocto Project
30(1)
2.3.5 The OpenEmbedded and Yocto Project Relationship
30(1)
2.4 Yocto Project Terms
31(2)
2.5 Summary
33(1)
2.6 References
34(1)
3 OpenEmbedded Build System 35(24)
3.1 Building Open Source Software Packages
35(4)
3.1.1 Fetch
36(1)
3.1.2 Extract
36(1)
3.1.3 Patch
37(1)
3.1.4 Configure
37(1)
3.1.5 Build
38(1)
3.1.6 Install
38(1)
3.1.7 Package
38(1)
3.2 OpenEmbedded Workflow
39(6)
3.2.1 Metadata Files
41(2)
3.2.2 Workflow Process Steps
43(2)
3.3 OpenEmbedded Build System Architecture
45(11)
3.3.1 Build System Structure
47(3)
3.3.2 Build Environment Structure
50(3)
3.3.3 Metadata Layer Structure
53(3)
3.4 Summary
56(1)
3.5 References
57(2)
4 BitBake Build Engine 59(50)
4.1 Obtaining and Installing BitBake
59(2)
4.1.1 Using a Release Snapshot
60(1)
4.1.2 Cloning the BitBake Development Repository
60(1)
4.1.3 Building and Installing BitBake
60(1)
4.2 Running BitBake
61(9)
4.2.1 BitBake Execution Environment
61(2)
4.2.2 BitBake Command Line
63(7)
4.3 BitBake Metadata
70(1)
4.4 Metadata Syntax
71(15)
4.4.1 Comments
71(1)
4.4.2 Variables
72(4)
4.4.3 Inclusion
76(1)
4.4.4 Inheritance
77(2)
4.4.5 Executable Metadata
79(6)
4.4.6 Metadata Attributes
85(1)
4.4.7 Metadata Name (Key) Expansion
86(1)
4.5 Source Download
86(9)
4.5.1 Using the Fetch Class
87(1)
4.5.2 Fetcher Implementations
88(6)
4.5.3 Mirrors
94(1)
4.6 HelloWorld-BitBake Style
95(4)
4.7 Dependency Handling
99(3)
4.7.1 Provisioning
99(2)
4.7.2 Declaring Dependencies
101(1)
4.7.3 Multiple Providers
101(1)
4.8 Version Selection
102(1)
4.9 Variants
103(1)
4.10 Default Metadata
103(4)
4.10.1 Variables
103(4)
4.10.2 Tasks
107(1)
4.11 Summary
107(1)
4.12 References
108(1)
5 Troubleshooting 109(18)
5.1 Logging
110(6)
5.1.1 Log Files
110(4)
5.1.2 Using Logging Statements
114(2)
5.2 Task Execution
116(3)
5.2.1 Executing Specific Tasks
118(1)
5.2.2 Task Script Files
118(1)
5.3 Analyzing Metadata
119(1)
5.4 Development Shell
120(1)
5.5 Dependency Graphs
121(1)
5.6 Debugging Layers
122(2)
5.7 Summary
124(3)
6 Linux System Architecture 127(18)
6.1 Linux or GNU/Linux?
127(1)
6.2 Anatomy of a Linux System
128(1)
6.3 Bootloader
129(5)
6.3.1 Role of the Bootloader
130(1)
6.3.2 Linux Bootloaders
130(4)
6.4 Kernel
134(7)
6.4.1 Major Linux Kernel Subsystems
136(4)
6.4.2 Linux Kernel Startup
140(1)
6.5 User Space
141(2)
6.6 Summary
143(1)
6.7 References
144(1)
7 Building a Custom Linux Distribution 145(40)
7.1 Core Images-Linux Distribution Blueprints
146(14)
7.1.1 Extending a Core Image through Local Configuration
149(1)
7.1.2 Testing Your Image with QEMU
150(1)
7.1.3 Verifying and Comparing Images Using the Build History
151(1)
7.1.4 Extending a Core Image with a Recipe
152(1)
7.1.5 Image Features
153(2)
7.1.6 Package Groups
155(5)
7.2 Building Images from Scratch
160(1)
7.3 Image Options
161(8)
7.3.1 Languages and Locales
162(1)
7.3.2 Package Management
162(1)
7.3.3 Image Size
163(1)
7.3.4 Root Filesystem Types
164(2)
7.3.5 Users, Groups, and Passwords
166(1)
7.3.6 Tweaking the Root Filesystem
167(2)
7.4 Distribution Configuration
169(12)
7.4.1 Standard Distribution Policies
169(1)
7.4.2 Poky Distribution Policy
170(6)
7.4.3 Distribution Features
176(3)
7.4.4 System Manager
179(1)
7.4.5 Default Distribution Setup
179(2)
7.5 External Layers
181(1)
7.6 Hob
181(3)
7.7 Summary
184(1)
8 Software Package Recipes 185(40)
8.1 Recipe Layout and Conventions
185(11)
8.1.1 Recipe Filename
186(1)
8.1.2 Recipe Layout
186(9)
8.1.3 Formatting Guidelines
195(1)
8.2 Writing a New Recipe
196(16)
8.2.1 Establish the Recipe
198(1)
8.2.2 Fetch the Source Code
199(1)
8.2.3 Unpack the Source Code
200(1)
8.2.4 Patch the Source Code
201(1)
8.2.5 Add Licensing Information
201(1)
8.2.6 Configure the Source Code
202(1)
8.2.7 Compile
203(1)
8.2.8 Install the Build Output
204(2)
8.2.9 Setup System Services
206(1)
8.2.10 Package the Build Output
207(3)
8.2.11 Custom Installation Scripts
210(1)
8.2.12 Variants
211(1)
8.3 Recipe Examples
212(6)
8.3.1 C File Software Package
212(1)
8.3.2 Makefile-Based Software Package
213(2)
8.3.3 CMake-Based Software Package
215(1)
8.3.4 GNU Autotools-Based Software Package
216(1)
8.3.5 Externally Built Software Package
217(1)
8.4 Devtool
218(6)
8.4.1 Round-Trip Development Using Devtool
219(4)
8.4.2 Workflow for Existing Recipes
223(1)
8.5 Summary
224(1)
8.6 References
224(1)
9 Kernel Recipes 225(36)
9.1 Kernel Configuration
226(5)
9.1.1 Menu Configuration
227(1)
9.1.2 Configuration Fragments
228(3)
9.2 Kernel Patches
231(2)
9.3 Kernel Recipes
233(18)
9.3.1 Building from a Linux Kernel Tree
234(4)
9.3.2 Building from Yocto Project Kernel Repositories
238(13)
9.4 Out-of-Tree Modules
251(6)
9.4.1 Developing a Kernel Module
251(3)
9.4.2 Creating a Recipe for a Third-Party Module
254(2)
9.4.3 Including the Module with the Root Filesystem
256(1)
9.4.4 Module Autoloading
257(1)
9.5 Device Tree
257(1)
9.6 Summary
258(1)
9.7 References
259(2)
10 Board Support Packages 261(40)
10.1 Yocto Project BSP Philosophy
261(4)
10.1.1 BSP Dependency Handling
263(2)
10.2 Building with a BSP
265(12)
10.2.1 Building for the BeagleBone
265(7)
10.2.2 External Yocto Project BSP
272(5)
10.3 Inside a Yocto Project BSP
277(5)
10.3.1 License Files
279(1)
10.3.2 Maintainers File
279(1)
10.3.3 README File
279(1)
10.3.4 README. sources File
280(1)
10.3.5 Prebuilt Binaries
280(1)
10.3.6 Layer Configuration File
280(1)
10.3.7 Machine Configuration Files
280(1)
10.3.8 Classes
281(1)
10.3.9 Recipe Files
281(1)
10.4 Creating a Yocto Project BSP
282(7)
10.4.1 Yocto Project BSP Tools
282(4)
10.4.2 Creating a BSP with the Yocto Project BSP Tools
286(3)
10.5 Tuning
289(1)
10.6 Creating Bootable Media Images
290(9)
10.6.1 Creating an Image with Cooked Mode
292(1)
10.6.2 Creating an Image with Raw Mode
292(1)
10.6.3 Kickstart Files
293(2)
10.6.4 Kickstart File Directives
295(2)
10.6.5 Plugins
297(1)
10.6.6 Transferring Images
298(1)
10.7 Summary
299(1)
10.8 References
299(2)
11 Application Development 301(34)
11.1 Inside a Yocto Project ADT
302(2)
11.2 Setting Up a Yocto Project ADT
304(11)
11.2.1 Building a Toolchain Installer
304(1)
11.2.2 Installing the Toolchain
305(2)
11.2.3 Working with the Toolchain
307(3)
11.2.4 On-Target Execution
310(1)
11.2.5 Remote On-Target Debugging
311(4)
11.3 Building Applications
315(2)
11.3.1 Makefile-Based Applications
315(1)
11.3.2 Autotools-Based Applications
316(1)
11.4 Eclipse Integration
317(14)
11.4.1 Installing the Eclipse IDE
317(2)
11.4.2 Integrating a Yocto Project ADT
319(2)
11.4.3 Developing Applications
321(2)
11.4.4 Deploying, Running, and Testing on the Target
323(8)
11.5 Application Development Using an Emulated Target
331(2)
11.5.1 Preparing for Application Development with QEMU
331(2)
11.5.2 Building an Application and Launching It in QEMU
333(1)
11.6 Summary
333(1)
11.7 References
334(1)
12 Licensing and Compliance 335(10)
12.1 Managing Licenses
335(6)
12.1.1 License Tracking
337(1)
12.1.2 Common Licenses
338(1)
12.1.3 Commercially Licensed Packages
339(1)
12.1.4 License Deployment
340(1)
12.1.5 Blacklisting Licenses
340(1)
12.1.6 Providing License Manifest and Texts
341(1)
12.2 Managing Source Code
341(2)
12.3 Summary
343(1)
12.4 References
344(1)
13 Advanced Topics 345(32)
13.1 Toaster
345(13)
13.1.1 Toaster Operational Modes
346(1)
13.1.2 Toaster Setup
347(1)
13.1.3 Local Toaster Development
348(1)
13.1.4 Toaster Configuration
349(2)
13.1.5 Toaster Production Deployment
351(5)
13.1.6 Toaster Web User Interface
356(2)
13.2 Build History
358(8)
13.2.1 Enabling Build History
358(1)
13.2.2 Configuring Build History
359(1)
13.2.3 Pushing Build History to a Git Repository Server
360(1)
13.2.4 Understanding the Build History
361(5)
13.3 Source Mirrors
366(2)
13.3.1 Using Source Mirrors
366(2)
13.3.2 Setting Up Source Mirrors
368(1)
13.4 Autobuilder
368(6)
13.4.1 Installing Autobuilder
369(1)
13.4.2 Configuring Autobuilder
370(4)
13.5 Summary
374(1)
13.6 References
375(2)
A Open Source Licenses 377(26)
A.1 MIT License (MIT)
377(1)
A.2 GNU General Public License (GPL) Version 2
378(6)
A.3 GNU General Public License (GPL) Version 3
384(13)
A.4 Apache License Version 2.0
397(6)
B Metadata Reference 403(26)
Index 429
Rudolf J. Streif has more than twenty years of experience in software engineering as a developer and as a manager leading cross-functional engineering teams with more than one hundred members. He previously served as the Linux Foundation's Director of Embedded Solutions, coordinating the Foundation's efforts for Linux in embedded. Rudolf developed the Linux Foundation's training course on the Yocto Project, which he delivered multiple times to companies and in a crash course variant during Linux Foundation events. He lives in El Cajon, California.