man > boot(7)

boot(7)                           Miscellaneous Information Manual                           boot(7)

NAME
       boot - System bootup process based on UNIX System V Release 4

DESCRIPTION
       The  bootup  process (or "boot sequence") varies in details among systems, but can be roughly
       divided into phases controlled by the following components:

       (1)  hardware

       (2)  operating system (OS) loader

       (3)  kernel

       (4)  root user-space process (init and inittab)

       (5)  boot scripts

       Each of these is described below in more detail.

   Hardware
       After power-on or hard reset, control is given to a program stored in read-only memory  (nor‐
       mally  PROM);  for  historical reasons involving the personal computer, this program is often
       called "the BIOS".

       This program normally performs a basic self-test of the machine and accesses nonvolatile mem‐
       ory to read further parameters.  This memory in the PC is battery-backed CMOS memory, so most
       people refer to it as "the CMOS"; outside of the PC world, it is usually called  "the  NVRAM"
       (nonvolatile RAM).

       The  parameters stored in the NVRAM vary among systems, but as a minimum, they should specify
       which device can supply an OS loader, or at least which devices may be probed for one; such a
       device is known as "the boot device".  The hardware boot stage loads the  OS  loader  from  a
       fixed position on the boot device, and then transfers control to it.

       Note:  The  device  from  which the OS loader is read may be attached via a network, in which
              case the details of booting are further specified by protocols  such  as  DHCP,  TFTP,
              PXE, Etherboot, etc.

   OS loader
       The  main  job  of the OS loader is to locate the kernel on some device, load it, and run it.
       Most OS loaders allow interactive use, in order to enable  specification  of  an  alternative
       kernel  (maybe a backup in case the one last compiled isn't functioning) and to pass optional
       parameters to the kernel.

       In a traditional PC, the OS loader is located in the initial 512-byte block of the  boot  de‐
       vice; this block is known as "the MBR" (Master Boot Record).

       In  most  systems,  the OS loader is very limited due to various constraints.  Even on non-PC
       systems, there are some limitations on the size and complexity of this loader, but  the  size
       limitation  of the PC MBR (512 bytes, including the partition table) makes it almost impossi‐
       ble to squeeze much functionality into it.

       Therefore, most systems split the role of loading the OS between a primary OS  loader  and  a
       secondary  OS loader; this secondary OS loader may be located within a larger portion of per‐
       sistent storage, such as a disk partition.

       In Linux, the OS loader is often grub(8) (an alternative is lilo(8)).

   Kernel
       When the kernel is loaded, it initializes various components of the  computer  and  operating
       system;  each  portion of software responsible for such a task is usually consider "a driver"
       for the applicable component.  The kernel starts the virtual memory swapper (it is  a  kernel
       process,  called  "kswapd"  in a modern Linux kernel), and mounts some filesystem at the root
       path, /.

       Some of the parameters that may be passed to the kernel relate to these activities (for exam‐
       ple, the default root filesystem can be overridden); for further information on Linux  kernel
       parameters, read bootparam(7).

       Only then does the kernel create the initial userland process, which is given the number 1 as
       its  PID (process ID).  Traditionally, this process executes the program /sbin/init, to which
       are passed the parameters that haven't already been handled by the kernel.

   Root user-space process
       Note:  The following description applies to an OS based on UNIX System V Release 4.  However,
              a number of widely used systems have adopted a related but fundamentally different ap‐
              proach known as systemd(1), for which the bootup process is detailed in its associated
              bootup(7).

       When /sbin/init starts, it reads /etc/inittab for further instructions.   This  file  defines
       what should be run when the /sbin/init program is instructed to enter a particular run level,
       giving  the  administrator  an  easy way to establish an environment for some usage; each run
       level is associated with a set of services (for example, run level S is single-user mode, and
       run level 2 entails running most network services).

       The administrator may change the current run level via init(1), and  query  the  current  run
       level via runlevel(8).

       However,  since  it  is  not  convenient  to manage individual services by editing this file,
       /etc/inittab only bootstraps a set of scripts that actually start/stop  the  individual  ser‐
       vices.

   Boot scripts
       Note:  The following description applies to an OS based on UNIX System V Release 4.  However,
              a  number  of  widely used systems (Slackware Linux, FreeBSD, OpenBSD) have a somewhat
              different scheme for boot scripts.

       For each managed service (mail, nfs server, cron, etc.), there is a single startup script lo‐
       cated in a specific directory (/etc/init.d in most versions of Linux).  Each of these scripts
       accepts as a single argument the word "start" (causing it to start the service) or  the  word
       "stop"  (causing  it  to  stop  the service).  The script may optionally accept other "conve‐
       nience" parameters (e.g., "restart" to stop and then start, "status" to display  the  service
       status, etc.).  Running the script without parameters displays the possible arguments.

   Sequencing directories
       To make specific scripts start/stop at specific run levels and in a specific order, there are
       sequencing directories, normally of the form  /etc/rc[0-6S].d.  In each of these directories,
       there are links (usually symbolic) to the scripts in the /etc/init.d directory.

       A  primary script (usually /etc/rc) is called from inittab(5); this primary script calls each
       service's script via a link in the relevant sequencing directory.  Each link whose  name  be‐
       gins  with 'S' is called with the argument "start" (thereby starting the service).  Each link
       whose name begins with 'K' is called with the argument "stop" (thereby stopping the service).

       To define the starting or stopping order within the same run level, the name of a  link  con‐
       tains  an  order-number.  Also, for clarity, the name of a link usually ends with the name of
       the service to which it refers.  For example,  the  link  /etc/rc2.d/S80sendmail  starts  the
       sendmail(8)  service  on run level 2.  This happens after /etc/rc2.d/S12syslog is run but be‐
       fore /etc/rc2.d/S90xfs is run.

       To manage these links is to manage the boot order and run levels; under many  systems,  there
       are tools to help with this task (e.g., chkconfig(8)).

   Boot configuration
       A  program that provides a service is often called a "daemon".  Usually, a daemon may receive
       various command-line options and parameters.  To allow a system administrator to change these
       inputs without editing an entire boot script, some separate configuration file is  used,  and
       is  located in a specific directory where an associated boot script may find it (/etc/syscon‐
       fig on older Red Hat systems).

       In older UNIX systems, such a file contained the actual command line options  for  a  daemon,
       but  in  modern  Linux systems (and also in HP-UX), it just contains shell variables.  A boot
       script in /etc/init.d reads and includes its configuration file (that is,  it  "sources"  its
       configuration file) and then uses the variable values.

FILES
       /etc/init.d/, /etc/rc[S0-6].d/, /etc/sysconfig/

SEE ALSO
       init(1), systemd(1), inittab(5), bootparam(7), bootup(7), runlevel(8), shutdown(8)

Linux man-pages 6.7                          2023-10-31                                      boot(7)
boot(7)
NAME DESCRIPTION
Hardware OS loader Kernel Root user-space process Boot scripts Sequencing directories Boot configuration
FILES SEE ALSO

Generated by phpman v4.10.0-7-g98e9fd5 · Markdown · JSON · MCP Author: Che Dong Under GNU General Public License
2026-09-05 04:28 @216.73.216.4
CrawledBy Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)
Valid XHTML 1.0 Transitional!Valid CSS!

^_top_^