Super Fast Boot of Embedded Linux

300 milliseconds

from boot loader to shell

on 720 MHz ARM with NAND flash

Make Linux Software presents the fastest ever embedded Linux boot for 720 MHz ARM and NAND flash memory. The first goal of the project is to achieve a minimal boot time of a minimal but functional Linux system on common hardware. The second goal is to provide a platform for developing more functional systems with shortest possible boot time.

Boot log with timestamps

The first number is elapsed time since first message, the second is is elapsed time since previous message. Measurement deviation is 50 ms.
0.000 0.000: TI X-Loader 1.4.4ss Mar 26 2011 01:45:43 
0.000 0.000: Optimised by www.MakeLinux.com
0.000 0.000: Loading 
0.237 0.237: Running 
0.237 0.000: CFG_LOADADDR=80008000 
0.249 0.012: *(int*)CFG_LOADADDR=e321f0d3 
0.276 0.027: Linux version 2.6.32 (const@makelinux.com) 
0.276 0.000: Starting application 
0.296 0.020: BusyBox v1.16.2 hush - the humble shell 

Boot analysis

• Logging starts at 70 ms from reset. Boot time from reset is 300 + 70 = 370 ms.
• Logging starts at 330 ms from power on. Cold boot time is 330 + 300 = 630 ms.
• Loading of 1.5 MiB Linux image from NAND takes 237 ms with throughput 6 MiB/s.
• Code execution takes 60 ms or 43M CPU cycles. (For other CPU frequency execution time is different, but number of processor cycles is the same)
• The most time consuming operation is coping firmware from NAND flash.

Hardware summary

• Board: BeagleBoard
• Processor: 720 MHz ARM Cortex-A8 OMAP3530
• NAND flash K9F1G08R0A

Software summary

• Boot loader: optimized x-loader, without u-boot
• Kernel: linux-2.6.32 from DVSDK 3.01 with minimal configuration, size is about 900K
• Application: Statically compiled BusyBox v1.16.2 with hush - the humble shell, size is 600K
• The root filesystem is included in the kernel image
• The size of the kernel and the filesystem put together is 1.5MiB

Summary of optimization methods

• Reduction of kernel and filesystem size
• Kernel features: naked boot, initrd without compression
• Optimization of NAND flash interface in boot loader
• Boot time was measured with utility tstamp
• You can find more detailed list of methods at http://elinux.org/Boot Time
Techniques for improving embedded Linux startup time, presentation, MontaVista

Discussion @ LWN
An article @ LinuxForDevices

If you would like to evaluate binary images of the fast boot or you are willing to implement fast boot to your product please contact const@makelinux.com

  Linux┬« is the registered trademark of Linus Torvalds in the U.S. and other countries.