Boot Time

This page has information about reducing boot-up time for a Linux system. This is of interest for many embedded developers, because for many products customers expect to be able to use them very soon after system startup.

Technology/Project Pages
The following are individual pages with information about various technologies relevant to improving boot-up time for Linux. Some of these describe local patches available on this site. Others point to projects or patches maintained elsewhere.

Measuring Boot-up Time

 * Printk Times - simple system for showing timing information for each printk.
 * Kernel Function Trace - system for reporting function timings in the kernel.
 * Linux Trace Toolkit - system for reporting timing data for certain kernel and process events.
 * Oprofile - system-wide profiler for Linux.
 * Bootchart - a tool for performance analysis and visualization of the Linux boot process. Resource utilization and process information are collected during the user-space portion of the boot process and are later rendered in a PNG, SVG or EPS encoded chart.
 * Bootprobe - a set of System Tap scripts for analyzing system bootup.
 * and, let us not forget: "cat /proc/uptime"

Bootloader speedups

 * Kernel XIP - Allow kernel to be executed in-place in ROM or FLASH.
 * DMA Copy Of Kernel On Startup - Copy kernel from Flash to RAM using DMA

Kernel speedups

 * Disable Console - Avoid overhead of console output during system startup.
 * RTC No Sync - Avoid delay to synchronize system time with RTC clock edge on startup.
 * Short IDE Delays - Reduce duration of IDE startup delays (this is effective but possibly dangerous).
 * Hardcode kernel module info - Reduce the overhead of loading a module, by hardcoding some information used for loading the relocation information
 * IDE No Probe - Force kernel to observe the ide=noprobe option.
 * Preset LPJ - Allow the use of a preset loops_per_jiffy value.
 * Threaded Device Probing - Allow drivers to probe devices in parallel.

User-space and application speedups

 * Optimize RC Scripts - Reduce overhead of running RC scripts
 * Parallel RC Scripts - Run RC scripts in parallel instead of sequentially
 * Application XIP - Allow programs and libraries to be executed in-place in ROM or FLASH
 * Pre Linking - Avoid cost of runtime linking on first program load
 * GNU_HASH: ~ 50% speed improvement in dynamic linking
 * See http://sourceware.org/ml/binutils/2006-06/msg00418.html
 * Application Init Optimizations - Improvements in program load and init time via:
 * use of mmap vs. read
 * control over page mapping characteristics.

Information

 * Boot-up Time Definition Of Terms - definitions of terms
 * Kernel Instrumentation - lists some known kernel instrumentation tools. These are of interest for measuring kernel startup time.
 * Filesystem Information - information about boot-up times with various file systems
 * [[Image:alert.gif]] in progress - Boot-up Time Reduction Howto - this is a project to catalog existing boot-up time reduction techniques. Work on this project is under way.  The wiki will serve as the primary repository of information gathered for this project.
 * [[Image:alert.gif]]no content yet - Boot-up Time Delay Taxonomy - list of delays categorized by boot phase, type and magnitude

Articles

 * Optimizing Linker Load Times
 * (introducing various kinds of bootuptime reduction, prelinking, etc.)

Case Studies

 * Samsung proof-of-acceptability study for digital still camera: see [[Media:LinuxBootupTimeReduction4DSC.ppt|Boot Up Time Reduction PPT]]
 * Tim Bird's (Sony) survey of boot-up time reduction techniques:
 * Methods to Improve Boot-up Time in Linux - Paper prepared for 2004 Ottawa Linux Symposium
 * - December 2003 Presentation describing some existing boot-up time reduction techniques and strategies.

Kexec

 * Kexec is a system which allows a system to be rebooted without going through BIOS. That is, a Linux kernel can directly boot into another Linux kernel, without going through firmware. See the white paper at: kexec.pdf
 * 2004 Kernel Summit presentation: fastboot.pdf
 * here's another Kexec white paper:Reboot Fast

Others
embedded Linux devices supporting a 16bpp or 32bpp framebuffer.
 * bootspash.org - technology to put up a splash screen early in boot sequence
 * Gentoo Splashscreen - newer technology to put a splash screen early in the boot sequence
 * see the HOWTO at: HOWTO FBSplash
 * PSplash - PSplash is a userspace graphical boot splash screen for mainly
 * FSMLabs Fastboot - press release by FSMLabs about fast booting of their product. Is any of this published?


 * snapshot boot - a technology uses software resume to boot up the system quickly.