0% found this document useful (0 votes)
149 views13 pages

System Initialization & Shutdown

System Initialization & Shutdown
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
149 views13 pages

System Initialization & Shutdown

System Initialization & Shutdown
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 13

System Initialization &

Shutdown
of Linux

Version 0.1 ● 10th May 2014

© 2014 Faisal Khan - www.FaysalKhan.org

licensed under the terms of the GNU Free Documentation License Version 1.3 or later
System Initialization & Shutdown

of Linux

VERSION: 0.1 REVISION DATE: 10h May 2014


www.FaysalKhan.Org
Table Of Contents
Overview.................................................................................................................................. 1

The boot process...................................................................................................................... 2

GRUB features......................................................................................................................... 3

Init............................................................................................................................................. 4

Init run levels............................................................................................................................ 7

Tools......................................................................................................................................... 9

Shutdown................................................................................................................................ 10

System Initialization & Shutdown i


www.FaysalKhan.Org

Overview
One of the most powerful aspects of Linux concerns its open method of starting and stopping the
operating system, where it loads specified programs using their particular configurations, permits
you to change those configurations to control the boot process, and shuts down in a graceful and
organized way.

Beyond the question of controlling the boot or shutdown process, the open nature of Linux makes
it much easier to determine the exact source of most problems associated with starting up or
shutting down your system. A basic understanding of this process is quite beneficial to everybody
who uses a Linux system.

A lot of Linux systems use lilo, the LInux LOader for booting operating systems. We will only
discuss GRUB, however, which is easier to use and more flexible. Should you need information
about lilo, refer to the man pages and HOWTOs. Both systems support dual boot installations, we
refer to the HOWTOs on this subject for practical examples and background information.

System Initialization & Shutdown 1


www.FaysalKhan.Org

The boot process


When an x86 computer is booted, the processor looks at the end of the system memory for the
BIOS (Basic Input/Output System) and runs it. The BIOS program is written into permanent read-
only memory and is always available for use. The BIOS provides the lowest level interface to
peripheral devices and controls the first step of the boot process.

The BIOS tests the system, looks for and checks peripherals, and then looks for a drive to use to
boot the system. Usually it checks the floppy drive (or CD-ROM drive on many newer systems)
for bootable media, if present, and then it looks to the hard drive. The order of the drives used for
booting is usually controlled by a particular BIOS setting on the system. Once Linux is installed on
the hard drive of a system, the BIOS looks for a Master Boot Record (MBR) starting at the first
sector on the first hard drive, loads its contents into memory, then passes control to it.

This MBR contains instructions on how to load the GRUB (or LILO) boot-loader, using a pre-
selected operating system. The MBR then loads the boot-loader, which takes over the process (if
the boot-loader is installed in the MBR). In the default Red Hat Linux configuration, GRUB uses
the settings in the MBR to display boot options in a menu. Once GRUB has received the correct
instructions for the operating system to start, either from its command line or configuration file, it
finds the necessary boot file and hands off control of the machine to that operating system.

System Initialization & Shutdown 2


www.FaysalKhan.Org

GRUB features
This boot method is called direct loading because instructions are used to directly load the
operating system, with no intermediary code between the boot-loaders and the operating
system's main files (such as the kernel). The boot process used by other operating systems may
differ slightly from the above, however. For example, Microsoft's DOS and Windows operating
systems completely overwrite anything on the MBR when they are installed without incorporating
any of the current MBR's configuration. This destroys any other information stored in the MBR by
other operating systems, such as Linux. The Microsoft operating systems, as well as various
other proprietary operating systems, are loaded using a chain loading boot method. With this
method, the MBR points to the first sector of the partition holding the operating system, where it
finds the special files necessary to actually boot that operating system.

GRUB supports both boot methods, allowing you to use it with almost any operating system, most
popular file systems, and almost any hard disk your BIOS can recognize.

GRUB contains a number of other features; the most important include:

GRUB provides a true command-based, pre-OS environment on x86 machines to allow maximum
flexibility in loading operating systems with certain options or gathering information about the
system.

GRUB supports Logical Block Addressing (LBA) mode, needed to access many IDE and all SCSI
hard disks. Before LBA, hard drives could encounter a 1024-cylinder limit, where the BIOS could
not find a file after that point.

GRUB's configuration file is read from the disk every time the system boots, preventing you from
having to write over the MBR every time you change the boot options.

A full description of GRUB may be found by issuing the info grub command or at the GRUB site.
The Linux Documentation Project has a Multiboot with GRUB Mini-HOWTO.

System Initialization & Shutdown 3


www.FaysalKhan.Org

Init
The kernel, once it is loaded, finds init in sbin and executes it.

When init starts, it becomes the parent or grandparent of all of the processes that start up
automatically on your Linux system. The first thing init does, is reading its initialization file,
/etc/inittab. This instructs init to read an initial configuration script for the environment, which sets
the path, starts swapping, checks the file systems, and so on. Basically, this step takes care of
everything that your system needs to have done at system initialization: setting the clock,
initializing serial ports and so forth.

Then init continues to read the /etc/inittab file, which describes how the system should be set up
in each run level and sets the default run level. A run level is a configuration of processes. All
UNIX-like systems can be run in different process configurations, such as the single user mode,
which is referred to as run level 1 or run level S (or s). In this mode, only the system administrator
can connect to the system. It is used to perform maintenance tasks without risks of damaging the
system or user data. Naturally, in this configuration we don't need to offer user services, so they
will all be disabled. Another run level is the reboot run level, or run level 6, which shuts down all
running services according to the appropriate procedures and then restarts the system.

Use the who to check what your current run level is:

faisal@faisal-system:~$ who -r

run-level 2 2006-10-17 23:22 last=S

After having determined the default run level for your system, init starts all of the background
processes necessary for the system to run by looking in the appropriate rc directory for that run
level. init runs each of the kill scripts (their file names start with a K) with a stop parameter. It then
runs all of the start scripts (their file names start with an S) in the appropriate run level directory
so that all services and applications are started correctly. In fact, you can execute these same
scripts manually after the system is finished booting with a command like /etc/init.d/httpd stop or
service httpd stop logged in as root, in this case stopping the web server.

Note: Note that on system startup, the scripts in rc2.d and rc3.d are usually executed. In
that case, no services are stopped (at least not permanently). There are only services that
are started.

None of the scripts that actually start and stop the services are located in /etc/rc<x>.d. Rather, all
of the files in /etc/rc<x>.d are symbolic links that point to the actual scripts located in /etc/init.d. A
symbolic link is nothing more than a file that points to another file, and is used in this case
because it can be created and deleted without affecting the actual scripts that kill or start the
services. The symbolic links to the various scripts are numbered in a particular order so that they
start in that order. You can change the order in which the services start up or are killed by

System Initialization & Shutdown 4


www.FaysalKhan.Org
changing the name of the symbolic link that refers to the script that actually controls the service.
You can use the same number multiple times if you want a particular service started or stopped
right before or after another service, as in the example below, listing the content of /etc/rc5.d,
where crond and xfs are both started from a linkname starting with "S90". In this case, the scripts
are started in alphabetical order.

[faisal@faisal-system /etc/rc5.d] ls

K15httpd@ K45named@ S08ipchains@ S25netfs@ S85gpm@

K16rarpd@ K46radvd@ S08iptables@ S26apmd@ S90crond@

K20nfs@ K61ldap@ S09isdn@ S28autofs@ S90xfs@

K20rstatd@ K65identd@ S10network@ S30nscd@ S95anacron@

K20rusersd@ K74ntpd@ S12syslog@ S55sshd@ S95atd@

K20rwalld@ K74ypserv@ S13portmap@ S56rawdevices@ S97rhnsd@

K20rwhod@ K74ypxfrd@ S14nfslock@ S56xinetd@ S99local@

K25squid@ K89bcm5820@ S17keytable@ S60lpd@

K34yppasswdd@ S05kudzu@ S20random@ S80sendmail@

After init has progressed through the run levels to get to the default run level, the /etc/inittab script
forks a getty process for each virtual console (login prompt in text mode). getty opens tty lines,
sets their modes, prints the login prompt, gets the user's name, and then initiates a login process
for that user. This allows users to authenticate themselves to the system and use it. By default,
most systems offer 6 virtual consoles, but as you can see from the inittab file, this is configurable.

/etc/inittab can also tell init how it should handle a user pressing Ctrl+Alt+Delete at the console.
As the system should be properly shut down and restarted rather than immediately power-cycled,
init is told to execute the command /sbin/shutdown -t3 -r now, for instance, when a user hits those
keys. In addition, /etc/inittab states what init should do in case of power failures, if your system
has a UPS unit attached to it.

On most RPM-based systems the graphical login screen is started in run level 5, where
/etc/inittab runs a script called /etc/X11/prefdm. The prefdm script runs the preferred X display
manager, based on the contents of the /etc/sysconfig/desktop directory. This is typically gdm if
you run GNOME or kdm if you run KDE, but they can be mixed, and there's also the xdm that
comes with a standard X installation.

But there are other possibilities as well. On Debian, for instance, there is an initscript for each of
the display managers, and the content of the /etc/X11/default-display-manager is used to
determine which one to start. Ultimately, your system documentation will explain the details
about the higher level aspects of init.

System Initialization & Shutdown 5


www.FaysalKhan.Org
The /etc/default and/or /etc/sysconfig directories contain entries for a range of functions and
services, these are all read at boot time. The location of the directory containing system defaults
might be somewhat different depending on your Linux distribution.

Besides the graphical user environment, a lot of other services may be started as well. But if all
goes well, you should be looking at a login prompt or login screen when the boot process has
finished.

Note: We explained how SysV init works on x86 based machines. Startup procedures may
vary on other architectures and distributions. Other systems may use the BSD-style init,
where startup files are not split up into multiple /etc/rc<LEVEL>.d directories. It might also
be possible that your system uses /etc/rc.d/init.d instead of /etc/init.d.

System Initialization & Shutdown 6


www.FaysalKhan.Org

Init run levels


The idea behind operating different services at different run levels essentially revolves around the
fact that different systems can be used in different ways. Some services cannot be used until the
system is in a particular state, or mode, such as being ready for more than one user or having
networking available.

There are times in which you may want to operate the system in a lower mode. Examples are
fixing disk corruption problems in run level 1 so no other users can possibly be on the system, or
leaving a server in run level 3 without an X session running. In these cases, running services that
depend upon a higher system mode to function does not make sense because they will not work
correctly anyway. By already having each service assigned to start when its particular run level is
reached, you ensure an orderly start up process, and you can quickly change the mode of the
machine without worrying about which services to manually start or stop.

Available run levels are generally described in /etc/inittab, which is partially shown below:

# inittab This file describes how the INIT process should set up

# the system in a certain run-level.

# Default run level. The run levels are:

# 0 - halt (Do NOT set initdefault to this)

# 1 - Single user mode

# 2 - Multiuser, without NFS

# (The same as 3, if you do not have networking)

# 3 - Full multiuser mode

# 4 - unused

# 5 - X11

# 6 - reboot (Do NOT set initdefault to this)

id:5:initdefault:

<--cut-->

System Initialization & Shutdown 7


www.FaysalKhan.Org
Feel free to configure unused run levels (commonly run level 4) as you see fit. Many users
configure those run levels in a way that makes the most sense for them while leaving the
standard run levels as they are by default. This allows them to quickly move in and out of their
custom configuration without disturbing the normal set of features at the standard run levels.

If your machine gets into a state where it will not boot due to a bad /etc/inittab or will not let you
log in because you have a corrupted /etc/passwd file (or if you have simply forgotten your
password), boot into single-user mode.

Note: When you are working in text mode because you didn't get presented a graphical
login screen on the console of your machine, you can normally switch to console 7 or up
to have a graphical login. If this is not the case, check the current run level using the
command who -r. If it is set to something else than the original default from /etc/inittab,
chances are that the system does not start up in graphical mode by default. Contact your
system administrator or read man init in that case. Note that switching run levels is done
preferably using the telinit command; switching from a text to a graphical console or vice
versa does not involve a run level switch.

The discussion of run levels, scripts and configurations in this guide tries to be as general as
possible. Lots of variations exist. For instance, Gentoo Linux stores scripts in /etc/run levels.
Other systems might first run through (a) lower run level(s) and execute all the scripts in there
before arriving at the final run level and executing those scripts. Refer to your system
documentation for more information. You might also read through the scripts that are refered to in
/etc/inittab to get a better comprehension of what happens on your system.

System Initialization & Shutdown 8


www.FaysalKhan.Org

Tools
The chkconfig or update-rc.d utilities, when installed on your system, provide a simple command-
line tool for maintaining the /etc/init.d directory hierarchy. These relieve system administrators
from having to directly manipulate the numerous symbolic links in the directories under
/etc/rc[x].d.

In addition, some systems offer the ntsysv tool, which provides a text-based interface; you may
find this easier to use than chkconfig's command-line interface. On SuSE Linux, you will find the
yast and insserv tools. For Mandrake easy configuration, you may want to try DrakConf, which
allows among other features switching between run levels 3 and 5. In Mandriva this became the
Mandriva Linux Control Center.

Most distributions provide a graphical user interface for configuring processes, check with your
system documentation.

All of these utilities must be run as root. The system administrator may also manually create the
appropriate links in each run level directory in order to start or stop a service in a certain run level.

System Initialization & Shutdown 9


www.FaysalKhan.Org

Shutdown
UNIX was not made to be shut down, but if you really must, use the shutdown command. After
completing the shutdown procedure, the -h option will halt the system, while -r will reboot it.

The reboot and halt commands are now able to invoke shutdown if run when the system is in run
levels 1-5, and thus ensure proper shutdown of the system,but it is a bad habit to get into, as not
all UNIX/Linux versions have this feature.

If your computer does not power itself down, you should not turn off the computer until you see a
message indicating that the system is halted or finished shutting down, in order to give the
system the time to unmount all partitions. Being impatient may cause data loss.

System Initialization & Shutdown 10

You might also like