Boot Strap

The term derives from the phrase to pull oneself up by one's bootstraps.

At one time this had a very specific meaning wrt computers: If only the OperatingSystem were in RAM, it would be easy to tell it to load and run the OperatingSystem into memory and run it. But if the OperatingSystem were already in RAM and running, then we wouldn't need to load and run it.

Originally people entered a (a "loader"?) program: 16 or so (?) instructions by hand, in binary, using switches, that were barely enough to load the OperatingSystem off the first track of the disk and start running it.

Later those 16 or so instructions were stored in ReadOnlyMemory, and people eventually threw in a few more utility routines into that ROM that became the BIOS ROM (BasicInputOutputSystem?).

To load the loader, you needed a three instruction program. You would enter those instructions by hand in binary using switches and press the run button. The computer would load the loader, then the loader would load the OperatingSystem and you were off.


The term "boot", as in to boot or reboot a computer, comes from bootstrap.

The other common usage of the term bootstrap is in describing the generating of a new compiler; the www.foldoc.org definition is terse (the quote from Foldoc is all in bold now, since there was ambiguity previously as to which part was quoted):

2. <compiler> (From "to pull oneself up by one's bootstraps") to use a compiler to compile itself.

The term also applies to the use of a compiler to compile itself. The usual process is to write an interpreter for a language, L, in an existing language, M. The compiler is then written in L and the interpreter is used to run it. This produces an executable for compiling programs in L from the source of the compiler in L.

This technique is often used to verify the correctness of a compiler. It was first used in the LISP community.

However the term "bootstrap" can apply to similar processes regardless of whether interpreters-only, compilers-only, or a mix, are used.


The widely used "rc" in Unix startup files such as .cshrc, .tcshrc, .bashrc, .exrc, .wgetrc, .xtalkrc, etc (a convention which began at Bell Labs in the 1970s, BTW), is often thought to abbreviate "Reboot Commands", but this was definitively refuted in the early 1980s; the "rc" stands for simply "Run Commands", a term which may have Multics roots; I've forgotten that part of the history.

I thought it meant "run control".


I'm using "Bootstrapping" to refer to coding similar to TestDrivenDevelopment that one must do before one can figure out how to test anything relevant. TDD calls this a LearnerTest?. -- PhlIp

Yes - contrary to the narrower older definitions on Foldoc, for a long time "bootstrap" has been generalized to mean "to bring up new code/a project for the first time", although there are inherent connotations of ChickenAndEggProblem in such usages; it would be a mis-use to say "bootstrapping" in reference to something that is trivial to start up. For instance, one most definitely does not "bootstrap" when one starts a directory listing with command line "ls" or "dir". The "which came first, the chicken or the egg" paradox is at the heart of the meaning of "bootstrap" in all its usages. -- dm
See WittgensteinsLadder
CategoryJargon CategoryOperatingSystem

EditText of this page (last edited June 25, 2010) or FindPage with title or text search