Boot time optimization for embedded devices
summary
Switching gzip to LZ4 for kernel and initrd decompression saves roughly 0.5–1s on modern flash, and stripping module debug symbols cuts several seconds from module load and decompression time. Ensuring bootloader sets CPU and DDR/interconnect frequencies avoids slowdowns from mismatched big/little cores. Enable probe ordering via firmware devlink and use driver_async_probe=star or module_async_probe=1* to halve kernel init (900 ms → 450 ms reported). Load large firmware on demand and prefer parallel module loading with a precomputed ordered list.
AI-written summary · about
chapters (22)
- 0:00Introduction to boot time
- 1:42Compression algorithm choice
- 2:25CPU and hardware frequencies
- 4:13Big vs little CPU performance
- 6:19Firmware devlink and dependencies
- 8:47Asynchronous driver probing
- 10:14Parallel module loading
- 13:46Module loading order
- 16:57Stripping debug symbols
- 19:48Reducing driver logging
- 21:12Firmware loading timing
- 21:55Postponing non-critical modules
- 23:20Fully modular kernel benefits
- 24:01Bootloader and kernel interactions
- 26:13Falcon boot mode
- 26:36Modularizing clocks and regulators
- 28:08Bootloader bloat issues
- 29:13Vendor boot code trends
- 29:55Async probing default plans
- 31:19Device dependency ordering
- 32:03Bootloader to kernel handoff
- 32:47Q&A and wrap-up
related talks
21mAccelerating Boot Time: Lessons from a New Platform
42mBooting Automotive ECUs Really Fast with Modern Security Features
48mUnified Boot Time Measurement: A Precise, Scalable Framework for Multi-Processor Systems
49mEmbedded Linux BOF
35mMake Your System Firmware Faster, More Flexible and Reliable with LinuxBoot
38mImproving Embedded Systems Boot Time by Hibernation
46mStatus of Embedded Linux
39mBootloaders 101: How Do Embedded Processors Start?
