Skip to main content
main-content
Top

About this book

This easy-to- follow textbook/reference guides the reader through the creation of a fully functional embedded operating system, from its source code, in order to develop a deeper understanding of each component and how they work together. The text describes in detail the procedure for building the bootloader, kernel, filesystem, shared libraries, start-up scripts, configuration files and system utilities, to produce a GNU/Linux operating system. This fully updated second edition also includes new material on virtual machine technologies such as VirtualBox, Vagrant and the Linux container system Docker.

Topics and features: presents an overview of the GNU/Linux system, introducing the components of the system, and covering aspects of process management, input/output and environment; discusses containers and the underlying kernel technology upon which they are based; provides a detailed examination of the GNU/Linux filesystem; explains how to build an embedded system under a virtual machine, and how to build an embedded system to run natively on an actual processor;introduces the concept of the compiler toolchain, and reviews the platforms BeagleBone and Raspberry Pi; describes how to build firmware images for devices running the Openwrt operating system.

The hands-on nature and clearly structured approach of this textbook will appeal strongly to practically minded undergraduate and graduate level students, as well as to industry professionals involved in this area.

Table of Contents

Chapter 1. Introduction

Abstract
Most people are familiar with general purpose computing devices, such as desktops and laptops. Their use is common-place and supports a wide variety of applications, many of which involve a wider access to distributed applications over the Internet (electronic mail, social media etc.). Users interact with general purpose computers directly through keyboards, mice and monitor screens. There are many consumer devices, such as mobile phones, tablet computers and satellite navigation devices, that are classified as embedded devices. They support user interaction through touch screens, microphones, audio speakers and accelerometers.
Alan Holt, Chi-Yu Huang

Chapter 2. Overview of GNU/Linux

Abstract
A full GNU/Linux distribution will also include a large collection of application software (email clients, web browsers, database management systems, compilers, for example) but for the purposes of this chapter, we focus on the four components listed above.
Alan Holt, Chi-Yu Huang

Chapter 3. Containers

Abstract
Containers are a form of operating system virtualisation but, unlike virtual machines, they do not virtualise the underlying hardware and are, therefore, less resource intensive than a full virtual machine.
Alan Holt, Chi-Yu Huang

Chapter 4. The Filesystem  in  Detail

Abstract
Persistent data is stored in files. Files may contain text, database records, source code or executable instructions, but as far as the kernel is concerned, the content of a file is merely an unstructured byte stream. Files are organised in directories.
Alan Holt, Chi-Yu Huang

Chapter 5. Building an Embedded System (First Pass)

Abstract
In this chapter and the next (Chap. 6) we show how to build embedded GNU/Linux systems. This chapter is a first pass. We use various tools to generate the software components so that we can focus on the structure of the system rather than the details. In Chap. 6 (second pass), we cover the topic in greater depth and construct a system from the source code.
Alan Holt, Chi-Yu Huang

Chapter 6. Building an Embedded System (Second Pass)

Abstract
In the previous chapter we showed how to build an embedded system which ran in a virtual machine. We will refer to this system as the “deb” system to distinguish it from the embedded system described in this chapter.
Alan Holt, Chi-Yu Huang

Chapter 7. Compiler Toolchains

Abstract
Most software is written in a high level programming language such as C, Java, Perl or Python. High-level languages comprise machine independent instructions which cannot be directly executed by the processor.
Alan Holt, Chi-Yu Huang

Chapter 8. Embedded ARM Devices

Abstract
ARM is a family of RISC (reduced instruction set computing) processors that are used extensively in the mobile device market.
Alan Holt, Chi-Yu Huang

Chapter 9. Openwrt

Abstract
Openwrt is a GNU/Linux distribution for embedded systems. However, it is not merely a static firmware image, it is a complete framework for building customised firmware images.
Alan Holt, Chi-Yu Huang
Additional information