In computing, booting is a bootstrapping process that starts operating systems when the user turns on a computer system. A boot sequence is the set of operations the computer performs when it is switched on that load an operating system.
* 1 Boot loader
o 1.1 Second-stage boot loader
* 2 BIOS boot devices
* 3 Boot sequence on standard PC (IBM-PC compatible)
* 4 Other kinds of boot sequence
* 5 Hard reboot
* 6 Soft reboot
* 7 Random reboot
Boot loader
Most computer systems can only execute code found in the memory (ROM or RAM). Modern operating systems are stored on hard disks, or occasionally on LiveCDs, USB flash drives, or other non-volatile storage devices. When a computer is first powered on, it doesn't have an operating system in memory. The computer's hardware alone cannot perform complex actions such as loading a program from disk, so an apparent paradox exists: to load the operating system into memory, one appears to need to have an operating system already loaded.
The solution is to use a special small program, called a bootstrap loader or boot loader. This program's only job is to load other software for the operating system to start. Often, multiple-stage boot loaders are used, in which several small programs summon each other, until the last of them loads the operating system. The name bootstrap loader comes from the image of one pulling oneself up by one's bootstraps (see bootstrapping).
Early programmable computers had a row of toggle switches on the front panel to allow the operator to manually enter the binary boot instructions into memory before transferring control to the CPU. The boot loader would then read the operating system in from an outside storage medium such as paper tape, punched card, or an old fixed head disk drive.
Pseudo-assembly code for the bootloader might be as simple as the following eight instructions:
0: set the P register to 8
1: check paper tape reader ready
2: if not ready, jump to 1
3: read a byte from paper tape reader to accumulator
4: if end of tape, jump to 8
5: store accumulator to address in P register
6: increment the P register
7: jump to 1
A related example is based on a loader for a 1970's Nicolet Instrument Corporation minicomputer. Note that the bytes of the second-stage loader are read from paper tape in reverse order.
0: set the P register to 106
1: check paper tape reader ready
2: if not ready, jump to 1
3: read a byte from paper tape reader to accumulator
4: store accumulator to address in P register
5: decrement the P register
6: jump to 1
The length of the second stage loader is such that the final byte overwrites location 6. After the instruction in location 5 executes, location 6 starts the second stage loader executing. The second stage loader then waits for the much longer tape containing the operating system to be placed in the tape reader. The difference between the boot loader and second stage loader is the addition of checking code to trap paper tape read errors, a frequent occurrence with the hardware of the time, which in this case was an ASR-33 teletype.
In modern computers the bootstrapping process begins with the CPU executing software contained in ROM (for example, the BIOS of an IBM PC) at a predefined address (the CPU is designed to execute this software after reset without outside help). This software contains rudimentary functionality to search for devices eligible to participate in booting, and load a small program from a special section (most commonly the boot sector) of the most promising device. It is usually possible to configure the BIOS so that only a certain device can be booted from and/or to give priority to some devices over others (a CD or DVD drive is usually given priority over a hard disk, for instance).
Boot loaders may face peculiar constraints, especially in size; for instance, on the IBM PC and compatibles, the first stage of boot loaders must fit into the first 446 bytes of the Master Boot Record, in order to leave room for the 64-byte partition table and the 2-byte 0xAA55 'signature', which the BIOS requires for a proper boot loader.
Some operating systems, most notably pre-1995 Macintosh systems from Apple Computer, are so closely interwoven with their hardware that it is impossible to natively boot an operating system other than the standard one. A common solution in such situations is to design a bootloader that works as a program belonging to the standard OS that hijacks the system and loads the alternative OS. This technique was used by Apple for its A/UX Unix implementation and copied by various freeware operating systems and BeOS Personal Edition 5.
Second-stage boot loader
NTLDR – A second stage boot loader
NTLDR – A second stage boot loader
The small program is most often not itself an operating system, but only a second-stage boot loader, such as NTLDR, LILO or GRUB. It will then be able to load the operating system properly, and finally transfer execution to it. The system will initialize itself, and may load device drivers and other programs that are needed for the normal operation of the OS.
The boot process is considered complete when the computer is ready to interact with the user or the operating system is capable of running ordinary applications. Typical modern PCs boot in about a minute (of which about 15 seconds are taken by a Power-on self test (POST) and the preliminary boot loaders, and the rest by loading the operating system), while large servers may take several minutes to boot and to start all services. To ensure high availability, they bring up some services before others.
Most embedded systems must boot immediately. For example, waiting a minute for a digital television to come up is not acceptable. Therefore they have their complete operating system in ROM or flash memory, so it can be executed directly.
BIOS boot devices
A boot device is any device that must be initialized prior to loading the operating system. This includes the primary input device (keyboard), the primary output device (display), and the initial program load device (floppy drive, hard drive, CD-ROM, USB flash drive, etc.).
In a modern BIOS, the user can select one of several interfaces from which to boot. These include: hard disk, floppy, SCSI, CDROM, Zip, LS-120, a network interface card using PXE, or USB (USB-FDD, USB-ZIP, USB-CDROM, USB-HDD).
For example, one can install Microsoft Windows on the first hard disk and Linux on the second. By changing the BIOS boot device, the user can select the operating system to load.
Boot sequence on standard PC (IBM-PC compatible)
A PC going through its boot sequence
A PC going through its boot sequence
Upon starting, a personal computer's x86 CPU runs the instruction located at the memory location F000:FFF0 (on 286s and 386SXs, the base of the code segment is actually 0xFF0000 and on 386s it is 0xFFFF0000) of the BIOS. This memory location is close to the end of system memory. It contains a jump instruction that transfers execution to the location of the BIOS start-up program. This program runs a Power-on self test (POST) to check that devices the computer will rely on are functioning; it also initializes these devices. Then, the BIOS goes through a preconfigured list of devices until it finds one that is bootable. On the original IBM PC, if it finds no such device, control is transferred to IBM Cassette BASIC. On more modern machines with no built-in operating system, an error message is generated and the boot process stops. If the BIOS finds a bootable device, it loads and executes its boot sector. In the case of a hard drive, this is referred to as the master boot record (MBR) and is often not operating system specific. Usually, the MBR code checks the partition table for an active partition. If one is found, the MBR code loads that partition's boot sector and executes it. The boot sector is often operating system specific, however in most operating systems its main function is to load and execute a kernel, which continues startup. If there is no active partition or the active partition's boot sector is invalid, the MBR may load a secondary boot loader and pass control to it and this secondary boot loader will select a partition (often via user input) and load its boot sector, which usually loads the corresponding operating system Kernel.
Other kinds of boot sequence
Some other processors have other kinds of boot modes; most digital signal processors have the following boot modes:
* Serial mode boot
* Parallel mode boot
* HPI boot
Hard reboot
A hard reboot (also known as a cold reboot) is when power to a computer is cycled (turned off and then on) or a special reset signal to the processor is triggered (from a front panel switch of some sort). This restarts the computer without first performing any shut-down procedure. (With many operating systems, especially those using disk caches, after a hard reboot the filesystem may be in an "unclean" state, and an automatic scan of on-disk filesystem structures will be done before normal operation can begin.) It may be caused by power failure, be done by accident, or be done deliberately as a last resort to forcibly retrieve the system from a critical error or virus-inflicted DoS attack.
[edit] Soft reboot
A soft reboot (also known as a warm reboot) is restarting a computer under software control, without removing power or (directly) triggering a reset line. It usually, though not always, refers to an orderly shutdown and restarting of the machine. This command is also available on certain game consoles (such as PlayStation), often through the START and SELECT button combination. On certain PlayStation 2 games, you may press START, SELECT, R1, R2, L1, L2 simultaniously to initiate a soft reboot.
The Control-Alt-Delete key combination on the original IBM PC was designed to allow a soft reboot for a quicker and more convenient (and, some argue, less stressful on system components) restart than powering the computer completely down then back up.[citation needed]
On the Foxtel Digital and Foxtel iQ, a soft reboot can be performed by pressing either the Back and Select buttons or Standby and Foxtel buttons, dependant on your box type.
The Linux kernel has optional support for the (experimental) kexec system call, which shuts down the currently running kernel and executes another one. The entire process is done independent of the system firmware. Note that the kernel being executed does not have to be a Linux kernel.
Random reboot
Random reboot is a non-technical term referring to an unintended (and often undesired) reboot for which the cause is not immediately evident to the user. Such reboots may occur due to a multitude of software and hardware problems, such as triple faults.
As Windows XP has an option to skip its Blue Screen of Death and immediately restart the computer in the event of a fatal fault, users can be mistaken in thinking a Windows XP computer suffers from random rebooting.