Table Of Contents:
Contents
This page has information about reducing bootup time for a Linux system. This is of interest to CE Linux Forum members, because customers expect CE products to be usable very soon after system startup.
CELF Technology/Project pages
The following are individual pages with information about various technologies relevant to improving bootup time for Linux. Some of these describe local patches available on this site. Others point off to projects or patches maintained elsewhere.
Technologies for Measuring Bootup Time
PrintkTimes - simple system for showing timing information for each printk
KernelFunctionTrace - system for reporting function timings in the kernel
LinuxTraceToolkit - system for reporting timing data for certain kernel and process events
Technologies and Techniques for Reducing Bootup Time
DisableConsole - Avoid overhead of console output during system startup.
RTCNoSync - Avoid delay to synchronize system time with RTC clock edge, on startup
ShortIDEDelays - Reduce duration of IDE startup delays (This is effective but possibly dangerous.)
KernelXIP - Allow kernel to be executed in-place in ROM or FLASH
IDENoProbe - Force kernel to observe the ide<x>=noprobe option
PresetLPJ - Allow the use of a preset loops_per_jiffy value
ThreadedDeviceProbing - Allow drivers to probe devices in parallel
ApplicationXIP - Allow programs and libraries to be executed in-place in ROM or FLASH
PreLinking - Avoid cost of runtime linking on first program load
OptimizeRCScripts - Reduce overhead of running RC scripts
DmaCopyOfKernelOnStartup - Copy kernel from Flash to RAM using DMA
ParallelRCScripts - Run RC scripts in parallel instead of sequentially
ApplicationInitOptimizations - Improvements in program load and init time via 1) use of mmap vs. read and 2) control over page mapping characteristics
Information
BootupTimeDefinitionOfTerms - definitions of terms used by the CELF Bootup Time working group
KernelInstrumentation - lists some known kernel instrumentation tools. These are of interest for measuring kernel startup time.
FilesystemInformation - information about bootup times with various file systems
- in progress - BootupTimeReductionHowto - this is a project to catalog existing bootup time reduction techniques. Work on this project is under way. The wiki will serve as the primary repository of information gathered for this project.
- no content yet - BootupTimeDelayTaxonomy - list of delays categorized by boot phase, type and magnitude
Case Studies
Samsung proof-of-acceptability study for digital still camera: see LinuxBootupTimeReduction4DSC.ppt
- Tim Bird's (Sony) survey of bootup time reduction techniques:
Methods to Improve Bootup Time in Linux - Paper prepared for 2004 Ottawa Linux Symposium
Reducing Startup Time in Embedded Linux Systems - Presentation describing some existing bootup time reduction techniques and strategies.
Additional Projects/Mailing Lists/Resources
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: http://developer.osdl.org/andyp/kexec/whitepaper/kexec.pdf
2004 Kernel Summit presentation: http://www.xenotime.net/linux/fastboot/fastboot-ks-2004.pdf
- here's another Kexec white paper:
http://www-106.ibm.com/developerworks/linux/library/l-kexec.html?ca=dgr-lnxw04RebootFast
Others
http://www.bootsplash.org/ - technology to put up a splash screen early in boot sequence
http://dev.gentoo.org/~spock/projects/gensplash/ - newer technology to put a a splash screen early in the boot sequence
see the HOWTO at: http://gentoo-wiki.com/HOWTO_fbsplash
http://www.linuxdevices.com/news/NS5907201615.html - press release by FSMLabs about fast booting of their product. Is any of this published?
Boot Chart - http://www.bootchart.org/ - Bootchart is 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.
