Achieving Faster Linux Boot Time: 2013 Version

Some things change, some do not

Recently I had an opportunity to present a technical session titled “Achieving Faster Boot Time with Linux”.  As I reviewed my slides for the last time before the session, it dawned on me that much of what I was about to present was little changed over the last few years.  I gave a similar presentation at Freescale Technology Forum several years ago.

Over the last few years, many elements of a basic embedded Linux system have either evolved, been replaced or are downright new.  Some examples of this rapid evolution of technology include the following:

  • Migration away from System V init to the more performance-oriented systemd initialization system
  • udev being rolled into systemd
  • Linux kernels starting with the major version number 3 instead of 2
  • Multi-core processors are now commonplace in embedded Linux devices rather than exceptional
  • UBI/UBIFS has largely displaced JFFS2 as the embedded Flash file system of choice

The list of things that are new or different could fill the rest of this page. But what struck me as I reviewed my slides was that much of what I described at the FTF event several years ago was still very relevant today.

One of the primary messages then and now is still true.  Linux boot time can be dramatically improved without substantial engineering effort.  Several of the techniques I presented are easy to achieve and don’t require extraordinary skill or super human effort.  Some techniques are tedious and may take some trial and error, such as reducing unnecessary features and device drivers in the Linux kernel.  But many are easy to apply and result in significant improvement in boot time.

Optimizing U-Boot requires at least some knowledge of U-Boot’s architecture and build system, but anyone competent in boot-style firmware can make quick progress reducing U-Boot’s footprint and thus reducing load and execution time.

Of course, achieving very aggressive Linux boot times down in the 1-2 second range or less requires advanced techniques and substantial skill in many aspects of Linux systems.  Each architecture and platform presents unique challenges.  Mentor Embedded has developed significant experience building fast boot Linux systems, using a variety of interesting techniques and technologies.  Many of these techniques and technologies can be found in production vehicles today.

Attached to this blog post is a link of the presentation I gave at the IESF 2013 event in Detroit this year.  Several attendees asked for a copy so I thought I’d post it here:

Post Author

Posted September 24th, 2013, by

Post Tags

Post Comments


About The Chris Hallinan Blog

Mentor Embedded’s Open Source Experts discuss recent happenings in the Embedded Open Source world. The Chris Hallinan Blog


2 comments on this post | ↓ Add Your Own

Commented on September 24, 2013 at 1:50 pm
By Alexandre Belloni

Hi Christopher,

Something you didn’t mention, is that you can also skip the whole bootloader. This is possible on platforms with a smart enough boot rom (e.g. Freescale and Marvell).
The Freescale boot rom is quite good and is capable of loading a kernel from SDcard at full speed.

Without wanting to advertise myself, you can have a look at my talk at ELCE and Automotive Linux Summit. The code is under GPL:

Commented on September 24, 2013 at 2:33 pm
By Christopher Hallinan

Hi Alexandre,
Thanks for reading and commenting. I actually had a slide explaining an abbreviated boot, showing the i.mx6 skipping several stages of the “typical” boot sequence, but they only gave me 30 minutes, and I had to cut many slides out of my presentation!! I will be presenting an expanded version in an upcoming webinar on October 9th, where I will have a chance to show the entire presentation. You can register for the event here:–techniques-for-aggressive-boot-time-reduction

I will be attending ELC-E and I’ll be sure to attend your presentation and introduce myself!! And I’m happy to post your presentation link!!


Add Your Comment