Francais | English | Espanõl

Bootstrapping (computing)

From Wikipedia, the free encyclopedia

Jump to: navigation, search

In computing, Bootstrapping refers to a process where a simple system activates another more complicated system that serves the same purpose. It is a solution to the Chicken-and-egg problem of starting a certain system without the system already functioning. The term is most often applied to the process of starting up a computer, in which a mechanism is needed to execute the software program that is responsible for executing software programs (the Operating system).

The term "bootstrapping" alludes to a German legend about Baron Münchhausen, who was able to lift himself out of a swamp by pulling himself up by his own hair. In later versions he was using his own boot straps to pull himself out of the sea which gave rise to the term bootstrapping [citation needed]. The term is believed to have entered computer jargon during the early 1950's by way of Heinlein's short story By His Bootstraps first published in 1941 [citation needed].

Contents

[edit] Booting

Bootstrapping was shortened to booting, or the process of starting up any computer, which is the most common meaning for non-technical computer users. The verb "boot" is similarly derived.

A "Bootstrap" most commonly refers to the simple program itself that actually begins the initialization of the computer's operating system, like GRUB, LILO or NTLDR. Modern personal computers have the ability of using their network interface card (NIC) for bootstrapping; on IA-32(x86) and IA-64 (Itanium) this method is implemented by PXE and Etherboot.

[edit] Software Bootstrapping

Bootstrapping can also refer to the development of successively more complex, faster programming environments. The simplest environment will be, perhaps, a very basic text editor (e.g. ed) and an assembler program. Using these tools, one can write a more complex text editor, and a simple compiler for a higher-level language and so on, until one can have a graphical IDE and an extremely high-level programming language.

Historically, bootstrapping also refers to early computer program development which has been obsoleted by emulation software now executed in pre-existing computers. Bootstrapping in program development began during the 1950's when each program was constructed on paper in decimal code or in binary code, bit by bit (1's and 0's), because there was no high-level computer language, no compiler, no assembler, and no linker. A tiny assembler program was written for a new computer (for example the IBM 650) which converted a few instructions into binary or decimal code. This assembler program was then rewritten in its own assembly language that included additional alphabetic mnemonic operation codes. The enlarged assembly program then reassembled itself into binary or decimal code, and so on, until the entire instruction set was coded and branch addresses were automatically calculated. This was how the early assembly program SOAP (Symbolic Optimal Assembly Program) was developed. Compilers, linkers, loaders, and utilities were then coded in assembly language, further continuing the bootstrapping process of developing complex software systems by using simpler software.

For more detail, see booting

[edit] Compiler Bootstrapping

In compiler design, a bootstrap or bootstrapping compiler is a compiler that is written in the target language, or a subset of the language, that it compiles. Examples include gcc, GHC, OCaml, BASIC, PL/I and more recently the Mono C# compiler.

For more detail, see Bootstrapping (compilers)

[edit] paper

Original HTML File for Bootstrap

Bootstrap programs

By: Michael Chrisco

Mesamunefire@aol.com


1. Abstract


The purpose of this paper is to provide information on bootstrap programs in computer systems and their applications. Bootstrap programs were discussed in relation to the hardware and loading of the operating system that the computer may be using. Windows, Macintosh, and Linux based systems were discussed as well as potential good and bad points for each. Also, the GRUB boot loading process was discussed and how it affects other bootstrap programs. Negative sides were discussed about the whole process that includes the partitioning of the hard drive.


2. Introduction


Computers need some way to communicate with a user. This is done with a keyboard mouse and in some cases a touch screen. The thing that makes this interface easy is called the operating system. There are three major operating systems that are the most widely used. These operating systems are Windows, Macintosh, and Linux. There is a problem though, how do you load an operating system? This is where Bootstrap programs or Bootstrap loaders come into play. They are miniature programs that load bigger programs or operating systems to be used by the computer and user together. These programs are very important to loading and execution of the operating system. Without the bootstrap loader, the operating system would not function and the user would not be able to communicate to the computer correctly.


3. Background information


A. Name


The name bootstrap came from a loop of leather or cloth that pulled up old cowboy boots. [1] The process of pulling the boot up by the bootstrap became popular and now is used in reference to many things. Businesses, government, computer companies, and many more organizations use this term in their everyday operation. [2] The way that it is always use is to pull something up that is big by something that is relatively small.


B. Starting up:


When you start up your computer, what do you see? On most computers, a start up process will be either seen with each protocol able to be seen by the user or a bar that shows that the bootstrap program is being loaded and is preparing to get the operating system to load.


Basically what the bootstrap loader does is looks for other programs and loads them to create the operating system. It looks like figure 3.1:

Figure 3.1 Image:Bootstrap1.jpg

There are ways of configuring this process by a special key that most bootstrap programs will have pre-configured. On the B130 Dell inspiron laptop system the key you have to press is F12. This screen is what the computer bootstrap loader locates the hardware and what can or can’t happen when the operating system is loaded. [3]


C. Background:


Now you may be asking, were is the bootstrap program located at on the computer? In order to answer this question, you have to know the basics about hard drives. On computers, the hard drive has a certain amount of memory. The amount of total memory that is available on each computer is different from computer to computer but that doesn’t matter to bootstrap programs. The important thing is that the hard drives are divided into what are called partitions. These are parts of the hard drive that has been sectioned off for a certain operation. Most of the time, the operations are the operating systems that the computer can work with. You can think of this whole process like a pie. The hard drive gets split up into pieces (partitions) and the operating system gets loaded depending on which operating system you want to use. Figure 3.2 takes a look at what this process looks like. [4]

Image:Bootstrap2.jpg


If you know anything about computers you may know that the operating system usually has a loading screen just like figure 3.3. [5]

Image:Bootstrap3.png


You may have asked yourself at one time why people where obsessed with how much RAM (or Random Access Memory) they have on their computers but never quite understood this. The reason that RAM is important to a computer is that these little black chips that you can see in figure 3.5 actually hold the operating system. The problem is that whenever you shut off the computer, the operating system disappears from the RAM altogether. This deletion when the power is turned off is called volitile. [[6]

Image:Bootstrap4.jpg [7]


So how does the operating system get there in the first place? There is a bootstrap file that is loaded after the initial hardware is booted up. This bootstrap file loades the operating system onto the RAM and lets the user use the operating system. On most computers there is only one operating system that loads at the beginning of this whole process. Windows, Macintosh, and even Linux usually come with their own bootstrap loader for this second process. What normally happens is that the bootstrap loader that comes with most operating system works only for that specific operating system. But there are programs out there that will let you chose which operating system you want to use. This is done by letting the program recognize what operating systems are on the computer and load which bootstrap loader that the user wants to use to load the operating system into the RAM.

This lets the user, if one wishes to do so, have two or more operating systems on one computer. The program that I am using is the GRUB loader that is capable of loading Windows or Linux at startup of any computer. All this loader does is load the bootstrap program of any operating system that is located on the computer. In figure 3.7, you can see what the actual user can see on their computer screens when this loader is in use. [8]

Figure 3.7 Image:Bootstrap5.jpg [9]


4. Applications


A. Current Applications


In the real word versatility in business and personal use is a must. This is the same with operating systems. There are many strengths and weaknesses depending on the operating systems you use. For example Windows is widely used and most ‘user friendly’ operating system (at least that is what it is most popular for) but has had problems in the past with security, bad code, and among other things being a slow operating system. Macintosh has traditionally been a faster operating system with few problems but does not have as much customization that windows and Linux can provide. Linux is an operating system that comes in all shapes, sizes, and among all else can be used with almost every computer system if you have the right kind of hardware that can support it. It is also the hardest operating system to understand and use on an everyday basis with basic programs (even though improvements have been made, it is still a long ways away from becoming and ‘everyone’ operating system). There are other operating systems but they are not near as used as these three operating systems so they will not be covered (partially because there are so many of them). [10]


The capability of loading multiple operating systems though a computer is enticing to say the least because with multiple operating systems, the program that is better suited to whatever you are currently working on can be used anytime without the need for multiple computers with single operating systems. With the GRUB loader (and other loaders out there can do the same), an individual could load as many operating systems as they what and then use the computer more effectively. There is even a way now to have Windows, Macintosh, and Linux on an Intel based computer (though the legality is questionable so is not recommended). The most common thing to use the GRUB loader is on a dual based system with just Macintosh or Windows on a computer with Linux on the side in case the main operating system crashes and data needs to be backed up (Linux is great at backing up files).


B. Direction of the bootstrap files


Some sort of bootstrap file is most likely going to be used with computers for a very long time. The simple fact is that bootstrap files are necessary for the operating of computers for as long as they have operating systems that work off of RAM and some sort of memory devise. There is also a new technology that has recently been developed that has created live CD’s or operating systems that can be loaded at system startup by a CD/DVD drive or USB memory stick (sometimes called travel drives). Windows and Linux have already have versions of this in the form of a small version of windows XP and DSL (Damn Small Linux). [11] These versions are small right now but have the capability to become a great asset in the future. Already, a person can configure the hardware bootstrap program to load the Live CD version of their custom portable operating system and use the hardware that is provides the medium to do work and save the information on their rewritable CD/DVD or USB memory stick.


5. Limitations


Unfortunately with allot of this software, an extensive knowledge of what you are trying to do is needed. When you partion your hard drive, most programs that do this simply delete everything in the previous partition therefore destroying the operating system you were working with. You have to be very careful about partitioning the hard drive (or whatever memory devise you want to use). Also the GRUB loader works with most computers but not all. If you have one of the rare computer systems that cannot work with GRUB or a GRUB related bootstrap loader, then you’re stuck with a computer that cannot load its operating system. There is also the limitation that every time you partion the hard rive, you take up space that will be used for the operating system. This might cause the operating systems to load and execute slower and not have as much space for extras such as music, videos, and programs like Internet Explorer or such. Another limitation is that some operating systems come with special conditions. Some versions of windows comes with a special partion in the hard drive that makes it possible to load a backup of windows if anything goes wrong. This creates problems with Windows if you were to accidentally install Linux onto this partition. It is very easy for the user to delete something unintentionally by partitioning the hard drive. [12]


6. Conclusion


The bootstrap process of loading the operating system though the RAM has many applications in the real world. It can configure and set up hardware on the computer as well as load multiple operating systems onto one computer. This is a great capacity for versatility but also can be a curse if something goes wrong. The GRUB program is a way to make multiple operating systems work on one computer and has great potential as a bootstrap loader. With Live CD versions of operating systems now in working condition, the user has even more versatility in operating a computer with their own specific operating system. Unfortunately, the partitioning of the hard drive creates problems for both computer and user because the computer might crash if certain files are removed. A person with some sort of experience in loading operating systems would probably be needed in this whole process otherwise the main operating system on a computer could be erased and replaced with a lesser operating system.


7. References


1. boot*strap/Dictionary, http://www.answers.com/topic/bootstrap, (visited November 15, 2006).

2. Bootstrap Institute: About BI, http://www.bootstrap.org/, (visited November 16, 2006).

3. Dell, http://www.dell.com/, (visited November 16, 2006).

4. Partition Commander Professional 10 Key Features, http://www.v-com.com/product/Partition_Commander_Features.html, (visited November 16, 2006).

5. Windows Reinstall, http://www.windowsreinstall.com/windows2000/Repair/index.htm, (visited November 19, 2006)

6. What is RAM? A Word definition, http://www.webopedia.com/TERM/R/RAM.html, (visited November 19, 2006)

7. Patrick Schmid, Achim Roos, Pushing Your DDR2 RAM To The Max, http://www.tomshardware.com/2005/07/18/pushing_your_ddr2_ram_to_the_max/, (visited November 19, 2006).

8. The Grub Legacy, http://www.gnu.org/software/grub/grub-legacy.en.html, (visited November 19, 2006).

9. Pro-Linux, http://www.pro-linux.de/berichte/jpgs/opensolaris/grub.jpg, (visited November 19, 2006).

10. The differences between Operating Systems (OS), http://www.techeez.com/novice_info/differences_between_operating_sy.htm, (visited November 20, 2006).

11. Damn Small Linux, http://www.damnsmalllinux.org/, (visited November 20, 2006).

12. Tieman Brian, Advanced Installation Tasks in FreeBSD 6, http://www.informit.com/articles/article.asp?p=597694&seqNum=4&rl=1, (visited November 20, 2006).

13. Matthew Vea, "x86 BootStrap Programming Tutorial in Assembly Language," http://www.vnutz.com/content/program_a_bootstrap_loader, (visited December 1, 2006).

Personal tools