First Session
Linux overview
- Linux
- History
- Version management
- Linux architecture and modularity
- Linux system components
- The various licenses used by Linux (GPL, LGPL, etc)
Cross compiling toolchains
- Pre-compiled toolchains
- Toolchain generation tools
- Manual toolchain compilation
Exercise: |
Creating a toolchain with crosstool-ng |
Linux tools for embedded systems
- Bootloaders (UBoot, Redboot, barebox)
- C libraries (glibc, eglibc, uClibc)
- Embedded GUIs
- Busybox
- Embedded distributions
The U-Boot bootloader
- Introduction to U-Boot
- Booting the board through U-Boot
- Booting from NOR
- Booting from NAND
- Booting from eMMC
- Multistage Boot
- Secure Boot
- U-Boot environment variables
- User-defined variables
- Predefined variables
- Variables substitution
- The U-Boot minimal shell
- U-Boot main commands
- Booting an OS
- Accessing flash chips
- Accessing file systems (NFS, FAT, EXTx, JFFS2…)
- The full U-Boot shell
- Script structure
- Control flow instructions (if, for…)
Exercise: |
Booting the board on NFS, using pre-existing images |
Second Session
Creating the embedded Linux kernel
- Downloading stable source code
- Getting a tarball
- Using GIT
- Configuring the kernel
- Compiling the kernel and its modules
- Modules delivered in-tree
- Out-of-tree modules
- Installing the kernel and the modules
- The Linux BSP overview
- Structure
- Device Drivers
- Device Tree
Exercise: |
Configuring and compiling a target kernel for the target board |
Creating a root file system
- Packages
- Various package build systems (autotools, CMake, …)
- Cross-compiling a package
- The all-in-one applications
- Busybox, the basic utilities
- Dropbear: encrypted communications (ssh)
- Manually building your root file system
- Device nodes, programs and libraries
- Configuration files (network, udev, …)
- Installing modules
- Looking for and installing the needed libraries
- Testing file system consistency and completeness
Exercise: |
Configuring and compiling Busybox and Dropbear |
Exercise: |
Creating a minimal root file system using busybox and dropbear |
The Linux Boot
- Linux kernel parameters
- The Linux startup sequence
- Various initialization systems
- busybox init
- system V init
- systemd
- Automatically starting an embedded system
Exercise: |
Boot Linux automatically starts a user application |
Updating Linux
Appendix
Embedded file systems
- Storage interfaces
- Flash memories and Linux MTDs
- NOR flashes
- NAND flashes
- ONENAND flashes
- The various flash file system formats
- Read-only file system
- Standard Linux file systems
- Ramdisks and initrd
- Creating an initramfs
- Booting through an initramfs
- Choosing the right file system formats
- Flashing the file system
Exercise: |
Building an initrd root file system |