The Linux Fast Boot course provides engineers with a fast, cost-effective way to acquire the skills necessary to improve startup times in their customized Linux devices.
After this course, participants will be able to perform the following:
- Describe how a Linux device boots
- Measure latencies at various stages of the boot cycle
- Make design decisions that improve boot time
- Modify kernel and bootloader source
- Modify user-space initialization scripts
- Optimize a device to improve boot times
- Wind RiverĀ® Linux 3.0.2 and common Linux technologies
- Platform developers who intend to develop a Linux-based device
- Developers interested in maximizing the initial end user perception of their device
- Developers using Wind River Linux or other Linux variants
Day 1
Overview of Linux Boot Sequence
- Introduction
- Boot time terminology
- Boot time contributors
- Hardware initialization
- Boot loader
- Linux kernel initialization
- User-space initialization
- Application initialization
- LAB: Development environment
User-Space and Application Initialization
- Overview
- Init
- Role of init in booting
- Device nodes
- Modules
- File systems
- Services
- Implementing init
- Sysvinit
- Event-based init systems
- Dependency-based init systems
- Systemd
- Busybox init
- Roll-your-own init
- Profiling techniques
- Bootchart
- Process profiling
- Optimization techniques
- Readahead
- Static linking
- Prelinking
- Compiler and toolchain tricks
- LAB: Profiling and optimizing user-space initialization
Day 2
Linux Kernel Initialization
- Overview
- Kernel command line
- System services and drivers
- Root file system
- initRAMfs
- In-place file systems
- Read-only file systems
- Profiling techniques
- Optimization techniques
- LAB: Profiling and optimizing Linux kernel initialization
Boot Loader
- Overview
- Stages of boot loading
- Loading the kernel
- Initial RAM disks
- Profiling techniques
- Optimization techniques
- LAB: Profiling and optimizing boot loader
Prerequisite Courses
Prerequisite Skills
- Familiarity with the Linux kernel
- Familiarity with embedded systems
- C programming experience on Linux/UNIX
- Experience working with shell scripts and makefiles